* feat: add 6 PocketBase skills (1,983 lines)
Add a comprehensive set of Claude Code Skills for PocketBase covering:
- pb-collections: schema design, field types, relations
- pb-api-rules: access control, filter expressions, rule debugging
- pb-hooks: server-side JS (goja ES5), custom routes, event hooks
- pb-migrations: schema versioning, automigrate, snapshot import
- pb-sdk: JS SDK, auth, realtime SSE, file uploads, batch ops
- pb-deploy: Docker, systemd, nginx/Caddy, TLS, S3, backups
Written for PocketBase v0.25+. Prevents common AI mistakes like
using ES6 in goja, confusing empty-string rules with locked rules,
wrong maxSelect semantics, and missing e.next() in Execute hooks.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
* fix: address code review findings (10 issues)
P1 fixes:
- Fix hook names: onRecordAfterCreateSuccess/Error (not ...CreateAfter...)
- Use record.hide() instead of set(undefined) in enrich hook
- Replace hardcoded superuser credentials with env var fallback
- Add checksum verification note to Docker binary download
P2 fixes:
- Clarify locked API rules: superusers can still access (not "nobody")
- Add public-access warnings to empty listRule/viewRule in migration example
- Warn that onBootstrap seed data must be idempotent
- Pin SDK CDN to versioned npm URL instead of @master
- Block /_/ dashboard path in nginx reverse proxy config
- Fix OTP/MFA config keys to lowercase (otp.*/mfa.*)
- Add after-success/error hooks to the hooks reference table
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
* fix: pin SDK CDN to pocketbase@0.36.6 (current release)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
* fix: address second round of review findings (3 issues)
- Superuser migration: throw error if env vars missing instead of fallback
to predictable defaults (P1)
- API rules table: change "nobody" to "superusers only" to match the
Critical note and actual PocketBase behavior (P2)
- Docker compose: bind port to 127.0.0.1 only so dashboard is not
publicly exposed, consistent with nginx blocking /_/ (P2)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
---------
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
Add PartnerBanner component with BrainGrid branding to index and all
type pages (agents, commands, skills, etc.). Remove BrainGrid from
featured cards section. Include logo assets.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Add robots.txt with crawl directives and AI crawler policies
- Add canonical tags to all pages via DashboardLayout
- Add meta descriptions (unique per page type)
- Add Open Graph and Twitter Card meta tags
- Add WebSite + Organization JSON-LD schema (global)
- Add SoftwareApplication JSON-LD schema (homepage)
- Optimize page titles with keywords and component counts
- Add security headers (HSTS, X-Frame-Options, CSP) to vercel.json
SEO Health Score: 22/100 → ~47/100 (estimated)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Copy blog posts, assets, CSS, and static files from docs/ to
dashboard/public/ so they are served by the Astro dashboard project.
This restores /blog/ URLs that broke after the domain migration.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
The url variable was computed correctly but never used - fetch() still
received the original relative COMPONENTS_JSON_URL, causing "Failed to
parse URL from /components.json" on server-side rendering.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Use absolute URL (https://www.aitmpl.com) for server-side fetch of components.json
- Set site config in astro.config.mjs as fallback
- Update CLAUDE.md to reflect unified single Vercel project architecture
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Set site: 'https://www.aitmpl.com' in astro.config.mjs so import.meta.env.SITE is defined
- Server-side fetch resolves relative /components.json URL using SITE, VERCEL_URL, or localhost fallback
- Fixes "fetch failed" error on component detail pages
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Migrate all API endpoints from api/ (Vercel serverless) to dashboard/src/pages/api/ (Astro routes)
- track-download-supabase, track-command-usage, track-installation-outcome, track-website-events
- collections (index, [id], items)
- health-check, claude-code-check, discord/interactions
- Add shared API libs: cors.ts, neon.ts, auth.ts, changelog-parser.ts
- Add @supabase/supabase-js, @neondatabase/serverless, discord-interactions, @clerk/backend deps
- Remove catch-all API proxy ([...path].ts) - APIs are now native Astro routes
- Serve components.json and trending-data.json from dashboard/public/
- Switch to same-origin fetching (relative URLs) for data files
- Add dashboard/vercel.json with crons and CORS headers
- Simplify CI/CD to single deploy target (dashboard project)
- Update deploy script and package.json scripts
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Add horizontal metadata cards carousel to component detail page
parsing frontmatter (skills/agents/commands), JSON (MCPs/settings/hooks)
- Cards show description, tools, model, version, author, tags, license
with orange accent border, compact design, and text truncation
- Add "Send to Repo" button (gated to admin) in My Components
with GitHub OAuth flow and PR creation
- Add "Metadata" and "Code" section titles
- Update components.json and trending data
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* feat(dashboard): organize My Components as real project structure with .claude/ tree
Replaces the flat type-grouped view in the collections sidebar with a
realistic project directory tree showing exactly how components will be
installed:
project/
├── .claude/
│ ├── agents/
│ ├── commands/
│ ├── skills/
│ ├── hooks/
│ └── settings.json
└── .mcp.json
Adds an ASCII project structure preview in the main content area so
users can visualize the full installation layout before running the
install command.
https://claude.ai/code/session_01Gh8sj2GFiXotit4qSftpid
* Update dashboard/src/components/MyComponentsView.tsx
Co-authored-by: cubic-dev-ai[bot] <191113872+cubic-dev-ai[bot]@users.noreply.github.com>
---------
Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: cubic-dev-ai[bot] <191113872+cubic-dev-ai[bot]@users.noreply.github.com>
* feat: add enterprise quality hooks and agents from pm-workspace
Add 3 quality gate hooks and 2 specialized agents contributed from
pm-workspace (https://github.com/gonzalezpazmonica/pm-workspace):
Hooks (new category: quality-gates/):
- tdd-gate: Enforces TDD — blocks editing production code without tests
- plan-gate: Warns about implementing without an approved specification
- scope-guard: Detects files modified outside the declared spec scope
Agents:
- sdd-spec-writer: Creates executable specifications for AI agents
- commit-guardian: 10-check pre-commit verification protocol
All components are generic (no Azure DevOps dependency), MIT licensed,
and follow the project's component structure conventions.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* fix: address all 12 cubic review issues on enterprise hooks and agents
Fixes applied per cubic-dev-ai review:
Hooks (JSON configs):
- Add MultiEdit matcher to tdd-gate, plan-gate (was bypassing gate)
- Use $CLAUDE_PROJECT_DIR for all hook paths (avoid CWD-dependent failures)
tdd-gate.sh:
- Narrow test file globs: use suffix-based patterns (*Test.ext, *.test.ext)
instead of overly broad *test* substring match (P1 fix)
- Improve test discovery: search nearby dirs first (same module), fallback
to project-wide with -maxdepth 6 to limit latency on large repos
plan-gate.sh:
- Remove `set -euo pipefail` that caused unintentional blocking when find
fails on non-existent dirs
- Add `|| true` to find to prevent exit-on-error
scope-guard.sh:
- Fix spec selection: use -printf '%T@ %p' sorted by mtime (not path sort)
with macOS fallback using xargs ls -t
- Broaden declared-file regex: support longer extensions and @ in paths
- Fix word-splitting: use while-read loop instead of unquoted for-in
- Fix matching: use case-based suffix match instead of substring grep
commit-guardian.md:
- CHECK 3: Fix Python build command (per-file py_compile, not bare)
- CHECK 3: Add Go and Rust build detection, add SKIP when no build system
- CHECK 10: Change from WARN to BLOCK for malformed commit messages
sdd-spec-writer.md:
- Add explicit .spec.md naming convention requirement (quality gate hooks
depend on this filename pattern for spec detection)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* fix: address cubic review round 2 — null-delimit macOS fallback, existence-only spec check
- scope-guard.sh: use -print0/xargs -0 for macOS fallback to handle
paths with spaces safely (cubic P2)
- plan-gate.sh: replace full enumeration with find -print -quit for
existence-only check, avoiding unnecessary latency in large repos
(cubic P2)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Replace iframe-based featured pages with native dashboard layout using
tabbed navigation, sidebar with metadata, and partner-specific content.
- Rewrite dashboard featured/[slug].astro from iframe embed to native
Astro page with Overview content + Website external link tab
- Expand FeaturedItem type with metadata, links, CTA, and badge data
- Add partner badge color variants (Partner/Database/Toolkit)
- Add sidebar cards: partner info, CTA button, install command, metadata, links
- Remove redundant metadata fields (Type/Category/Website already shown via dedicated fields)
- Update docs/ featured pages with component-page layout (legacy site)
- Create docs/css/featured-page.css for featured-specific styles
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
X (Twitter) data integration skill powered by the Xquik REST API,
MCP server, and HMAC webhooks. Covers tweet search, user lookup,
19 extraction tools, giveaway draws, account monitoring, trending
topics, and follow checks.
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Speed Insights for static HTML uses /_vercel/speed-insights/script.js,
not the npm module via CDN. Also wrap localStorage.setItem in try/catch
to handle QuotaExceededError when search data exceeds 5MB limit.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Add Speed Insights via CDN to docs/index.html for performance metrics.
Update deployer agent to skip pre-verified steps when caller signals
they were already completed.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Codebase explorer agent, deadline countdown statusline, change logger
hook, deadline prep skill, commit smart skill, and test detect skill.
Designed for rapid onboarding on unfamiliar codebases with time pressure.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Opens a 3-panel Ghostty layout (Claude | lazygit / yazi) when creating
worktrees in sibling directories. Handles both WorktreeCreate and
WorktreeRemove events with a single companion script.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
The installer (`installIndividualHook` in index.js) places companion
Python scripts in `.claude/hooks/`, but the hook config referenced
`.claude/scripts/`. This meant the hook would always fail with a
"file not found" error at runtime, silently rendering it non-functional.
Also removed the `2>&1` stderr redirect which masked the error by
merging stderr into stdout, causing the hook runner to report the
unhelpful "No stderr output" message instead of the actual cause.
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>