@macpaw/cctk 1.0.0-beta.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/License +21 -0
- package/README.md +142 -0
- package/bin/index.js +5 -0
- package/dist/index.js +1 -0
- package/package.json +65 -0
- package/templates/claude/agents/brainstormer.md +113 -0
- package/templates/claude/agents/code-reviewer.md +157 -0
- package/templates/claude/agents/copywriter.md +110 -0
- package/templates/claude/agents/database-admin.md +92 -0
- package/templates/claude/agents/debugger.md +137 -0
- package/templates/claude/agents/docs-manager.md +208 -0
- package/templates/claude/agents/fullstack-developer.md +95 -0
- package/templates/claude/agents/git-manager.md +394 -0
- package/templates/claude/agents/journal-writer.md +113 -0
- package/templates/claude/agents/mcp-manager.md +89 -0
- package/templates/claude/agents/planner.md +108 -0
- package/templates/claude/agents/project-manager.md +125 -0
- package/templates/claude/agents/registry.json +304 -0
- package/templates/claude/agents/researcher.md +37 -0
- package/templates/claude/agents/scout-external.md +140 -0
- package/templates/claude/agents/scout.md +106 -0
- package/templates/claude/agents/tester.md +105 -0
- package/templates/claude/agents/ui-ux-designer.md +208 -0
- package/templates/claude/commands/ask.md +56 -0
- package/templates/claude/commands/bootstrap/auto/fast.md +106 -0
- package/templates/claude/commands/bootstrap/auto/parallel.md +64 -0
- package/templates/claude/commands/bootstrap/auto.md +110 -0
- package/templates/claude/commands/bootstrap.md +130 -0
- package/templates/claude/commands/brainstorm.md +75 -0
- package/templates/claude/commands/code/auto.md +198 -0
- package/templates/claude/commands/code/no-test.md +172 -0
- package/templates/claude/commands/code/parallel.md +100 -0
- package/templates/claude/commands/code.md +197 -0
- package/templates/claude/commands/coding-level.md +37 -0
- package/templates/claude/commands/content/cro.md +41 -0
- package/templates/claude/commands/content/enhance.md +12 -0
- package/templates/claude/commands/content/fast.md +11 -0
- package/templates/claude/commands/content/good.md +14 -0
- package/templates/claude/commands/cook/auto/fast.md +26 -0
- package/templates/claude/commands/cook/auto/parallel.md +49 -0
- package/templates/claude/commands/cook/auto.md +15 -0
- package/templates/claude/commands/cook.md +101 -0
- package/templates/claude/commands/debug.md +13 -0
- package/templates/claude/commands/docs/init.md +37 -0
- package/templates/claude/commands/docs/summarize.md +22 -0
- package/templates/claude/commands/docs/update.md +78 -0
- package/templates/claude/commands/fix/ci.md +17 -0
- package/templates/claude/commands/fix/fast.md +18 -0
- package/templates/claude/commands/fix/hard.md +35 -0
- package/templates/claude/commands/fix/logs.md +26 -0
- package/templates/claude/commands/fix/parallel.md +54 -0
- package/templates/claude/commands/fix/test.md +20 -0
- package/templates/claude/commands/fix/types.md +9 -0
- package/templates/claude/commands/fix/ui.md +33 -0
- package/templates/claude/commands/fix.md +43 -0
- package/templates/claude/commands/git/cm.md +5 -0
- package/templates/claude/commands/git/cp.md +4 -0
- package/templates/claude/commands/git/merge.md +40 -0
- package/templates/claude/commands/git/pr.md +50 -0
- package/templates/claude/commands/journal.md +7 -0
- package/templates/claude/commands/kanban.md +99 -0
- package/templates/claude/commands/plan/archive.md +57 -0
- package/templates/claude/commands/plan/ci.md +33 -0
- package/templates/claude/commands/plan/cro.md +67 -0
- package/templates/claude/commands/plan/fast.md +66 -0
- package/templates/claude/commands/plan/hard.md +92 -0
- package/templates/claude/commands/plan/parallel.md +129 -0
- package/templates/claude/commands/plan/two.md +45 -0
- package/templates/claude/commands/plan/validate.md +117 -0
- package/templates/claude/commands/plan.md +30 -0
- package/templates/claude/commands/preview.md +87 -0
- package/templates/claude/commands/registry.json +313 -0
- package/templates/claude/commands/review/codebase/parallel.md +122 -0
- package/templates/claude/commands/review/codebase.md +47 -0
- package/templates/claude/commands/scout/ext.md +35 -0
- package/templates/claude/commands/scout.md +28 -0
- package/templates/claude/commands/skill/add.md +36 -0
- package/templates/claude/commands/skill/create.md +29 -0
- package/templates/claude/commands/skill/fix-logs.md +22 -0
- package/templates/claude/commands/skill/optimize/auto.md +25 -0
- package/templates/claude/commands/skill/optimize.md +34 -0
- package/templates/claude/commands/skill/plan.md +45 -0
- package/templates/claude/commands/test/ui.md +91 -0
- package/templates/claude/commands/test.md +8 -0
- package/templates/claude/commands/use-mcp.md +34 -0
- package/templates/claude/commands/watzup.md +8 -0
- package/templates/claude/commands/worktree.md +126 -0
- package/templates/claude/hooks/dev-rules-reminder.cjs +258 -0
- package/templates/claude/hooks/docs/README.md +42 -0
- package/templates/claude/hooks/lib/cctk-config-utils.cjs +751 -0
- package/templates/claude/hooks/lib/cctk-paths.cjs +106 -0
- package/templates/claude/hooks/lib/context-tracker.cjs +346 -0
- package/templates/claude/hooks/privacy-block.cjs +289 -0
- package/templates/claude/hooks/registry.json +77 -0
- package/templates/claude/hooks/scout-block/broad-pattern-detector.cjs +293 -0
- package/templates/claude/hooks/scout-block/error-formatter.cjs +156 -0
- package/templates/claude/hooks/scout-block/path-extractor.cjs +359 -0
- package/templates/claude/hooks/scout-block/pattern-matcher.cjs +184 -0
- package/templates/claude/hooks/scout-block/vendor/ignore.js +626 -0
- package/templates/claude/hooks/scout-block.cjs +167 -0
- package/templates/claude/hooks/session-end.cjs +35 -0
- package/templates/claude/hooks/session-init.cjs +214 -0
- package/templates/claude/hooks/subagent-init.cjs +161 -0
- package/templates/claude/hooks/write-compact-marker.cjs +153 -0
- package/templates/claude/output-styles/coding-level-1.md +148 -0
- package/templates/claude/output-styles/coding-level-2.md +159 -0
- package/templates/claude/output-styles/coding-level-3.md +91 -0
- package/templates/claude/scripts/README.md +33 -0
- package/templates/claude/scripts/generate-catalogs.cjs +318 -0
- package/templates/claude/scripts/registry.json +48 -0
- package/templates/claude/scripts/set-active-plan.cjs +45 -0
- package/templates/claude/scripts/validate-docs.cjs +447 -0
- package/templates/claude/scripts/worktree.cjs +658 -0
- package/templates/claude/skills/README.md +112 -0
- package/templates/claude/skills/ai-artist/SKILL.md +75 -0
- package/templates/claude/skills/ai-artist/references/advanced-techniques.md +184 -0
- package/templates/claude/skills/ai-artist/references/domain-code.md +66 -0
- package/templates/claude/skills/ai-artist/references/domain-data.md +72 -0
- package/templates/claude/skills/ai-artist/references/domain-marketing.md +66 -0
- package/templates/claude/skills/ai-artist/references/domain-patterns.md +33 -0
- package/templates/claude/skills/ai-artist/references/domain-writing.md +68 -0
- package/templates/claude/skills/ai-artist/references/image-prompting.md +141 -0
- package/templates/claude/skills/ai-artist/references/llm-prompting.md +165 -0
- package/templates/claude/skills/ai-artist/references/nano-banana.md +59 -0
- package/templates/claude/skills/ai-artist/references/reasoning-techniques.md +201 -0
- package/templates/claude/skills/backend-development/SKILL.md +95 -0
- package/templates/claude/skills/backend-development/references/backend-api-design.md +495 -0
- package/templates/claude/skills/backend-development/references/backend-architecture.md +454 -0
- package/templates/claude/skills/backend-development/references/backend-authentication.md +338 -0
- package/templates/claude/skills/backend-development/references/backend-code-quality.md +659 -0
- package/templates/claude/skills/backend-development/references/backend-debugging.md +904 -0
- package/templates/claude/skills/backend-development/references/backend-devops.md +494 -0
- package/templates/claude/skills/backend-development/references/backend-mindset.md +387 -0
- package/templates/claude/skills/backend-development/references/backend-performance.md +397 -0
- package/templates/claude/skills/backend-development/references/backend-security.md +290 -0
- package/templates/claude/skills/backend-development/references/backend-technologies.md +256 -0
- package/templates/claude/skills/backend-development/references/backend-testing.md +429 -0
- package/templates/claude/skills/better-auth/SKILL.md +204 -0
- package/templates/claude/skills/better-auth/references/advanced-features.md +553 -0
- package/templates/claude/skills/better-auth/references/database-integration.md +577 -0
- package/templates/claude/skills/better-auth/references/email-password-auth.md +416 -0
- package/templates/claude/skills/better-auth/references/oauth-providers.md +430 -0
- package/templates/claude/skills/better-auth/scripts/better_auth_init.py +521 -0
- package/templates/claude/skills/chrome-devtools/SKILL.md +473 -0
- package/templates/claude/skills/chrome-devtools/references/cdp-domains.md +694 -0
- package/templates/claude/skills/chrome-devtools/references/performance-guide.md +940 -0
- package/templates/claude/skills/chrome-devtools/references/puppeteer-reference.md +953 -0
- package/templates/claude/skills/chrome-devtools/scripts/README.md +288 -0
- package/templates/claude/skills/chrome-devtools/scripts/aria-snapshot.js +368 -0
- package/templates/claude/skills/chrome-devtools/scripts/click.js +92 -0
- package/templates/claude/skills/chrome-devtools/scripts/console.js +85 -0
- package/templates/claude/skills/chrome-devtools/scripts/evaluate.js +59 -0
- package/templates/claude/skills/chrome-devtools/scripts/fill.js +84 -0
- package/templates/claude/skills/chrome-devtools/scripts/inject-auth.js +247 -0
- package/templates/claude/skills/chrome-devtools/scripts/install-deps.sh +11 -0
- package/templates/claude/skills/chrome-devtools/scripts/install.sh +36 -0
- package/templates/claude/skills/chrome-devtools/scripts/lib/browser.js +335 -0
- package/templates/claude/skills/chrome-devtools/scripts/lib/selector.js +183 -0
- package/templates/claude/skills/chrome-devtools/scripts/navigate.js +60 -0
- package/templates/claude/skills/chrome-devtools/scripts/network.js +113 -0
- package/templates/claude/skills/chrome-devtools/scripts/package.json +16 -0
- package/templates/claude/skills/chrome-devtools/scripts/performance.js +159 -0
- package/templates/claude/skills/chrome-devtools/scripts/screenshot.js +212 -0
- package/templates/claude/skills/chrome-devtools/scripts/select-ref.js +151 -0
- package/templates/claude/skills/chrome-devtools/scripts/snapshot.js +143 -0
- package/templates/claude/skills/chrome-devtools/scripts/ws-debug.js +47 -0
- package/templates/claude/skills/chrome-devtools/scripts/ws-full-debug.js +115 -0
- package/templates/claude/skills/claude-code/references/advanced-features.md +399 -0
- package/templates/claude/skills/claude-code/references/agent-skills.md +399 -0
- package/templates/claude/skills/claude-code/references/api-reference.md +498 -0
- package/templates/claude/skills/claude-code/references/best-practices.md +447 -0
- package/templates/claude/skills/claude-code/references/cicd-integration.md +428 -0
- package/templates/claude/skills/claude-code/references/common-workflows.md +107 -0
- package/templates/claude/skills/claude-code/references/configuration.md +480 -0
- package/templates/claude/skills/claude-code/references/enterprise-features.md +472 -0
- package/templates/claude/skills/claude-code/references/getting-started.md +244 -0
- package/templates/claude/skills/claude-code/references/hooks-and-plugins.md +444 -0
- package/templates/claude/skills/claude-code/references/hooks-comprehensive.md +622 -0
- package/templates/claude/skills/claude-code/references/ide-integration.md +316 -0
- package/templates/claude/skills/claude-code/references/mcp-integration.md +386 -0
- package/templates/claude/skills/claude-code/references/slash-commands.md +460 -0
- package/templates/claude/skills/claude-code/references/troubleshooting.md +455 -0
- package/templates/claude/skills/claude-code/skill.md +60 -0
- package/templates/claude/skills/code-review/SKILL.md +143 -0
- package/templates/claude/skills/code-review/references/code-review-reception.md +209 -0
- package/templates/claude/skills/code-review/references/requesting-code-review.md +105 -0
- package/templates/claude/skills/code-review/references/verification-before-completion.md +139 -0
- package/templates/claude/skills/context-engineering/SKILL.md +86 -0
- package/templates/claude/skills/context-engineering/references/context-compression.md +84 -0
- package/templates/claude/skills/context-engineering/references/context-degradation.md +93 -0
- package/templates/claude/skills/context-engineering/references/context-fundamentals.md +75 -0
- package/templates/claude/skills/context-engineering/references/context-optimization.md +82 -0
- package/templates/claude/skills/context-engineering/references/evaluation.md +89 -0
- package/templates/claude/skills/context-engineering/references/memory-systems.md +88 -0
- package/templates/claude/skills/context-engineering/references/multi-agent-patterns.md +90 -0
- package/templates/claude/skills/context-engineering/references/project-development.md +97 -0
- package/templates/claude/skills/context-engineering/references/tool-design.md +86 -0
- package/templates/claude/skills/context-engineering/scripts/compression_evaluator.py +329 -0
- package/templates/claude/skills/context-engineering/scripts/context_analyzer.py +294 -0
- package/templates/claude/skills/databases/SKILL.md +232 -0
- package/templates/claude/skills/databases/references/mongodb-aggregation.md +447 -0
- package/templates/claude/skills/databases/references/mongodb-atlas.md +465 -0
- package/templates/claude/skills/databases/references/mongodb-crud.md +408 -0
- package/templates/claude/skills/databases/references/mongodb-indexing.md +442 -0
- package/templates/claude/skills/databases/references/postgresql-administration.md +594 -0
- package/templates/claude/skills/databases/references/postgresql-performance.md +527 -0
- package/templates/claude/skills/databases/references/postgresql-psql-cli.md +467 -0
- package/templates/claude/skills/databases/references/postgresql-queries.md +475 -0
- package/templates/claude/skills/databases/scripts/db_backup.py +502 -0
- package/templates/claude/skills/databases/scripts/db_migrate.py +414 -0
- package/templates/claude/skills/databases/scripts/db_performance_check.py +445 -0
- package/templates/claude/skills/debugging/SKILL.md +84 -0
- package/templates/claude/skills/debugging/references/defense-in-depth.md +124 -0
- package/templates/claude/skills/debugging/references/root-cause-tracing.md +122 -0
- package/templates/claude/skills/debugging/references/systematic-debugging.md +102 -0
- package/templates/claude/skills/debugging/references/verification.md +123 -0
- package/templates/claude/skills/debugging/scripts/find-polluter.sh +63 -0
- package/templates/claude/skills/debugging/scripts/find-polluter.test.md +102 -0
- package/templates/claude/skills/devops/SKILL.md +293 -0
- package/templates/claude/skills/devops/references/browser-rendering.md +305 -0
- package/templates/claude/skills/devops/references/cloudflare-d1-kv.md +123 -0
- package/templates/claude/skills/devops/references/cloudflare-platform.md +271 -0
- package/templates/claude/skills/devops/references/cloudflare-r2-storage.md +280 -0
- package/templates/claude/skills/devops/references/cloudflare-workers-advanced.md +312 -0
- package/templates/claude/skills/devops/references/cloudflare-workers-apis.md +309 -0
- package/templates/claude/skills/devops/references/cloudflare-workers-basics.md +418 -0
- package/templates/claude/skills/devops/references/docker-basics.md +297 -0
- package/templates/claude/skills/devops/references/docker-compose.md +292 -0
- package/templates/claude/skills/devops/references/gcloud-platform.md +307 -0
- package/templates/claude/skills/devops/references/gcloud-services.md +304 -0
- package/templates/claude/skills/devops/scripts/cloudflare_deploy.py +269 -0
- package/templates/claude/skills/devops/scripts/docker_optimize.py +320 -0
- package/templates/claude/skills/docs-seeker/SKILL.md +95 -0
- package/templates/claude/skills/docs-seeker/package.json +24 -0
- package/templates/claude/skills/docs-seeker/references/advanced.md +78 -0
- package/templates/claude/skills/docs-seeker/references/context7-patterns.md +68 -0
- package/templates/claude/skills/docs-seeker/references/errors.md +68 -0
- package/templates/claude/skills/docs-seeker/scripts/analyze-llms-txt.js +245 -0
- package/templates/claude/skills/docs-seeker/scripts/detect-topic.js +172 -0
- package/templates/claude/skills/docs-seeker/scripts/fetch-docs.js +212 -0
- package/templates/claude/skills/docs-seeker/workflows/library-search.md +87 -0
- package/templates/claude/skills/docs-seeker/workflows/repo-analysis.md +91 -0
- package/templates/claude/skills/docs-seeker/workflows/topic-search.md +77 -0
- package/templates/claude/skills/frontend-design/SKILL.md +85 -0
- package/templates/claude/skills/frontend-design/references/analysis-best-practices.md +80 -0
- package/templates/claude/skills/frontend-design/references/analysis-prompts.md +141 -0
- package/templates/claude/skills/frontend-design/references/analysis-techniques.md +118 -0
- package/templates/claude/skills/frontend-design/references/animejs.md +396 -0
- package/templates/claude/skills/frontend-design/references/design-extraction-overview.md +71 -0
- package/templates/claude/skills/frontend-design/references/extraction-best-practices.md +141 -0
- package/templates/claude/skills/frontend-design/references/extraction-output-templates.md +162 -0
- package/templates/claude/skills/frontend-design/references/extraction-prompts.md +127 -0
- package/templates/claude/skills/frontend-design/references/technical-accessibility.md +119 -0
- package/templates/claude/skills/frontend-design/references/technical-best-practices.md +97 -0
- package/templates/claude/skills/frontend-design/references/technical-optimization.md +44 -0
- package/templates/claude/skills/frontend-design/references/technical-overview.md +90 -0
- package/templates/claude/skills/frontend-design/references/technical-workflows.md +150 -0
- package/templates/claude/skills/frontend-design/references/visual-analysis-overview.md +95 -0
- package/templates/claude/skills/frontend-development/SKILL.md +399 -0
- package/templates/claude/skills/frontend-development/resources/common-patterns.md +331 -0
- package/templates/claude/skills/frontend-development/resources/complete-examples.md +872 -0
- package/templates/claude/skills/frontend-development/resources/component-patterns.md +502 -0
- package/templates/claude/skills/frontend-development/resources/data-fetching.md +767 -0
- package/templates/claude/skills/frontend-development/resources/file-organization.md +502 -0
- package/templates/claude/skills/frontend-development/resources/loading-and-error-states.md +501 -0
- package/templates/claude/skills/frontend-development/resources/performance.md +406 -0
- package/templates/claude/skills/frontend-development/resources/routing-guide.md +364 -0
- package/templates/claude/skills/frontend-development/resources/styling-guide.md +428 -0
- package/templates/claude/skills/frontend-development/resources/typescript-standards.md +418 -0
- package/templates/claude/skills/markdown-novel-viewer/SKILL.md +272 -0
- package/templates/claude/skills/markdown-novel-viewer/assets/directory-browser.css +215 -0
- package/templates/claude/skills/markdown-novel-viewer/assets/favicon.png +0 -0
- package/templates/claude/skills/markdown-novel-viewer/assets/novel-theme.css +872 -0
- package/templates/claude/skills/markdown-novel-viewer/assets/reader.js +378 -0
- package/templates/claude/skills/markdown-novel-viewer/assets/template.html +85 -0
- package/templates/claude/skills/markdown-novel-viewer/package.json +15 -0
- package/templates/claude/skills/markdown-novel-viewer/scripts/lib/http-server.cjs +434 -0
- package/templates/claude/skills/markdown-novel-viewer/scripts/lib/markdown-renderer.cjs +335 -0
- package/templates/claude/skills/markdown-novel-viewer/scripts/lib/plan-navigator.cjs +509 -0
- package/templates/claude/skills/markdown-novel-viewer/scripts/lib/port-finder.cjs +49 -0
- package/templates/claude/skills/markdown-novel-viewer/scripts/lib/process-mgr.cjs +150 -0
- package/templates/claude/skills/markdown-novel-viewer/scripts/server.cjs +398 -0
- package/templates/claude/skills/mcp-builder/SKILL.md +328 -0
- package/templates/claude/skills/mcp-builder/reference/evaluation.md +602 -0
- package/templates/claude/skills/mcp-builder/reference/mcp_best_practices.md +915 -0
- package/templates/claude/skills/mcp-builder/reference/node_mcp_server.md +916 -0
- package/templates/claude/skills/mcp-builder/reference/python_mcp_server.md +752 -0
- package/templates/claude/skills/mcp-builder/scripts/connections.py +151 -0
- package/templates/claude/skills/mcp-builder/scripts/evaluation.py +381 -0
- package/templates/claude/skills/mcp-builder/scripts/example_evaluation.xml +22 -0
- package/templates/claude/skills/mcp-builder/scripts/requirements.txt +2 -0
- package/templates/claude/skills/mcp-management/README.md +219 -0
- package/templates/claude/skills/mcp-management/SKILL.md +209 -0
- package/templates/claude/skills/mcp-management/assets/tools.json +3146 -0
- package/templates/claude/skills/mcp-management/references/configuration.md +114 -0
- package/templates/claude/skills/mcp-management/references/gemini-cli-integration.md +209 -0
- package/templates/claude/skills/mcp-management/references/mcp-protocol.md +116 -0
- package/templates/claude/skills/mcp-management/scripts/.env.example +10 -0
- package/templates/claude/skills/mcp-management/scripts/cli.ts +202 -0
- package/templates/claude/skills/mcp-management/scripts/mcp-client.ts +247 -0
- package/templates/claude/skills/mcp-management/scripts/package.json +20 -0
- package/templates/claude/skills/mcp-management/scripts/tsconfig.json +15 -0
- package/templates/claude/skills/media-processing/SKILL.md +91 -0
- package/templates/claude/skills/media-processing/references/common-workflows.md +132 -0
- package/templates/claude/skills/media-processing/references/ffmpeg-encoding.md +358 -0
- package/templates/claude/skills/media-processing/references/ffmpeg-filters.md +503 -0
- package/templates/claude/skills/media-processing/references/ffmpeg-streaming.md +395 -0
- package/templates/claude/skills/media-processing/references/format-compatibility.md +375 -0
- package/templates/claude/skills/media-processing/references/imagemagick-batch.md +612 -0
- package/templates/claude/skills/media-processing/references/imagemagick-editing.md +623 -0
- package/templates/claude/skills/media-processing/references/rmbg-background-removal.md +66 -0
- package/templates/claude/skills/media-processing/references/troubleshooting.md +109 -0
- package/templates/claude/skills/media-processing/scripts/README.md +102 -0
- package/templates/claude/skills/media-processing/scripts/batch-remove-background.sh +124 -0
- package/templates/claude/skills/media-processing/scripts/batch_resize.py +342 -0
- package/templates/claude/skills/media-processing/scripts/media_convert.py +311 -0
- package/templates/claude/skills/media-processing/scripts/remove-background.sh +96 -0
- package/templates/claude/skills/media-processing/scripts/remove-bg-node.js +181 -0
- package/templates/claude/skills/mermaidjs-v11/SKILL.md +115 -0
- package/templates/claude/skills/mermaidjs-v11/references/cli-usage.md +228 -0
- package/templates/claude/skills/mermaidjs-v11/references/configuration.md +232 -0
- package/templates/claude/skills/mermaidjs-v11/references/diagram-types.md +315 -0
- package/templates/claude/skills/mermaidjs-v11/references/examples.md +344 -0
- package/templates/claude/skills/mermaidjs-v11/references/integration.md +310 -0
- package/templates/claude/skills/planning/SKILL.md +115 -0
- package/templates/claude/skills/planning/references/codebase-understanding.md +62 -0
- package/templates/claude/skills/planning/references/output-standards.md +127 -0
- package/templates/claude/skills/planning/references/plan-organization.md +150 -0
- package/templates/claude/skills/planning/references/research-phase.md +49 -0
- package/templates/claude/skills/planning/references/solution-design.md +63 -0
- package/templates/claude/skills/plans-kanban/SKILL.md +157 -0
- package/templates/claude/skills/plans-kanban/assets/dashboard-template.html +119 -0
- package/templates/claude/skills/plans-kanban/assets/dashboard.css +1594 -0
- package/templates/claude/skills/plans-kanban/assets/dashboard.js +659 -0
- package/templates/claude/skills/plans-kanban/assets/favicon.png +0 -0
- package/templates/claude/skills/plans-kanban/package.json +13 -0
- package/templates/claude/skills/plans-kanban/scripts/lib/dashboard-renderer.cjs +941 -0
- package/templates/claude/skills/plans-kanban/scripts/lib/http-server.cjs +310 -0
- package/templates/claude/skills/plans-kanban/scripts/lib/plan-metadata-extractor.cjs +489 -0
- package/templates/claude/skills/plans-kanban/scripts/lib/plan-parser.cjs +194 -0
- package/templates/claude/skills/plans-kanban/scripts/lib/plan-scanner.cjs +277 -0
- package/templates/claude/skills/plans-kanban/scripts/lib/port-finder.cjs +49 -0
- package/templates/claude/skills/plans-kanban/scripts/lib/process-mgr.cjs +128 -0
- package/templates/claude/skills/plans-kanban/scripts/server.cjs +249 -0
- package/templates/claude/skills/problem-solving/SKILL.md +96 -0
- package/templates/claude/skills/problem-solving/references/attribution.md +69 -0
- package/templates/claude/skills/problem-solving/references/collision-zone-thinking.md +79 -0
- package/templates/claude/skills/problem-solving/references/inversion-exercise.md +91 -0
- package/templates/claude/skills/problem-solving/references/meta-pattern-recognition.md +87 -0
- package/templates/claude/skills/problem-solving/references/scale-game.md +95 -0
- package/templates/claude/skills/problem-solving/references/simplification-cascades.md +80 -0
- package/templates/claude/skills/problem-solving/references/when-stuck.md +72 -0
- package/templates/claude/skills/registry.json +258 -0
- package/templates/claude/skills/repomix/SKILL.md +247 -0
- package/templates/claude/skills/repomix/references/configuration.md +211 -0
- package/templates/claude/skills/repomix/references/usage-patterns.md +232 -0
- package/templates/claude/skills/repomix/scripts/README.md +179 -0
- package/templates/claude/skills/repomix/scripts/repomix_batch.py +455 -0
- package/templates/claude/skills/repomix/scripts/repos.example.json +15 -0
- package/templates/claude/skills/research/SKILL.md +168 -0
- package/templates/claude/skills/sequential-thinking/.env.example +8 -0
- package/templates/claude/skills/sequential-thinking/README.md +183 -0
- package/templates/claude/skills/sequential-thinking/SKILL.md +94 -0
- package/templates/claude/skills/sequential-thinking/package.json +31 -0
- package/templates/claude/skills/sequential-thinking/references/advanced-strategies.md +79 -0
- package/templates/claude/skills/sequential-thinking/references/advanced-techniques.md +76 -0
- package/templates/claude/skills/sequential-thinking/references/core-patterns.md +95 -0
- package/templates/claude/skills/sequential-thinking/references/examples-api.md +88 -0
- package/templates/claude/skills/sequential-thinking/references/examples-architecture.md +94 -0
- package/templates/claude/skills/sequential-thinking/references/examples-debug.md +90 -0
- package/templates/claude/skills/sequential-thinking/scripts/format-thought.js +182 -0
- package/templates/claude/skills/sequential-thinking/scripts/process-thought.js +252 -0
- package/templates/claude/skills/skill-creator/LICENSE.txt +202 -0
- package/templates/claude/skills/skill-creator/SKILL.md +266 -0
- package/templates/claude/skills/skill-creator/references/agent-skills-spec.md +51 -0
- package/templates/claude/skills/skill-creator/scripts/encoding_utils.py +21 -0
- package/templates/claude/skills/skill-creator/scripts/init_skill.py +304 -0
- package/templates/claude/skills/skill-creator/scripts/package_skill.py +110 -0
- package/templates/claude/skills/skill-creator/scripts/quick_validate.py +66 -0
- package/templates/claude/skills/template-skill/SKILL.md +6 -0
- package/templates/claude/skills/vitest/SKILL.md +595 -0
- package/templates/claude/skills/vitest/references/async-patterns.md +82 -0
- package/templates/claude/skills/vitest/references/mock-patterns.md +78 -0
- package/templates/claude/skills/vitest/references/monorepo-setup.md +185 -0
- package/templates/claude/skills/vitest/references/turborepo-setup.md +332 -0
- package/templates/claude/skills/web-frameworks/SKILL.md +324 -0
- package/templates/claude/skills/web-frameworks/references/nextjs-app-router.md +465 -0
- package/templates/claude/skills/web-frameworks/references/nextjs-data-fetching.md +459 -0
- package/templates/claude/skills/web-frameworks/references/nextjs-optimization.md +511 -0
- package/templates/claude/skills/web-frameworks/references/nextjs-server-components.md +495 -0
- package/templates/claude/skills/web-frameworks/references/remix-icon-integration.md +603 -0
- package/templates/claude/skills/web-frameworks/references/turborepo-caching.md +551 -0
- package/templates/claude/skills/web-frameworks/references/turborepo-pipelines.md +517 -0
- package/templates/claude/skills/web-frameworks/references/turborepo-setup.md +542 -0
- package/templates/claude/skills/web-frameworks/scripts/nextjs_init.py +547 -0
- package/templates/claude/skills/web-frameworks/scripts/turborepo_migrate.py +394 -0
- package/templates/claude/workflows/development-rules.md +40 -0
- package/templates/claude/workflows/documentation-management.md +121 -0
- package/templates/claude/workflows/orchestration-protocol.md +16 -0
- package/templates/claude/workflows/primary-workflow.md +45 -0
- package/templates/claude/workflows/registry.json +37 -0
- package/templates/common/.cct.json +41 -0
- package/templates/common/.cctkignore +22 -0
- package/templates/common/.env.example +39 -0
- package/templates/common/.mcp.json.example +16 -0
- package/templates/common/metadata.json +15 -0
- package/templates/common/settings.json +79 -0
- package/templates/common/statusline.cjs +271 -0
- package/templates/config/.repomixignore +22 -0
- package/templates/config/AGENTS.md +55 -0
- package/templates/config/CLAUDE.md +87 -0
- package/templates/plans/bug-fix-template.md +69 -0
- package/templates/plans/feature-implementation-template.md +84 -0
- package/templates/plans/refactor-template.md +82 -0
- package/templates/plans/template-usage-guide.md +58 -0
|
@@ -0,0 +1,320 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
"""
|
|
3
|
+
Dockerfile Optimization Analyzer
|
|
4
|
+
|
|
5
|
+
Analyzes Dockerfiles for optimization opportunities including multi-stage builds,
|
|
6
|
+
security issues, size reduction, and best practices.
|
|
7
|
+
|
|
8
|
+
Usage:
|
|
9
|
+
python docker-optimize.py Dockerfile
|
|
10
|
+
python docker-optimize.py --json Dockerfile
|
|
11
|
+
python docker-optimize.py --verbose Dockerfile
|
|
12
|
+
"""
|
|
13
|
+
|
|
14
|
+
import argparse
|
|
15
|
+
import json
|
|
16
|
+
import re
|
|
17
|
+
import sys
|
|
18
|
+
from pathlib import Path
|
|
19
|
+
from typing import Dict, List, Optional, Tuple
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
class DockerfileAnalyzer:
|
|
23
|
+
"""Analyze Dockerfile for optimization opportunities."""
|
|
24
|
+
|
|
25
|
+
def __init__(self, dockerfile_path: Path, verbose: bool = False):
|
|
26
|
+
"""
|
|
27
|
+
Initialize analyzer.
|
|
28
|
+
|
|
29
|
+
Args:
|
|
30
|
+
dockerfile_path: Path to Dockerfile
|
|
31
|
+
verbose: Enable verbose output
|
|
32
|
+
"""
|
|
33
|
+
self.dockerfile_path = Path(dockerfile_path)
|
|
34
|
+
self.verbose = verbose
|
|
35
|
+
self.lines = []
|
|
36
|
+
self.issues = []
|
|
37
|
+
self.suggestions = []
|
|
38
|
+
|
|
39
|
+
def load_dockerfile(self) -> bool:
|
|
40
|
+
"""
|
|
41
|
+
Load and parse Dockerfile.
|
|
42
|
+
|
|
43
|
+
Returns:
|
|
44
|
+
True if loaded successfully
|
|
45
|
+
|
|
46
|
+
Raises:
|
|
47
|
+
FileNotFoundError: If Dockerfile doesn't exist
|
|
48
|
+
"""
|
|
49
|
+
if not self.dockerfile_path.exists():
|
|
50
|
+
raise FileNotFoundError(f"Dockerfile not found: {self.dockerfile_path}")
|
|
51
|
+
|
|
52
|
+
with open(self.dockerfile_path, 'r') as f:
|
|
53
|
+
self.lines = f.readlines()
|
|
54
|
+
|
|
55
|
+
return True
|
|
56
|
+
|
|
57
|
+
def analyze_base_image(self) -> None:
|
|
58
|
+
"""Check base image for optimization opportunities."""
|
|
59
|
+
for i, line in enumerate(self.lines, 1):
|
|
60
|
+
line = line.strip()
|
|
61
|
+
if line.startswith('FROM'):
|
|
62
|
+
# Check for 'latest' tag
|
|
63
|
+
if ':latest' in line or (': ' not in line and 'AS' not in line and '@' not in line):
|
|
64
|
+
self.issues.append({
|
|
65
|
+
'line': i,
|
|
66
|
+
'severity': 'warning',
|
|
67
|
+
'category': 'base_image',
|
|
68
|
+
'message': 'Base image uses :latest or no tag',
|
|
69
|
+
'suggestion': 'Use specific version tags for reproducibility'
|
|
70
|
+
})
|
|
71
|
+
|
|
72
|
+
# Check for non-alpine/slim variants
|
|
73
|
+
if 'node' in line.lower() and 'alpine' not in line.lower():
|
|
74
|
+
self.suggestions.append({
|
|
75
|
+
'line': i,
|
|
76
|
+
'category': 'size',
|
|
77
|
+
'message': 'Consider using Alpine variant',
|
|
78
|
+
'suggestion': 'node:20-alpine is ~10x smaller than node:20'
|
|
79
|
+
})
|
|
80
|
+
|
|
81
|
+
def analyze_multi_stage(self) -> None:
|
|
82
|
+
"""Check if multi-stage build is used."""
|
|
83
|
+
from_count = sum(1 for line in self.lines if line.strip().startswith('FROM'))
|
|
84
|
+
|
|
85
|
+
if from_count == 1:
|
|
86
|
+
# Check if build tools are installed
|
|
87
|
+
has_build_tools = any(
|
|
88
|
+
any(tool in line.lower() for tool in ['gcc', 'make', 'build-essential', 'npm install', 'pip install'])
|
|
89
|
+
for line in self.lines
|
|
90
|
+
)
|
|
91
|
+
|
|
92
|
+
if has_build_tools:
|
|
93
|
+
self.issues.append({
|
|
94
|
+
'line': 0,
|
|
95
|
+
'severity': 'warning',
|
|
96
|
+
'category': 'optimization',
|
|
97
|
+
'message': 'Single-stage build with build tools',
|
|
98
|
+
'suggestion': 'Use multi-stage build to exclude build dependencies from final image'
|
|
99
|
+
})
|
|
100
|
+
|
|
101
|
+
def analyze_layer_caching(self) -> None:
|
|
102
|
+
"""Check for optimal layer caching order."""
|
|
103
|
+
copy_lines = []
|
|
104
|
+
run_lines = []
|
|
105
|
+
|
|
106
|
+
for i, line in enumerate(self.lines, 1):
|
|
107
|
+
stripped = line.strip()
|
|
108
|
+
if stripped.startswith('COPY'):
|
|
109
|
+
copy_lines.append((i, stripped))
|
|
110
|
+
elif stripped.startswith('RUN'):
|
|
111
|
+
run_lines.append((i, stripped))
|
|
112
|
+
|
|
113
|
+
# Check if dependency files copied before source
|
|
114
|
+
has_package_copy = any('package.json' in line or 'requirements.txt' in line or 'go.mod' in line
|
|
115
|
+
for _, line in copy_lines)
|
|
116
|
+
has_source_copy = any('COPY . .' in line or 'COPY ./' in line
|
|
117
|
+
for _, line in copy_lines)
|
|
118
|
+
|
|
119
|
+
if has_source_copy and not has_package_copy:
|
|
120
|
+
self.issues.append({
|
|
121
|
+
'line': 0,
|
|
122
|
+
'severity': 'warning',
|
|
123
|
+
'category': 'caching',
|
|
124
|
+
'message': 'Source copied before dependencies',
|
|
125
|
+
'suggestion': 'Copy dependency files first (package.json, requirements.txt) then run install, then copy source'
|
|
126
|
+
})
|
|
127
|
+
|
|
128
|
+
def analyze_security(self) -> None:
|
|
129
|
+
"""Check for security issues."""
|
|
130
|
+
has_user = any(line.strip().startswith('USER') and 'root' not in line.lower()
|
|
131
|
+
for line in self.lines)
|
|
132
|
+
|
|
133
|
+
if not has_user:
|
|
134
|
+
self.issues.append({
|
|
135
|
+
'line': 0,
|
|
136
|
+
'severity': 'error',
|
|
137
|
+
'category': 'security',
|
|
138
|
+
'message': 'Container runs as root',
|
|
139
|
+
'suggestion': 'Create and use non-root user with USER instruction'
|
|
140
|
+
})
|
|
141
|
+
|
|
142
|
+
# Check for secrets in build
|
|
143
|
+
for i, line in enumerate(self.lines, 1):
|
|
144
|
+
if any(secret in line.upper() for secret in ['PASSWORD', 'SECRET', 'TOKEN', 'API_KEY']):
|
|
145
|
+
if 'ENV' in line or 'ARG' in line:
|
|
146
|
+
self.issues.append({
|
|
147
|
+
'line': i,
|
|
148
|
+
'severity': 'error',
|
|
149
|
+
'category': 'security',
|
|
150
|
+
'message': 'Potential secret in Dockerfile',
|
|
151
|
+
'suggestion': 'Use build-time arguments or runtime environment variables'
|
|
152
|
+
})
|
|
153
|
+
|
|
154
|
+
def analyze_apt_cache(self) -> None:
|
|
155
|
+
"""Check for apt cache cleanup."""
|
|
156
|
+
for i, line in enumerate(self.lines, 1):
|
|
157
|
+
if 'apt-get install' in line.lower() or 'apt install' in line.lower():
|
|
158
|
+
# Check if same RUN command cleans cache
|
|
159
|
+
if 'rm -rf /var/lib/apt/lists/*' not in line:
|
|
160
|
+
self.suggestions.append({
|
|
161
|
+
'line': i,
|
|
162
|
+
'category': 'size',
|
|
163
|
+
'message': 'apt cache not cleaned in same layer',
|
|
164
|
+
'suggestion': 'Add && rm -rf /var/lib/apt/lists/* to reduce image size'
|
|
165
|
+
})
|
|
166
|
+
|
|
167
|
+
def analyze_combine_run(self) -> None:
|
|
168
|
+
"""Check for multiple consecutive RUN commands."""
|
|
169
|
+
consecutive_runs = 0
|
|
170
|
+
first_run_line = 0
|
|
171
|
+
|
|
172
|
+
for i, line in enumerate(self.lines, 1):
|
|
173
|
+
if line.strip().startswith('RUN'):
|
|
174
|
+
if consecutive_runs == 0:
|
|
175
|
+
first_run_line = i
|
|
176
|
+
consecutive_runs += 1
|
|
177
|
+
else:
|
|
178
|
+
if consecutive_runs > 1:
|
|
179
|
+
self.suggestions.append({
|
|
180
|
+
'line': first_run_line,
|
|
181
|
+
'category': 'layers',
|
|
182
|
+
'message': f'{consecutive_runs} consecutive RUN commands',
|
|
183
|
+
'suggestion': 'Combine related RUN commands with && to reduce layers'
|
|
184
|
+
})
|
|
185
|
+
consecutive_runs = 0
|
|
186
|
+
|
|
187
|
+
def analyze_workdir(self) -> None:
|
|
188
|
+
"""Check for WORKDIR usage."""
|
|
189
|
+
has_workdir = any(line.strip().startswith('WORKDIR') for line in self.lines)
|
|
190
|
+
|
|
191
|
+
if not has_workdir:
|
|
192
|
+
self.suggestions.append({
|
|
193
|
+
'line': 0,
|
|
194
|
+
'category': 'best_practice',
|
|
195
|
+
'message': 'No WORKDIR specified',
|
|
196
|
+
'suggestion': 'Use WORKDIR to set working directory instead of cd commands'
|
|
197
|
+
})
|
|
198
|
+
|
|
199
|
+
def analyze(self) -> Dict:
|
|
200
|
+
"""
|
|
201
|
+
Run all analyses.
|
|
202
|
+
|
|
203
|
+
Returns:
|
|
204
|
+
Analysis results dictionary
|
|
205
|
+
"""
|
|
206
|
+
self.load_dockerfile()
|
|
207
|
+
|
|
208
|
+
self.analyze_base_image()
|
|
209
|
+
self.analyze_multi_stage()
|
|
210
|
+
self.analyze_layer_caching()
|
|
211
|
+
self.analyze_security()
|
|
212
|
+
self.analyze_apt_cache()
|
|
213
|
+
self.analyze_combine_run()
|
|
214
|
+
self.analyze_workdir()
|
|
215
|
+
|
|
216
|
+
return {
|
|
217
|
+
'dockerfile': str(self.dockerfile_path),
|
|
218
|
+
'total_lines': len(self.lines),
|
|
219
|
+
'issues': self.issues,
|
|
220
|
+
'suggestions': self.suggestions,
|
|
221
|
+
'summary': {
|
|
222
|
+
'errors': len([i for i in self.issues if i.get('severity') == 'error']),
|
|
223
|
+
'warnings': len([i for i in self.issues if i.get('severity') == 'warning']),
|
|
224
|
+
'suggestions': len(self.suggestions)
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
|
|
228
|
+
def print_results(self, results: Dict) -> None:
|
|
229
|
+
"""
|
|
230
|
+
Print analysis results in human-readable format.
|
|
231
|
+
|
|
232
|
+
Args:
|
|
233
|
+
results: Analysis results from analyze()
|
|
234
|
+
"""
|
|
235
|
+
print(f"\nDockerfile Analysis: {results['dockerfile']}")
|
|
236
|
+
print(f"Total lines: {results['total_lines']}")
|
|
237
|
+
print(f"\nSummary:")
|
|
238
|
+
print(f" Errors: {results['summary']['errors']}")
|
|
239
|
+
print(f" Warnings: {results['summary']['warnings']}")
|
|
240
|
+
print(f" Suggestions: {results['summary']['suggestions']}")
|
|
241
|
+
|
|
242
|
+
if results['issues']:
|
|
243
|
+
print(f"\n{'='*60}")
|
|
244
|
+
print("ISSUES:")
|
|
245
|
+
print('='*60)
|
|
246
|
+
for issue in results['issues']:
|
|
247
|
+
severity = issue.get('severity', 'info').upper()
|
|
248
|
+
line_info = f"Line {issue['line']}" if issue['line'] > 0 else "General"
|
|
249
|
+
print(f"\n[{severity}] {line_info} - {issue['category']}")
|
|
250
|
+
print(f" {issue['message']}")
|
|
251
|
+
print(f" → {issue['suggestion']}")
|
|
252
|
+
|
|
253
|
+
if results['suggestions']:
|
|
254
|
+
print(f"\n{'='*60}")
|
|
255
|
+
print("SUGGESTIONS:")
|
|
256
|
+
print('='*60)
|
|
257
|
+
for sugg in results['suggestions']:
|
|
258
|
+
line_info = f"Line {sugg['line']}" if sugg['line'] > 0 else "General"
|
|
259
|
+
print(f"\n{line_info} - {sugg['category']}")
|
|
260
|
+
print(f" {sugg['message']}")
|
|
261
|
+
print(f" → {sugg['suggestion']}")
|
|
262
|
+
|
|
263
|
+
print()
|
|
264
|
+
|
|
265
|
+
|
|
266
|
+
def main():
|
|
267
|
+
"""CLI entry point."""
|
|
268
|
+
parser = argparse.ArgumentParser(
|
|
269
|
+
description="Analyze Dockerfile for optimization opportunities",
|
|
270
|
+
formatter_class=argparse.RawDescriptionHelpFormatter
|
|
271
|
+
)
|
|
272
|
+
|
|
273
|
+
parser.add_argument(
|
|
274
|
+
"dockerfile",
|
|
275
|
+
type=str,
|
|
276
|
+
help="Path to Dockerfile"
|
|
277
|
+
)
|
|
278
|
+
|
|
279
|
+
parser.add_argument(
|
|
280
|
+
"--json",
|
|
281
|
+
action="store_true",
|
|
282
|
+
help="Output results as JSON"
|
|
283
|
+
)
|
|
284
|
+
|
|
285
|
+
parser.add_argument(
|
|
286
|
+
"--verbose",
|
|
287
|
+
"-v",
|
|
288
|
+
action="store_true",
|
|
289
|
+
help="Enable verbose output"
|
|
290
|
+
)
|
|
291
|
+
|
|
292
|
+
args = parser.parse_args()
|
|
293
|
+
|
|
294
|
+
try:
|
|
295
|
+
analyzer = DockerfileAnalyzer(
|
|
296
|
+
dockerfile_path=args.dockerfile,
|
|
297
|
+
verbose=args.verbose
|
|
298
|
+
)
|
|
299
|
+
|
|
300
|
+
results = analyzer.analyze()
|
|
301
|
+
|
|
302
|
+
if args.json:
|
|
303
|
+
print(json.dumps(results, indent=2))
|
|
304
|
+
else:
|
|
305
|
+
analyzer.print_results(results)
|
|
306
|
+
|
|
307
|
+
# Exit with error code if issues found
|
|
308
|
+
if results['summary']['errors'] > 0:
|
|
309
|
+
sys.exit(1)
|
|
310
|
+
|
|
311
|
+
except FileNotFoundError as e:
|
|
312
|
+
print(f"Error: {e}", file=sys.stderr)
|
|
313
|
+
sys.exit(1)
|
|
314
|
+
except Exception as e:
|
|
315
|
+
print(f"Unexpected error: {e}", file=sys.stderr)
|
|
316
|
+
sys.exit(1)
|
|
317
|
+
|
|
318
|
+
|
|
319
|
+
if __name__ == "__main__":
|
|
320
|
+
main()
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: docs-seeker
|
|
3
|
+
description: "Search technical documentation using executable scripts to detect query type, fetch from llms.txt sources (context7.com), and analyze results. Use when user needs: (1) Topic-specific documentation (features/components/concepts), (2) Library/framework documentation, (3) GitHub repository analysis, (4) Documentation discovery with automated agent distribution strategy"
|
|
4
|
+
version: 3.1.0
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Documentation Discovery via Scripts
|
|
8
|
+
|
|
9
|
+
## Overview
|
|
10
|
+
|
|
11
|
+
**Script-first** documentation discovery using llms.txt standard.
|
|
12
|
+
|
|
13
|
+
Execute scripts to handle entire workflow - no manual URL construction needed.
|
|
14
|
+
|
|
15
|
+
## Primary Workflow
|
|
16
|
+
|
|
17
|
+
**ALWAYS execute scripts in this order:**
|
|
18
|
+
|
|
19
|
+
```bash
|
|
20
|
+
# 1. DETECT query type (topic-specific vs general)
|
|
21
|
+
node scripts/detect-topic.js "<user query>"
|
|
22
|
+
|
|
23
|
+
# 2. FETCH documentation using script output
|
|
24
|
+
node scripts/fetch-docs.js "<user query>"
|
|
25
|
+
|
|
26
|
+
# 3. ANALYZE results (if multiple URLs returned)
|
|
27
|
+
cat llms.txt | node scripts/analyze-llms-txt.js -
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
Scripts handle URL construction, fallback chains, and error handling automatically.
|
|
31
|
+
|
|
32
|
+
## Scripts
|
|
33
|
+
|
|
34
|
+
**`detect-topic.js`** - Classify query type
|
|
35
|
+
- Identifies topic-specific vs general queries
|
|
36
|
+
- Extracts library name + topic keyword
|
|
37
|
+
- Returns JSON: `{topic, library, isTopicSpecific}`
|
|
38
|
+
- Zero-token execution
|
|
39
|
+
|
|
40
|
+
**`fetch-docs.js`** - Retrieve documentation
|
|
41
|
+
- Constructs context7.com URLs automatically
|
|
42
|
+
- Handles fallback: topic → general → error
|
|
43
|
+
- Outputs llms.txt content or error message
|
|
44
|
+
- Zero-token execution
|
|
45
|
+
|
|
46
|
+
**`analyze-llms-txt.js`** - Process llms.txt
|
|
47
|
+
- Categorizes URLs (critical/important/supplementary)
|
|
48
|
+
- Recommends agent distribution (1 agent, 3 agents, 7 agents, phased)
|
|
49
|
+
- Returns JSON with strategy
|
|
50
|
+
- Zero-token execution
|
|
51
|
+
|
|
52
|
+
## Workflow References
|
|
53
|
+
|
|
54
|
+
**[Topic-Specific Search](./workflows/topic-search.md)** - Fastest path (10-15s)
|
|
55
|
+
|
|
56
|
+
**[General Library Search](./workflows/library-search.md)** - Comprehensive coverage (30-60s)
|
|
57
|
+
|
|
58
|
+
**[Repository Analysis](./workflows/repo-analysis.md)** - Fallback strategy
|
|
59
|
+
|
|
60
|
+
## References
|
|
61
|
+
|
|
62
|
+
**[context7-patterns.md](./references/context7-patterns.md)** - URL patterns, known repositories
|
|
63
|
+
|
|
64
|
+
**[errors.md](./references/errors.md)** - Error handling, fallback strategies
|
|
65
|
+
|
|
66
|
+
**[advanced.md](./references/advanced.md)** - Edge cases, versioning, multi-language
|
|
67
|
+
|
|
68
|
+
## Execution Principles
|
|
69
|
+
|
|
70
|
+
1. **Scripts first** - Execute scripts instead of manual URL construction
|
|
71
|
+
2. **Zero-token overhead** - Scripts run without context loading
|
|
72
|
+
3. **Automatic fallback** - Scripts handle topic → general → error chains
|
|
73
|
+
4. **Progressive disclosure** - Load workflows/references only when needed
|
|
74
|
+
5. **Agent distribution** - Scripts recommend parallel agent strategy
|
|
75
|
+
|
|
76
|
+
## Quick Start
|
|
77
|
+
|
|
78
|
+
**Topic query:** "How do I use date picker in shadcn?"
|
|
79
|
+
```bash
|
|
80
|
+
node scripts/detect-topic.js "<query>" # → {topic, library, isTopicSpecific}
|
|
81
|
+
node scripts/fetch-docs.js "<query>" # → 2-3 URLs
|
|
82
|
+
# Read URLs with WebFetch
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
**General query:** "Documentation for Next.js"
|
|
86
|
+
```bash
|
|
87
|
+
node scripts/detect-topic.js "<query>" # → {isTopicSpecific: false}
|
|
88
|
+
node scripts/fetch-docs.js "<query>" # → 8+ URLs
|
|
89
|
+
cat llms.txt | node scripts/analyze-llms-txt.js - # → {totalUrls, distribution}
|
|
90
|
+
# Deploy agents per recommendation
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
## Environment
|
|
94
|
+
|
|
95
|
+
Scripts use `process.env.DEBUG=true` for debug output. No API keys required.
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "docs-seeker-scripts",
|
|
3
|
+
"version": "3.0.0",
|
|
4
|
+
"description": "Documentation discovery scripts for docs-seeker skill",
|
|
5
|
+
"private": true,
|
|
6
|
+
"scripts": {
|
|
7
|
+
"test": "node scripts/tests/run-tests.js",
|
|
8
|
+
"test:detect": "node scripts/tests/test-detect-topic.js",
|
|
9
|
+
"test:fetch": "node scripts/tests/test-fetch-docs.js",
|
|
10
|
+
"test:analyze": "node scripts/tests/test-analyze-llms.js"
|
|
11
|
+
},
|
|
12
|
+
"keywords": [
|
|
13
|
+
"documentation",
|
|
14
|
+
"llms.txt",
|
|
15
|
+
"context7",
|
|
16
|
+
"docs-discovery"
|
|
17
|
+
],
|
|
18
|
+
"license": "MIT",
|
|
19
|
+
"dependencies": {},
|
|
20
|
+
"devDependencies": {},
|
|
21
|
+
"engines": {
|
|
22
|
+
"node": ">=14.0.0"
|
|
23
|
+
}
|
|
24
|
+
}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
# Advanced Scenarios & Edge Cases
|
|
2
|
+
|
|
3
|
+
## Multi-Language Documentation
|
|
4
|
+
|
|
5
|
+
**Challenge:** Docs in multiple languages
|
|
6
|
+
|
|
7
|
+
**Approach:**
|
|
8
|
+
1. Identify target language from user
|
|
9
|
+
2. Search for language-specific llms.txt
|
|
10
|
+
- `llms-es.txt`, `llms-ja.txt`
|
|
11
|
+
3. Fallback to English if not found
|
|
12
|
+
4. Note language limitations in report
|
|
13
|
+
|
|
14
|
+
## Version-Specific Documentation
|
|
15
|
+
|
|
16
|
+
**Latest (default):**
|
|
17
|
+
- Use base llms.txt URL
|
|
18
|
+
- No version specifier needed
|
|
19
|
+
|
|
20
|
+
**Specific version:**
|
|
21
|
+
```
|
|
22
|
+
WebSearch: "[library] v[version] llms.txt"
|
|
23
|
+
Check paths:
|
|
24
|
+
- /v2/llms.txt
|
|
25
|
+
- /docs/v2/llms.txt
|
|
26
|
+
- /{version}/llms.txt
|
|
27
|
+
|
|
28
|
+
For repos:
|
|
29
|
+
git checkout v[version] or tags/[version]
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
## Framework with Plugins
|
|
33
|
+
|
|
34
|
+
**Challenge:** Core framework + 50 plugins
|
|
35
|
+
|
|
36
|
+
**Strategy:**
|
|
37
|
+
1. Focus on core framework first
|
|
38
|
+
2. Ask user which plugins needed
|
|
39
|
+
3. Launch targeted search for specific plugins
|
|
40
|
+
4. Note available plugins in report
|
|
41
|
+
5. Don't document everything upfront
|
|
42
|
+
|
|
43
|
+
## Documentation Under Construction
|
|
44
|
+
|
|
45
|
+
**Signs:**
|
|
46
|
+
- New release with incomplete docs
|
|
47
|
+
- Many "Coming soon" pages
|
|
48
|
+
- GitHub issues requesting docs
|
|
49
|
+
|
|
50
|
+
**Approach:**
|
|
51
|
+
1. Note status upfront in report
|
|
52
|
+
2. Combine available docs + repo analysis
|
|
53
|
+
3. Check tests/ and examples/ directories
|
|
54
|
+
4. Clearly mark "inferred from code"
|
|
55
|
+
5. Link to GitHub issues for updates
|
|
56
|
+
|
|
57
|
+
## Conflicting Information
|
|
58
|
+
|
|
59
|
+
**When sources disagree:**
|
|
60
|
+
1. Identify primary official source
|
|
61
|
+
2. Note version differences
|
|
62
|
+
3. Present both approaches with context
|
|
63
|
+
4. Recommend official/latest
|
|
64
|
+
5. Explain why conflict exists
|
|
65
|
+
|
|
66
|
+
**Priority order:**
|
|
67
|
+
1. Official docs (latest version)
|
|
68
|
+
2. Official docs (versioned)
|
|
69
|
+
3. GitHub README
|
|
70
|
+
4. Community tutorials
|
|
71
|
+
5. Stack Overflow
|
|
72
|
+
|
|
73
|
+
## Rate Limiting
|
|
74
|
+
|
|
75
|
+
**If hitting API limits:**
|
|
76
|
+
- Implement exponential backoff
|
|
77
|
+
- Cache results in session
|
|
78
|
+
- Batch requests where possible
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
# context7.com URL Patterns
|
|
2
|
+
|
|
3
|
+
## Topic-Specific URLs (Priority #1)
|
|
4
|
+
|
|
5
|
+
**Pattern:** `https://context7.com/{path}/llms.txt?topic={keyword}`
|
|
6
|
+
|
|
7
|
+
**When to use:** User asks about specific feature/component
|
|
8
|
+
|
|
9
|
+
**Examples:**
|
|
10
|
+
```
|
|
11
|
+
shadcn/ui date picker
|
|
12
|
+
→ https://context7.com/shadcn-ui/ui/llms.txt?topic=date
|
|
13
|
+
|
|
14
|
+
Next.js caching
|
|
15
|
+
→ https://context7.com/vercel/next.js/llms.txt?topic=cache
|
|
16
|
+
|
|
17
|
+
Better Auth OAuth
|
|
18
|
+
→ https://context7.com/better-auth/better-auth/llms.txt?topic=oauth
|
|
19
|
+
|
|
20
|
+
FFmpeg compression
|
|
21
|
+
→ https://context7.com/websites/ffmpeg_doxygen_8_0/llms.txt?topic=compress
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
**Benefits:** Returns ONLY relevant docs, 10x faster, minimal tokens
|
|
25
|
+
|
|
26
|
+
## General Library URLs (Priority #2)
|
|
27
|
+
|
|
28
|
+
**GitHub repos:** `https://context7.com/{org}/{repo}/llms.txt`
|
|
29
|
+
|
|
30
|
+
**Websites:** `https://context7.com/websites/{normalized-path}/llms.txt`
|
|
31
|
+
|
|
32
|
+
## Known Repository Mappings
|
|
33
|
+
|
|
34
|
+
```
|
|
35
|
+
next.js → vercel/next.js
|
|
36
|
+
nextjs → vercel/next.js
|
|
37
|
+
astro → withastro/astro
|
|
38
|
+
remix → remix-run/remix
|
|
39
|
+
shadcn → shadcn-ui/ui
|
|
40
|
+
shadcn/ui → shadcn-ui/ui
|
|
41
|
+
better-auth → better-auth/better-auth
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
## Official Site Fallbacks
|
|
45
|
+
|
|
46
|
+
Use ONLY if context7.com unavailable:
|
|
47
|
+
```
|
|
48
|
+
Astro: https://docs.astro.build/llms.txt
|
|
49
|
+
Next.js: https://nextjs.org/llms.txt
|
|
50
|
+
Remix: https://remix.run/llms.txt
|
|
51
|
+
SvelteKit: https://kit.svelte.dev/llms.txt
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
## Topic Keyword Normalization
|
|
55
|
+
|
|
56
|
+
**Rules:**
|
|
57
|
+
- Lowercase
|
|
58
|
+
- Remove special chars
|
|
59
|
+
- Use first word for multi-word topics
|
|
60
|
+
- Max 20 chars
|
|
61
|
+
|
|
62
|
+
**Examples:**
|
|
63
|
+
```
|
|
64
|
+
"date picker" → "date"
|
|
65
|
+
"OAuth" → "oauth"
|
|
66
|
+
"Server-Side" → "server"
|
|
67
|
+
"caching strategies" → "caching"
|
|
68
|
+
```
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
# Error Handling & Fallback Strategies
|
|
2
|
+
|
|
3
|
+
## Error Codes
|
|
4
|
+
|
|
5
|
+
**404 Not Found**
|
|
6
|
+
- Topic-specific URL not available
|
|
7
|
+
- Library not on context7.com
|
|
8
|
+
- llms.txt doesn't exist
|
|
9
|
+
|
|
10
|
+
**Timeout**
|
|
11
|
+
- Network issues
|
|
12
|
+
- Large repository clone
|
|
13
|
+
- Slow API response
|
|
14
|
+
|
|
15
|
+
**Invalid Response**
|
|
16
|
+
- Malformed llms.txt
|
|
17
|
+
- Empty content
|
|
18
|
+
- Invalid URLs
|
|
19
|
+
|
|
20
|
+
## Fallback Chain
|
|
21
|
+
|
|
22
|
+
### For Topic-Specific Queries
|
|
23
|
+
|
|
24
|
+
```
|
|
25
|
+
1. Try topic-specific URL
|
|
26
|
+
https://context7.com/{library}/llms.txt?topic={keyword}
|
|
27
|
+
↓ 404
|
|
28
|
+
2. Try general library URL
|
|
29
|
+
https://context7.com/{library}/llms.txt
|
|
30
|
+
↓ 404
|
|
31
|
+
3. WebSearch for llms.txt
|
|
32
|
+
"[library] llms.txt site:[official domain]"
|
|
33
|
+
↓ Not found
|
|
34
|
+
4. Repository analysis
|
|
35
|
+
Use Repomix on GitHub repo
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
### For General Library Queries
|
|
39
|
+
|
|
40
|
+
```
|
|
41
|
+
1. Try context7.com
|
|
42
|
+
https://context7.com/{library}/llms.txt
|
|
43
|
+
↓ 404
|
|
44
|
+
2. WebSearch for llms.txt
|
|
45
|
+
"[library] llms.txt"
|
|
46
|
+
↓ Not found
|
|
47
|
+
3. Repository analysis
|
|
48
|
+
Clone + Repomix
|
|
49
|
+
↓ No repo
|
|
50
|
+
4. Research agents
|
|
51
|
+
Deploy multiple Researcher agents
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
## Timeout Handling
|
|
55
|
+
|
|
56
|
+
**Set limits:**
|
|
57
|
+
- WebFetch: 60s
|
|
58
|
+
- Repository clone: 5min
|
|
59
|
+
- Repomix: 10min
|
|
60
|
+
|
|
61
|
+
**Fail fast:** Don't retry failed methods
|
|
62
|
+
|
|
63
|
+
## Empty Results
|
|
64
|
+
|
|
65
|
+
**If llms.txt has 0 URLs:**
|
|
66
|
+
→ Note in report
|
|
67
|
+
→ Try repository analysis
|
|
68
|
+
→ Check official website manually
|