Commit Graph

1300 Commits

Author SHA1 Message Date
daniel 519fdf0950 perf: split components.json to cut dashboard browser payload
The dashboard is on Cloudflare Pages with a 24h edge cache already in
place, but every island still downloaded the full ~1.9MB index (327KB
gz) — even the sidebars/plugins/collection pages that only need per-type
counts. This splits the index into purpose-built artifacts so the
browser fetches only what each surface needs.

Generator (scripts/generate_components_json.py):
- Decouple the docs and dashboard index writes (they were a byte copy).
  docs/components.json keeps `security` (the legacy site renders it);
  the dashboard index drops both `content` and `security` (unused there)
  → ~13% smaller.
- Emit dashboard/public/counts.json (per-type counts, ~150 bytes),
  components/{type}.json (per-type slices), and search-index.json
  (flat name/description/category/type/path for global search).

Dashboard islands:
- ComponentGrid loads only the active type via fetchComponentsByType,
  re-fetching on type switch (per-type in-memory cache).
- SearchModal (Cmd+K) uses the lighter search-index.json.
- Sidebar + plugins index/detail + collection pages fetch counts.json
  instead of the full index just to read array lengths.
- data.ts gains fetchComponentsByType/fetchSearchIndex (additive);
  fetchComponents() stays for the SSR detail page and Discord bot.

Fix: SendToRepoModal read `match.content` off an index that no longer
carries content, so "Send to repo" produced empty PRs / threw "No
component content found". buildFileMap now pulls each item's content via
fetchComponentContent (the per-component files), which also removes its
full-index fetch.

_headers: cache/CORS blocks for counts.json, components/*, search-index.json.

Payload (gzip on-the-wire): sidebars/plugins/collection 327KB → ~124B;
grid default type (agents) 327KB → 145KB; Cmd+K 327KB → 260KB.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-04 16:20:24 -04:00
Claude 0f95d098dc chore: Update components and trending data
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01SAaKunY9eVb1FKxP44xLk9
2026-07-04 14:12:20 +00:00
Daniel Avila f86a7feae7 improve: enhance data-engineer agent with 2026 data stack tooling (#671)
* improve: enhance data-engineer based on automated review

- Add dbt transformation frameworks section (dbt Core, Fusion, tests, contracts, Semantic Layer)
- Add managed EL ingestion and CDC tooling (Fivetran, Airbyte, Meltano, Debezium)
- Name concrete data-quality/observability tools and data contracts (Great Expectations, Soda, Monte Carlo, Elementary, ODCS)
- Modernize orchestration section (Airflow 3.x, Dagster asset-centric model, mark Luigi as legacy)
- Add AI/LLM data pipeline expertise (vector DBs, embeddings, RAG data prep)
- Align frontmatter/structure with sibling data-scientist.md (model field, clarifying-questions preamble)
- Strengthen description for automatic delegation with PROACTIVELY phrasing and key tool names

Automated review cycle | Co-Authored-By: Claude Code <noreply@anthropic.com>

* fix: use neutral Luigi label per review feedback

cubic flagged the unsourced "maintenance mode" claim about Luigi in
the orchestration section; use a neutral label instead.

---------

Co-authored-by: Claude <noreply@anthropic.com>
2026-07-04 10:06:17 -04:00
github-actions[bot] 7dba203ec2 chore: Update components and trending data
🤖 Generated with [GitHub Actions](https://github.com/davila7/claude-code-templates/actions/runs/28694543617)
2026-07-04 04:16:35 +00:00
m1amgn d64d68be8e Add workorai skill (career) (#667)
WorkorAI talent marketplace skill covering both roles of the WorkorAI
MCP server (https://workorai.com/mcp): candidate job search (search,
job detail, apply, invitations, saved jobs) and employer hiring (job
lifecycle, tiered candidate search with white-box match explanations,
interview evidence, invitations, applicant review).

Package: SKILL.md router + 8 reference files (tool mini-schemas,
calling-order recipes, troubleshooting, auth/onboarding flow) + a
credential-store helper script for saving the MCP key locally.
Upstream source: https://github.com/work0r-ai/agent-kit (MIT).
2026-07-03 18:54:25 -04:00
Dani 7ca94b9d6f chore: Update components catalog and bump version to 1.29.3
Regenerates docs/components.json from cli-tool/components/ to pick up
the recently added HikerAPI, LamaTok, and DataLikers MCP servers.
2026-07-03 10:50:40 -04:00
Mark 317635d6e5 Add HikerAPI, LamaTok and DataLikers MCP servers to web-data (#668)
* Add HikerAPI MCP server to web-data (Instagram data API)

* Add LamaTok MCP server to web-data (TikTok data API)

* Add DataLikers hosted MCP server to web-data (Instagram & TikTok data)
2026-07-03 10:46:02 -04:00
Claude 098faedc41 chore: Update components and trending data
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Uas6yv1dL11z2imwSZgkuQ
2026-07-03 14:10:09 +00:00
Daniel Avila 87b1f27231 improve: enhance documentation-expert based on automated review (#669)
- Add tools frontmatter field (Read, Write, Edit, Glob, Grep, WebFetch, WebSearch)
- Add Diátaxis documentation framework section (tutorial/how-to/reference/explanation)
- Expand documentation checklist with measurable, specific criteria
- Add Limitations section clarifying scope boundaries vs code-reviewer,
  architect-reviewer, docusaurus-expert, documentation-engineer, api-documenter
- Add worked examples (README skeleton, API endpoint doc block)

Automated review cycle | Co-Authored-By: Claude Code <noreply@anthropic.com>

Co-authored-by: Claude <noreply@anthropic.com>
2026-07-03 10:06:20 -04:00
github-actions[bot] 942773de35 chore: Update components and trending data
🤖 Generated with [GitHub Actions](https://github.com/davila7/claude-code-templates/actions/runs/28637978370)
2026-07-03 04:19:27 +00:00
Claude a054887251 chore: Update components and trending data 2026-07-02 14:13:38 +00:00
Daniel Avila 5642a68649 improve: enhance seo-specialist based on automated review (#666)
Add missing model field, sharpen proactive-use description, add AI
search/GEO visibility guidance, update Core Web Vitals to INP-based
thresholds, and cross-reference search-ai-optimization-expert.


Claude-Session: https://claude.ai/code/session_01GoWck91RfDye9q46JZDGUk

Co-authored-by: Claude <noreply@anthropic.com>
2026-07-02 10:06:31 -04:00
github-actions[bot] 5e19240bc6 chore: Update components and trending data
🤖 Generated with [GitHub Actions](https://github.com/davila7/claude-code-templates/actions/runs/28565143097)
2026-07-02 04:27:53 +00:00
Daniel Avila da7bb1d3d9 improve: enhance prompt-engineer based on automated review (#664)
- Add missing model: sonnet frontmatter field to match sibling agents
- Rewrite system prompt to be Claude-specific: XML tag structuring,
  role framing, multishot examples, extended thinking/effort parameter,
  prompt caching, and grounded long-context answers
- Remove outdated JSON "Communication Protocol" handshake pattern in
  favor of a plain-language Requirements Gathering step
- Add explicit boundaries vs. llm-architect, model-evaluator, and
  task-decomposition-expert to reduce delegation ambiguity
- Reframe hardcoded example metrics (accuracy %, latency, cost) as
  illustrative targets to confirm with the user rather than universal
  thresholds
- Regenerate component catalog entries for prompt-engineer

Automated review cycle | Co-Authored-By: Claude Code <noreply@anthropic.com>

Co-authored-by: Claude <noreply@anthropic.com>
2026-07-01 10:06:40 -04:00
github-actions[bot] 8d5416d42c chore: Update components and trending data
🤖 Generated with [GitHub Actions](https://github.com/davila7/claude-code-templates/actions/runs/28493487750)
2026-07-01 04:31:26 +00:00
Claude 4d8ff1045b chore: Update components and trending data
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DgNXFamXBWzdEuth9DxdK4
2026-07-01 04:11:16 +00:00
Daniel Avila e6dc226ec9 improve: enhance qa-expert based on automated review (#662)
- Add required model field (sonnet) and color field to frontmatter
- Add Write/Edit tools so the agent can produce the test plans/docs it describes
- Rewrite QA excellence and excellence checklists as concrete, verifiable criteria instead of vague adjectives
- Replace hardcoded fake metrics in progress tracking and delivery notification with placeholder templates and explicit anti-fabrication guidance
- Replace speculative JSON "Communication Protocol" context-manager pattern with plain-language context-gathering guidance
- Add AI-assisted and agentic testing practices section covering risk-based test planning and delegation to test-automator/playwright-tester
- Regenerate component catalog (docs/components.json, dashboard/public/components.json)

Automated review cycle | Co-Authored-By: Claude Code <noreply@anthropic.com>

Co-authored-by: Claude <noreply@anthropic.com>
2026-07-01 00:06:16 -04:00
Claude e089e2754e chore: Update components and trending data
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GRuScoKwFa6jm4Fjag1HtS
2026-07-01 02:12:09 +00:00
Daniel Avila 5cae233e84 improve: enhance apify-integration-expert based on automated review (#660)
- Add error handling and run-status checks (try/catch, ApifyApiError, run.status) to JS/TS and Python examples
- Expand Apify MCP tools list with run management, storage access, and discovery tools (get-actor-log, get-dataset-items, get-key-value-store*, add-actor, rag-web-browser, etc.)
- Add webhook guidance (event types, `webhooks` call parameter, 200 response requirement)
- Add proxy configuration guidance (proxyConfiguration, RESIDENTIAL/DATACENTER groups, checkAccess opt-out)
- Add input schema validation step to the recommended workflow
- Add production deployment notes (scheduling, memory/timeout, idempotency) and testing/mocking examples for both languages
- Cover key-value store OUTPUT record retrieval alongside dataset pagination guidance
- Add model/color frontmatter fields and a "use proactively" trigger phrase to the description
- Fix duplicate H1 headings and refresh a stale example date

Automated review cycle | Co-Authored-By: Claude Code <noreply@anthropic.com>

Co-authored-by: Claude <noreply@anthropic.com>
2026-06-30 21:44:27 -04:00
github-actions[bot] b151af3079 chore: Update components and trending data
🤖 Generated with [GitHub Actions](https://github.com/davila7/claude-code-templates/actions/runs/28420095181)
2026-06-30 04:25:10 +00:00
github-actions[bot] 869640b48c chore: Update components and trending data
🤖 Generated with [GitHub Actions](https://github.com/davila7/claude-code-templates/actions/runs/28348623150)
2026-06-29 04:30:52 +00:00
Daniel Avila 02fce8623f chore: Regenerate components.json catalog (#654) 2026-06-28 13:57:37 -04:00
Alec Lindsay 305afc4f4f Add SEOAgent skill (business-marketing) (#653) 2026-06-28 13:43:05 -04:00
github-actions[bot] cf6c87fad4 chore: Update components and trending data
🤖 Generated with [GitHub Actions](https://github.com/davila7/claude-code-templates/actions/runs/28311287627)
2026-06-28 04:36:19 +00:00
github-actions[bot] ccd1e782f4 chore: Update components and trending data
🤖 Generated with [GitHub Actions](https://github.com/davila7/claude-code-templates/actions/runs/28278372301)
2026-06-27 04:24:39 +00:00
github-actions[bot] 45b5f9f40f chore: Update components and trending data
🤖 Generated with [GitHub Actions](https://github.com/davila7/claude-code-templates/actions/runs/28217052801)
2026-06-26 04:35:47 +00:00
github-actions[bot] 6e4178075a chore: Update components and trending data
🤖 Generated with [GitHub Actions](https://github.com/davila7/claude-code-templates/actions/runs/28146671926)
2026-06-25 04:26:46 +00:00
github-actions[bot] 170901420c chore: Update components and trending data
🤖 Generated with [GitHub Actions](https://github.com/davila7/claude-code-templates/actions/runs/28074972973)
2026-06-24 04:28:50 +00:00
github-actions[bot] 4fb4b35925 chore: Update components and trending data
🤖 Generated with [GitHub Actions](https://github.com/davila7/claude-code-templates/actions/runs/28001926751)
2026-06-23 04:27:40 +00:00
github-actions[bot] db551fc6df chore: Update components and trending data
🤖 Generated with [GitHub Actions](https://github.com/davila7/claude-code-templates/actions/runs/27929596541)
2026-06-22 04:37:56 +00:00
Daniel Avila 8f88af7b80 Remove TinyFish from featured integrations (#644)
Remove the TinyFish entry from FEATURED_ITEMS and its slug content
blocks in the featured page.


Claude-Session: https://claude.ai/code/session_019iPQRLExN1ANkmKrmnWdA5

Co-authored-by: Claude <noreply@anthropic.com>
2026-06-21 21:42:47 -04:00
Daniel Avila 7f890b1b3b feat: add Loops component type with referenced components (#643)
* feat: add Loops component type with referenced components

Introduce "loops" as a new first-class component type — autonomous
agentic workflows (goal + interval + stop condition) inspired by Loop
Engineering and the Forward Future Loop Library. A loop references other
components (agents, skills, hooks, commands) and the dashboard renders
those references as clickable cards on the loop detail page.

- Add 10 starter loops under cli-tool/components/loops/
  (engineering, evaluation, operations)
- Catalog generator: scan loops + write per-component content files
- Dashboard: new type in icons/types/data, /loops page, and a
  "Referenced Components" section on the loop detail page
- CLI: --loop flag installs the loop to .claude/loops/ and
  auto-installs its referenced components
- Docs: CLAUDE.md and cli-tool rule updated

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01T9ynMiCHt8JwdMd8KjCkES

* feat: add 8 more loops (goal/loop/schedule patterns)

Expand the loops catalog to 18, drawing ideas from community "Loop
Engineering" patterns. Adds loops across the three trigger verbs
(/goal, /loop, /schedule) and emphasizes the verifier-in-the-loop and
budget / anti-spin guardrails:

- engineering/five-minute-maintainer-loop
- engineering/build-test-fix-loop
- engineering/anti-spin-build-loop
- engineering/completion-contract-loop (goal)
- engineering/goal-refiner-loop (goal)
- engineering/adversarial-review-loop (cross-model)
- operations/overnight-pr-routine-loop (schedule)
- evaluation/human-approval-loop (human-in-the-loop)

All referenced components verified to exist; catalog regenerated.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01T9ynMiCHt8JwdMd8KjCkES

---------

Co-authored-by: Claude <noreply@anthropic.com>
2026-06-21 20:19:16 -04:00
github-actions[bot] 716b2a2151 chore: Update components and trending data
🤖 Generated with [GitHub Actions](https://github.com/davila7/claude-code-templates/actions/runs/27893475105)
2026-06-21 04:39:33 +00:00
Sergio Azócar 0d77cc7035 Add context-architecture skill (development) (#641) 2026-06-21 00:08:49 -04:00
Burak Bayır 9e753934ea Fix Xquik MCP tool count (#642) 2026-06-21 00:08:00 -04:00
github-actions[bot] f01879693f chore: Update components and trending data
🤖 Generated with [GitHub Actions](https://github.com/davila7/claude-code-templates/actions/runs/27860117458)
2026-06-20 04:31:29 +00:00
github-actions[bot] 7ba70a46fc chore: Update components and trending data
🤖 Generated with [GitHub Actions](https://github.com/davila7/claude-code-templates/actions/runs/27805397100)
2026-06-19 04:36:13 +00:00
Daniel Avila a56202407d feat(cli-rust): Rust port of the CLI core (install path) + npm distribution + CI (#640)
* feat(cli-rust): add Rust port of the CLI core with npm distribution + CI

Adds a new `cli-rust/` crate (binary `cct`) that ports the CORE of the
claude-code-templates CLI to Rust, alongside the existing Node `cli-tool/`.

Native (byte-parity with the Node CLI, verified via `diff -r`):
- Component installation: --agent/--command/--mcp/--setting/--hook/--skill
  and --workflow YAML, replicating the exact GitHub raw/API URLs, target
  paths (flat dir, category dropped), .mcp.json/settings/hooks merge
  semantics, .py/.sh sidecars, 2-space JSON + trailing newline.
- Fire-and-forget tracking (3 endpoints, detached threads, env opt-out).

Delegated to the Node CLI for now (commands/delegate.rs forwards argv via
CCT_NODE_BIN or `npx claude-code-templates@latest`): dashboards, sandbox,
global agents, stats, health-check, interactive setup.

Parity gotcha handled: serde_json Map::remove does swap-remove under
preserve_order; switched to shift_remove to match JS `delete` key order.

Distribution: npm shim (npm/cct/bin/cct.js) execs a prebuilt binary from
optionalDependencies (@davila7/cct-<os>-<arch>, esbuild pattern) so `npx`
keeps working; plus Homebrew, cargo-binstall, and install.sh from GitHub
Releases. build-rust-cli.yml builds all 5 targets on tag `cli-rust-v*`.

Tests: 23 offline unit/integration tests + 2 network integration tests
(#[ignore]). fmt + clippy clean.

CI: rust-ci.yml runs fmt + clippy + tests only when cli-rust/** changes and
posts a sticky PR comment with the results.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

* fix(cli-rust): address cubic review (config safety, opt-out, packaging, CI)

Fixes from the cubic automated review on PR #640:

- install.rs: fail safe on a corrupt/unreadable existing .mcp.json/settings
  file instead of silently overwriting it (MCP aborts; setting/hook skip the
  location), matching Node's throw-on-bad-config behavior.
- tracking.rs: honor both `=1` and `=true` as opt-out values (the README
  documents `=1`); Node only checks `=true`, so this is more privacy-safe.
- cli.rs/main.rs: implement --dry-run for the native install path (prints the
  plan, writes nothing) instead of parsing the flag and ignoring it.
- main.rs: run_prompt surfaces a non-zero `claude` exit code (a missing
  `claude` stays a soft warning since the install already succeeded).
- delegate.rs: propagate signal-based termination as 128+signal on Unix
  instead of collapsing to exit code 1.
- github.rs: warn when a skill file fails to download (mirrors Node's
  "Could not download" log) instead of skipping silently.
- npm/build-packages.mjs: accept the release `.tgz` artifacts (extract them)
  in addition to unpacked binaries, matching build-rust-cli.yml output.
- npm/cct/package.json: add top-level os/cpu so npm rejects unsupported
  platforms at install time instead of failing at runtime.
- build-rust-cli.yml: add `permissions: contents: write` (gh-release) and
  Swatinem/rust-cache for the 5-target matrix.
- tests/integration.rs: tighten the 2-space-indent assertion.

Not changed (intentional parity with the Node CLI):
- merge.rs new-hook-type copy: Node copies the incoming value as-is for a
  previously-absent hook type (no old-format normalization); kept identical.

fmt + clippy clean; 23 offline + 2 network tests pass.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

* fix(cli-rust): abort install on corrupt existing settings/hook config

Follow-up to the cubic review: a corrupt/unreadable existing settings or
hook file now fails the whole component install (returns 0) instead of
skipping just that location, matching Node — where readJson throws out of
the per-location loop and fails the component. Prevents a multi-location
run from reporting success despite a bad target location.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

* chore(cli-rust): prep v0.1.0 release via GitHub Releases + cargo-binstall

Wire up the two opt-in distribution channels that don't touch the existing
`claude-code-templates` npm package:

- Cargo.toml: fix cargo-binstall pkg-url to the `cli-rust-v<version>` tag
  (was `v<version>`), so `cargo binstall --git ...` resolves the release asset.
- install.sh: resolve the latest `cli-rust-v*` release instead of the generic
  /releases/latest, which could otherwise pick a Node-CLI `vX.Y.Z` release.
- README: install table now lists the available preview channels (curl|sh,
  cargo-binstall via --git, from source) and marks Homebrew/npm as planned;
  Release section documents the merge -> tag cli-rust-v0.1.0 -> verify flow.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-18 22:20:46 -04:00
github-actions[bot] d0197d9a49 chore: Update components and trending data
🤖 Generated with [GitHub Actions](https://github.com/davila7/claude-code-templates/actions/runs/27736702078)
2026-06-18 04:38:10 +00:00
github-actions[bot] aace1f12ff chore: Update components and trending data
🤖 Generated with [GitHub Actions](https://github.com/davila7/claude-code-templates/actions/runs/27665776460)
2026-06-17 04:35:25 +00:00
github-actions[bot] 0eaf1d75ad chore: Update components and trending data
🤖 Generated with [GitHub Actions](https://github.com/davila7/claude-code-templates/actions/runs/27594156647)
2026-06-16 04:34:56 +00:00
github-actions[bot] 6772ba97d5 chore: Update components and trending data
🤖 Generated with [GitHub Actions](https://github.com/davila7/claude-code-templates/actions/runs/27524024516)
2026-06-15 04:33:53 +00:00
github-actions[bot] 153be64421 chore: Update components and trending data
🤖 Generated with [GitHub Actions](https://github.com/davila7/claude-code-templates/actions/runs/27488265312)
2026-06-14 04:35:56 +00:00
daniel 2b19c0ab4b fix: include cli-tool/package.json in npm files field
cli-tool/src/analytics.js and others require('../package.json') which
resolves to cli-tool/package.json — must be bundled in the npm package.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
v1.29.2
2026-06-13 18:59:05 -04:00
daniel 2c86c0f128 fix: add missing @clack/prompts and gradient-string dependencies
CLI fails with MODULE_NOT_FOUND because root package.json was missing
these deps that cli-tool/src/index.js requires.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-13 18:49:08 -04:00
daniel 78834e06cf fix: add files field to exclude dashboard from npm package
Package was 413 too large due to dashboard/public/component-content/.
Only cli-tool/bin, cli-tool/src, cli-tool/components/sandbox, and README needed.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
v1.29.0
2026-06-13 18:29:01 -04:00
daniel 41f4a13bec perf(images): convertir logos a WebP + preload LCP para mejorar Performance score
- logo.png → logo.webp: 95 KB → 11 KB (−88%)
- claude-code-logo.png → claude-code-logo.webp: 26 KB → 9.6 KB (−63%)
- braingrid-logo.png → braingrid-logo.webp: 17 KB → 7.6 KB (−55%)
- <picture> con fallback PNG para compatibilidad en Sidebar, index, JobsView
- fetchpriority="high" en el logo del Sidebar (LCP element en todas las páginas)
- <link rel="preload"> del logo.webp en el <head> para adelantar la descarga
- loading="lazy" en logos below-the-fold (JobsView)

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-13 17:33:07 -04:00
daniel 75c9844626 chore: bump version to 1.29.0
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-13 17:15:08 -04:00
daniel 36386276c2 refactor(generator): escribir content files directo a dashboard/public/, sin duplicado en docs/
El commit anterior creó docs/component-content/ como directorio intermedio
y luego lo copió a dashboard/public/component-content/, resultando en 1774
archivos duplicados en el repo. Ahora el generador escribe directo al destino
final (dashboard/public/component-content/) y se agrega docs/component-content/
a .gitignore para evitar que se vuelva a trackear.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-13 17:02:21 -04:00
daniel 41cbbea00c perf(dashboard): reducir payload del home 87% y restaurar caching en Cloudflare
- Split components.json: índice sin content (1.9 MB / 249 KB br vs 15.6 MB / 4.15 MB br).
  Generador produce component-content/{type}/{slug}.json por componente y auto-copia
  a dashboard/public/. Página de detalle carga contenido on-demand via fetchComponentContent().
- Restaurar cabeceras de caché y seguridad perdidas en la migración Vercel→Cloudflare:
  _headers con Cache-Control max-age=86400 para JSONs, immutable para _astro/*,
  y HSTS, X-Frame-Options, Referrer-Policy, Permissions-Policy en todas las rutas.
- Eliminar dashboard/vercel.json (config muerta desde migración a Cloudflare Pages).
- Diferir hidratación: ClerkIsland y AuthButton client:load → client:idle;
  SaveToCollectionButton → client:visible.
- Eliminar gpt-tokenizer del bundle del navegador: reemplazado por estimación chars/4.
- Actualizar .claude/rules/dashboard.md para reflejar hosting en Cloudflare Pages.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-13 16:58:13 -04:00