@mthanh/vespercli 1.8.0 → 2.0.0
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/README.md +284 -214
- package/assets/CATALOG.md +496 -314
- package/assets/claude/.claude-plugin/marketplace.json +56 -0
- package/assets/claude/.claude-plugin/plugin.json +10 -0
- package/assets/claude/agents/code-reviewer.md +13 -0
- package/assets/claude/agents/feature-wrap-document.md +29 -6
- package/assets/claude/agents/skill-creator.md +1 -1
- package/assets/claude/agents/workspace-learner.md +12 -6
- package/assets/claude/context.md.tpl +1 -1
- package/assets/claude/orchestration.md.tpl +15 -14
- package/assets/claude/packs/backend/.claude-plugin/plugin.json +10 -0
- package/assets/claude/packs/backend/skills/agent-fundamentals/SKILL.md +89 -0
- package/assets/claude/packs/backend/skills/agent-fundamentals/references/codebase-query.md +95 -0
- package/assets/claude/packs/backend/skills/agent-fundamentals/references/terminal-discipline.md +94 -0
- package/assets/claude/packs/backend/skills/agent-fundamentals/references/tool-usage-patterns.md +67 -0
- package/assets/claude/packs/docs/.claude-plugin/plugin.json +10 -0
- package/assets/claude/packs/docs/skills/agent-fundamentals/SKILL.md +89 -0
- package/assets/claude/packs/docs/skills/agent-fundamentals/references/codebase-query.md +95 -0
- package/assets/claude/packs/docs/skills/agent-fundamentals/references/terminal-discipline.md +94 -0
- package/assets/claude/packs/docs/skills/agent-fundamentals/references/tool-usage-patterns.md +67 -0
- package/assets/claude/packs/frontend/.claude-plugin/plugin.json +10 -0
- package/assets/claude/packs/frontend/skills/agent-fundamentals/SKILL.md +89 -0
- package/assets/claude/packs/frontend/skills/agent-fundamentals/references/codebase-query.md +95 -0
- package/assets/claude/packs/frontend/skills/agent-fundamentals/references/terminal-discipline.md +94 -0
- package/assets/claude/packs/frontend/skills/agent-fundamentals/references/tool-usage-patterns.md +67 -0
- package/assets/claude/packs/frontend/skills/nextjs-tailwind/SKILL.md +74 -0
- package/assets/claude/packs/frontend/skills/reactjs/SKILL.md +164 -0
- package/assets/claude/packs/frontend/skills/tailwind-v4-vite/SKILL.md +238 -0
- package/assets/claude/packs/integrations/.claude-plugin/plugin.json +10 -0
- package/assets/claude/packs/integrations/skills/agent-fundamentals/SKILL.md +89 -0
- package/assets/claude/packs/integrations/skills/agent-fundamentals/references/codebase-query.md +95 -0
- package/assets/claude/packs/integrations/skills/agent-fundamentals/references/terminal-discipline.md +94 -0
- package/assets/claude/packs/integrations/skills/agent-fundamentals/references/tool-usage-patterns.md +67 -0
- package/assets/claude/packs/integrations/skills/github-actions-to-gitlab-ci/LICENSE +21 -0
- package/assets/claude/packs/integrations/skills/github-actions-to-gitlab-ci/SKILL.md +370 -0
- package/assets/claude/packs/integrations/skills/github-actions-to-gitlab-ci/UPSTREAM.json +7 -0
- package/assets/claude/packs/integrations/skills/github-actions-to-gitlab-ci/references/marketplace-actions.md +1042 -0
- package/assets/claude/packs/integrations/skills/github-actions-to-gitlab-ci/references/syntax-mapping.md +906 -0
- package/assets/claude/packs/integrations/skills/github-actions-to-gitlab-ci/references/validator.md +91 -0
- package/assets/claude/packs/integrations/skills/github-actions-to-gitlab-ci/scripts/validate.sh +206 -0
- package/assets/claude/packs/integrations/skills/gitlab-ci-skill/LICENSE +21 -0
- package/assets/claude/packs/integrations/skills/gitlab-ci-skill/SKILL.md +422 -0
- package/assets/claude/packs/integrations/skills/gitlab-ci-skill/UPSTREAM.json +7 -0
- package/assets/claude/packs/integrations/skills/gitlab-ci-skill/examples/README.md +70 -0
- package/assets/claude/packs/integrations/skills/gitlab-ci-skill/examples/node-mocha/.gitlab-ci.yml +55 -0
- package/assets/claude/packs/integrations/skills/gitlab-ci-skill/examples/node-mocha/README.md +28 -0
- package/assets/claude/packs/integrations/skills/gitlab-ci-skill/examples/python-click/.gitlab-ci.yml +133 -0
- package/assets/claude/packs/integrations/skills/gitlab-ci-skill/examples/python-click/README.md +31 -0
- package/assets/claude/packs/integrations/skills/gitlab-ci-skill/examples/python-uv-tox/.gitlab-ci.after-layered.yml +59 -0
- package/assets/claude/packs/integrations/skills/gitlab-ci-skill/examples/python-uv-tox/.gitlab-ci.before.yml +34 -0
- package/assets/claude/packs/integrations/skills/gitlab-ci-skill/examples/python-uv-tox/.gitlab-ci.broken.yml +49 -0
- package/assets/claude/packs/integrations/skills/gitlab-ci-skill/examples/python-uv-tox/.gitlab-ci.optimized.yml +65 -0
- package/assets/claude/packs/integrations/skills/gitlab-ci-skill/examples/python-uv-tox/.gitlab-ci.yml +101 -0
- package/assets/claude/packs/integrations/skills/gitlab-ci-skill/examples/python-uv-tox/README.md +42 -0
- package/assets/claude/packs/integrations/skills/gitlab-ci-skill/references/caching.md +170 -0
- package/assets/claude/packs/integrations/skills/gitlab-ci-skill/references/catalog.md +173 -0
- package/assets/claude/packs/integrations/skills/gitlab-ci-skill/references/debugging.md +168 -0
- package/assets/claude/packs/integrations/skills/gitlab-ci-skill/references/images.md +79 -0
- package/assets/claude/packs/integrations/skills/gitlab-ci-skill/references/mental-model.md +96 -0
- package/assets/claude/packs/integrations/skills/gitlab-ci-skill/references/onboarding.md +122 -0
- package/assets/claude/packs/integrations/skills/gitlab-ci-skill/references/optimize.md +301 -0
- package/assets/claude/packs/integrations/skills/gitlab-ci-skill/references/recipes.md +426 -0
- package/assets/claude/packs/integrations/skills/gitlab-ci-skill/references/syntax.md +319 -0
- package/assets/claude/packs/integrations/skills/gitlab-ci-skill/references/verification.md +278 -0
- package/assets/claude/packs/integrations/skills/gitlab-ci-skill/scripts/catalog-search.sh +76 -0
- package/assets/claude/packs/integrations/skills/gitlab-ci-skill/scripts/verify.sh +332 -0
- package/assets/claude/packs/integrations/skills/gitlab-guardrails/SKILL.md +62 -0
- package/assets/claude/packs/playwright/.claude-plugin/plugin.json +10 -0
- package/assets/claude/packs/playwright/skills/agent-fundamentals/SKILL.md +89 -0
- package/assets/claude/packs/playwright/skills/agent-fundamentals/references/codebase-query.md +95 -0
- package/assets/claude/packs/playwright/skills/agent-fundamentals/references/terminal-discipline.md +94 -0
- package/assets/claude/packs/playwright/skills/agent-fundamentals/references/tool-usage-patterns.md +67 -0
- package/assets/claude/packs/playwright/skills/playwright-generate-test/SKILL.md +25 -0
- package/assets/claude/packs/polyglot/.claude-plugin/plugin.json +10 -0
- package/assets/claude/packs/polyglot/skills/agent-fundamentals/SKILL.md +89 -0
- package/assets/claude/packs/polyglot/skills/agent-fundamentals/references/codebase-query.md +95 -0
- package/assets/claude/packs/polyglot/skills/agent-fundamentals/references/terminal-discipline.md +94 -0
- package/assets/claude/packs/polyglot/skills/agent-fundamentals/references/tool-usage-patterns.md +67 -0
- package/assets/claude/packs/polyglot/skills/flutter/SKILL.md +449 -0
- package/assets/claude/packs/polyglot/skills/google-adk-python/SKILL.md +242 -0
- package/assets/claude/packs/polyglot/skills/java/SKILL.md +83 -0
- package/assets/claude/packs/styles/.claude-plugin/plugin.json +10 -0
- package/assets/claude/packs/styles/skills/agent-fundamentals/SKILL.md +89 -0
- package/assets/claude/packs/styles/skills/agent-fundamentals/references/codebase-query.md +95 -0
- package/assets/claude/packs/styles/skills/agent-fundamentals/references/terminal-discipline.md +94 -0
- package/assets/claude/packs/styles/skills/agent-fundamentals/references/tool-usage-patterns.md +67 -0
- package/assets/claude/packs/styles/skills/i-have-adhd/UPSTREAM.json +7 -0
- package/assets/claude/packs/styles/skills/ponytail/UPSTREAM.json +7 -0
- package/assets/claude/skills/create-specification/SKILL.md +136 -0
- package/assets/claude/skills/document/SKILL.md +5 -0
- package/assets/claude/skills/mcp-memory/SKILL.md +13 -13
- package/assets/claude/skills/mcp-memory/references/agent-memory-protocol.md +33 -42
- package/assets/claude/skills/mcp-memory/references/entity-schema.md +7 -26
- package/assets/claude/skills/mcp-memory/references/memory-hygiene.md +1 -4
- package/assets/claude/skills/project-management/SKILL.md +5 -0
- package/assets/claude/skills/repo-story-time/SKILL.md +134 -0
- package/assets/claude/skills/self-explanatory-code-commenting/SKILL.md +3 -1
- package/assets/claude/skills/skill-creator/SKILL.md +1 -1
- package/assets/claude/skills/task-implementation/SKILL.md +2 -0
- package/assets/claude/skills/vesper-catalog-editing-safety/SKILL.md +82 -52
- package/assets/claude/skills/vesper-orchestration/SKILL.md +71 -0
- package/assets/claude/skills/vesper-orchestration/references/implement-pipeline.md +337 -0
- package/assets/claude/skills/vesper-orchestration/references/multi-task-dispatch.md +13 -0
- package/assets/claude/skills/vesper-orchestration/references/qa-e2e-pipeline.md +160 -0
- package/assets/claude/skills/vesper-orchestration/references/reinit-pipeline.md +98 -0
- package/assets/claude/skills/vesper-orchestration/references/research-plan-pipeline.md +214 -0
- package/assets/claude/skills/vscode-agent-config/SKILL.md +5 -0
- package/assets/claude/vesper-orchestrator.md +211 -161
- package/assets/claude-committed/agents/vesper-orchestrator.md +31 -0
- package/assets/claude-committed/skills/compact-knowledge/SKILL.md +32 -0
- package/assets/claude-committed/skills/reinit/SKILL.md +22 -0
- package/assets/claude-committed/skills/revalidate-knowledge/SKILL.md +44 -0
- package/assets/claude-committed/skills/revalidate-team/SKILL.md +25 -0
- package/assets/copilot/agents/code-planner.agent.md +418 -0
- package/assets/copilot/agents/code-reviewer.agent.md +90 -0
- package/assets/copilot/agents/code-tester.agent.md +23 -0
- package/assets/copilot/agents/context7.agent.md +897 -0
- package/assets/copilot/agents/copywriter.agent.md +182 -0
- package/assets/copilot/agents/feature-wrap-document.agent.md +713 -0
- package/assets/copilot/agents/janitor.agent.md +103 -0
- package/assets/copilot/agents/modernization.agent.md +646 -0
- package/assets/copilot/agents/principal-software-engineer.agent.md +50 -0
- package/assets/copilot/agents/refine-issue.agent.md +39 -0
- package/assets/copilot/agents/se-system-architecture-reviewer.agent.md +190 -0
- package/assets/copilot/agents/se-technical-writer.agent.md +432 -0
- package/assets/copilot/agents/skill-creator.agent.md +395 -0
- package/assets/copilot/agents/task-researcher.agent.md +294 -0
- package/assets/copilot/agents/technical-product-manager.agent.md +316 -0
- package/assets/copilot/agents/vision-analyst.agent.md +92 -0
- package/assets/copilot/agents/vitest.agent.md +603 -0
- package/assets/copilot/agents/workspace-learner.agent.md +439 -0
- package/assets/copilot/instructions-extended/flutter/flutter.instructions.md +447 -0
- package/assets/copilot/instructions-extended/java/java.instructions.md +81 -0
- package/assets/copilot/instructions-extended/nextjs-tailwind/nextjs-tailwind.instructions.md +72 -0
- package/assets/copilot/instructions-extended/reactjs/reactjs.instructions.md +162 -0
- package/assets/copilot/instructions-extended/self-explanatory-code-commenting/self-explanatory-code-commenting.instructions.md +162 -0
- package/assets/copilot/instructions-extended/tailwind-v4-vite/tailwind-v4-vite.instructions.md +236 -0
- package/assets/copilot/instructions-extended/task-implementation/task-implementation.instructions.md +223 -0
- package/assets/copilot/packs/backend/agents/firebase-developer.agent.md +701 -0
- package/assets/copilot/packs/backend/agents/nodejs-express-developer.agent.md +619 -0
- package/assets/copilot/packs/backend/skills/nestjs/SKILL.md +425 -0
- package/assets/copilot/packs/docs/skills/ai-multimodal/SKILL.md +357 -0
- package/assets/copilot/packs/frontend/agents/expert-nextjs-developer.agent.md +489 -0
- package/assets/copilot/packs/frontend/agents/expert-react-frontend-engineer.agent.md +751 -0
- package/assets/copilot/packs/frontend/agents/jest-react-component-analyzer.agent.md +303 -0
- package/assets/copilot/packs/frontend/agents/jest-react-scenario-scanner.agent.md +236 -0
- package/assets/copilot/packs/frontend/agents/jest-react-test-generator.agent.md +605 -0
- package/assets/copilot/packs/frontend/agents/jest-react-test-planner.agent.md +461 -0
- package/assets/copilot/packs/frontend/agents/jest-react-test-runner.agent.md +332 -0
- package/assets/copilot/packs/frontend/skills/nextjs/SKILL.md +179 -0
- package/assets/copilot/packs/integrations/agents/clickup-agent.agent.md +135 -0
- package/assets/copilot/packs/integrations/skills/github-actions-to-gitlab-ci/LICENSE +21 -0
- package/assets/copilot/packs/integrations/skills/github-actions-to-gitlab-ci/SKILL.md +370 -0
- package/assets/copilot/packs/integrations/skills/github-actions-to-gitlab-ci/UPSTREAM.json +7 -0
- package/assets/copilot/packs/integrations/skills/github-actions-to-gitlab-ci/references/marketplace-actions.md +1042 -0
- package/assets/copilot/packs/integrations/skills/github-actions-to-gitlab-ci/references/syntax-mapping.md +906 -0
- package/assets/copilot/packs/integrations/skills/github-actions-to-gitlab-ci/references/validator.md +91 -0
- package/assets/copilot/packs/integrations/skills/github-actions-to-gitlab-ci/scripts/validate.sh +206 -0
- package/assets/copilot/packs/integrations/skills/gitlab-ci-skill/LICENSE +21 -0
- package/assets/copilot/packs/integrations/skills/gitlab-ci-skill/SKILL.md +422 -0
- package/assets/copilot/packs/integrations/skills/gitlab-ci-skill/UPSTREAM.json +7 -0
- package/assets/copilot/packs/integrations/skills/gitlab-ci-skill/examples/README.md +70 -0
- package/assets/copilot/packs/integrations/skills/gitlab-ci-skill/examples/node-mocha/.gitlab-ci.yml +55 -0
- package/assets/copilot/packs/integrations/skills/gitlab-ci-skill/examples/node-mocha/README.md +28 -0
- package/assets/copilot/packs/integrations/skills/gitlab-ci-skill/examples/python-click/.gitlab-ci.yml +133 -0
- package/assets/copilot/packs/integrations/skills/gitlab-ci-skill/examples/python-click/README.md +31 -0
- package/assets/copilot/packs/integrations/skills/gitlab-ci-skill/examples/python-uv-tox/.gitlab-ci.after-layered.yml +59 -0
- package/assets/copilot/packs/integrations/skills/gitlab-ci-skill/examples/python-uv-tox/.gitlab-ci.before.yml +34 -0
- package/assets/copilot/packs/integrations/skills/gitlab-ci-skill/examples/python-uv-tox/.gitlab-ci.broken.yml +49 -0
- package/assets/copilot/packs/integrations/skills/gitlab-ci-skill/examples/python-uv-tox/.gitlab-ci.optimized.yml +65 -0
- package/assets/copilot/packs/integrations/skills/gitlab-ci-skill/examples/python-uv-tox/.gitlab-ci.yml +101 -0
- package/assets/copilot/packs/integrations/skills/gitlab-ci-skill/examples/python-uv-tox/README.md +42 -0
- package/assets/copilot/packs/integrations/skills/gitlab-ci-skill/references/caching.md +170 -0
- package/assets/copilot/packs/integrations/skills/gitlab-ci-skill/references/catalog.md +173 -0
- package/assets/copilot/packs/integrations/skills/gitlab-ci-skill/references/debugging.md +168 -0
- package/assets/copilot/packs/integrations/skills/gitlab-ci-skill/references/images.md +79 -0
- package/assets/copilot/packs/integrations/skills/gitlab-ci-skill/references/mental-model.md +96 -0
- package/assets/copilot/packs/integrations/skills/gitlab-ci-skill/references/onboarding.md +122 -0
- package/assets/copilot/packs/integrations/skills/gitlab-ci-skill/references/optimize.md +301 -0
- package/assets/copilot/packs/integrations/skills/gitlab-ci-skill/references/recipes.md +426 -0
- package/assets/copilot/packs/integrations/skills/gitlab-ci-skill/references/syntax.md +319 -0
- package/assets/copilot/packs/integrations/skills/gitlab-ci-skill/references/verification.md +278 -0
- package/assets/copilot/packs/integrations/skills/gitlab-ci-skill/scripts/catalog-search.sh +76 -0
- package/assets/copilot/packs/integrations/skills/gitlab-ci-skill/scripts/verify.sh +332 -0
- package/assets/copilot/packs/integrations/skills/gitlab-guardrails/SKILL.md +62 -0
- package/assets/copilot/packs/playwright/agents/playwright-component-analyzer.agent.md +216 -0
- package/assets/copilot/packs/playwright/agents/playwright-scenario-scanner.agent.md +180 -0
- package/assets/copilot/packs/playwright/agents/playwright-test-generator.agent.md +410 -0
- package/assets/copilot/packs/playwright/agents/playwright-test-planner.agent.md +398 -0
- package/assets/copilot/packs/playwright/agents/playwright-tester.agent.md +65 -0
- package/assets/copilot/packs/playwright/skills/chrome-devtools/SKILL.md +360 -0
- package/assets/copilot/packs/playwright/skills/chrome-devtools/scripts/README.md +213 -0
- package/assets/copilot/packs/playwright/skills/playwright-generate-test/SKILL.md +25 -0
- package/assets/copilot/packs/playwright/skills/playwright-typescript/SKILL.md +86 -0
- package/assets/copilot/packs/polyglot/skills/flutter/SKILL.md +447 -0
- package/assets/copilot/packs/polyglot/skills/google-adk-python/SKILL.md +242 -0
- package/assets/copilot/packs/styles/skills/i-have-adhd/LICENSE +21 -0
- package/assets/copilot/packs/styles/skills/i-have-adhd/SKILL.md +142 -0
- package/assets/copilot/packs/styles/skills/i-have-adhd/UPSTREAM.json +7 -0
- package/assets/copilot/packs/styles/skills/ponytail/LICENSE +21 -0
- package/assets/copilot/packs/styles/skills/ponytail/SKILL.md +120 -0
- package/assets/copilot/packs/styles/skills/ponytail/UPSTREAM.json +7 -0
- package/assets/copilot/prompts/compact-knowledge.prompt.md +27 -0
- package/assets/copilot/prompts/reinit.prompt.md +19 -0
- package/assets/copilot/prompts/revalidate-knowledge.prompt.md +39 -0
- package/assets/copilot/prompts/revalidate-team.prompt.md +21 -0
- package/assets/copilot/skills/agent-fundamentals/SKILL.md +89 -0
- package/assets/copilot/skills/agent-fundamentals/references/codebase-query.md +95 -0
- package/assets/copilot/skills/agent-fundamentals/references/terminal-discipline.md +94 -0
- package/assets/copilot/skills/agent-fundamentals/references/tool-usage-patterns.md +67 -0
- package/assets/copilot/skills/create-specification/SKILL.md +136 -0
- package/assets/copilot/skills/document/SKILL.md +45 -0
- package/assets/copilot/skills/mcp-memory/SKILL.md +97 -0
- package/assets/copilot/skills/mcp-memory/references/agent-memory-protocol.md +186 -0
- package/assets/copilot/skills/mcp-memory/references/entity-schema.md +141 -0
- package/assets/copilot/skills/mcp-memory/references/memory-hygiene.md +163 -0
- package/assets/copilot/skills/nodejs-javascript-vitest/SKILL.md +34 -0
- package/assets/copilot/skills/project-management/SKILL.md +129 -0
- package/assets/copilot/skills/repo-story-time/SKILL.md +134 -0
- package/assets/copilot/skills/self-explanatory-code-commenting/SKILL.md +162 -0
- package/assets/copilot/skills/sequential-thinking/README.md +118 -0
- package/assets/copilot/skills/skill-creator/SKILL.md +237 -0
- package/assets/copilot/skills/skill-creator/agent_skills_spec.md +55 -0
- package/assets/copilot/skills/task-implementation/SKILL.md +223 -0
- package/assets/copilot/skills/vesper-catalog-editing-safety/SKILL.md +172 -0
- package/assets/copilot/skills/vesper-orchestration/SKILL.md +71 -0
- package/assets/copilot/skills/vesper-orchestration/references/implement-pipeline.md +337 -0
- package/assets/copilot/skills/vesper-orchestration/references/multi-task-dispatch.md +13 -0
- package/assets/copilot/skills/vesper-orchestration/references/qa-e2e-pipeline.md +160 -0
- package/assets/copilot/skills/vesper-orchestration/references/reinit-pipeline.md +98 -0
- package/assets/copilot/skills/vesper-orchestration/references/research-plan-pipeline.md +214 -0
- package/assets/copilot/skills/vscode-agent-config/SKILL.md +95 -0
- package/assets/hooks/post-checkout +33 -14
- package/assets/hooks/pre-commit +54 -39
- package/assets/legacy/claude-1x-digests.json +3354 -0
- package/assets/manifest.json +174 -6
- package/dist/cli.min.js +184 -51
- package/package.json +11 -2
- package/scripts/__snapshots__/generate-claude-assets.test.js.snap +31 -0
- package/scripts/generate-claude-assets.js +569 -529
- package/scripts/generate-claude-assets.strict.test.js +303 -0
- package/scripts/generate-claude-assets.test.js +605 -168
- package/scripts/generate-legacy-digests.js +192 -0
- package/scripts/generate-manifests.js +26 -147
- package/scripts/packs-layout.test.js +378 -0
- package/src/mcp/vesper-indexing/dist/cli-index.js +0 -1
- package/src/mcp/vesper-indexing/dist/cli-index.js.map +1 -1
- package/assets/agents/clickup-agent/clickup-agent.agent.md +0 -135
- package/assets/agents/code-tester/code-tester.agent.md +0 -35
- package/assets/agents/context7/context7.agent.md +0 -901
- package/assets/agents/copywriter/copywriter.agent.md +0 -182
- package/assets/agents/expert-nextjs-developer/expert-nextjs-developer.agent.md +0 -502
- package/assets/agents/expert-react-frontend-engineer/expert-react-frontend-engineer.agent.md +0 -785
- package/assets/agents/firebase-developer/firebase-developer.agent.md +0 -714
- package/assets/agents/janitor/janitor.agent.md +0 -136
- package/assets/agents/jest-react-component-analyzer/jest-react-component-analyzer.agent.md +0 -308
- package/assets/agents/jest-react-scenario-scanner/jest-react-scenario-scanner.agent.md +0 -236
- package/assets/agents/jest-react-test-generator/jest-react-test-generator.agent.md +0 -605
- package/assets/agents/jest-react-test-planner/jest-react-test-planner.agent.md +0 -461
- package/assets/agents/jest-react-test-runner/jest-react-test-runner.agent.md +0 -332
- package/assets/agents/modernization/modernization.agent.md +0 -660
- package/assets/agents/nodejs-express-developer/nodejs-express-developer.agent.md +0 -632
- package/assets/agents/playwright-component-analyzer/playwright-component-analyzer.agent.md +0 -221
- package/assets/agents/playwright-scenario-scanner/playwright-scenario-scanner.agent.md +0 -180
- package/assets/agents/playwright-test-generator/playwright-test-generator.agent.md +0 -410
- package/assets/agents/playwright-test-planner/playwright-test-planner.agent.md +0 -398
- package/assets/agents/playwright-tester/playwright-tester.agent.md +0 -65
- package/assets/agents/refine-issue/refine-issue.agent.md +0 -39
- package/assets/agents/vitest/vitest.agent.md +0 -603
- package/assets/claude/agents/history-logger.md +0 -102
- package/assets/claude/commands/compact-knowledge.md +0 -10
- package/assets/claude/commands/create-specification.md +0 -131
- package/assets/claude/commands/playwright-generate-test.md +0 -24
- package/assets/claude/commands/reinit.md +0 -5
- package/assets/claude/commands/repo-story-time.md +0 -154
- package/assets/claude/commands/revalidate-knowledge.md +0 -17
- package/assets/claude/commands/revalidate-team.md +0 -5
- package/assets/claude/skills/gitlab-guardrails/SKILL.md +0 -62
- package/assets/claude/skills/google-adk-python/SKILL.md +0 -237
- package/assets/core/agents/code-planner.agent.md +0 -454
- package/assets/core/agents/code-reviewer.agent.md +0 -98
- package/assets/core/agents/feature-wrap-document.agent.md +0 -593
- package/assets/core/agents/history-logger.agent.md +0 -112
- package/assets/core/agents/principal-software-engineer.agent.md +0 -80
- package/assets/core/agents/se-system-architecture-reviewer.agent.md +0 -203
- package/assets/core/agents/se-technical-writer.agent.md +0 -446
- package/assets/core/agents/skill-creator.agent.md +0 -441
- package/assets/core/agents/task-researcher.agent.md +0 -329
- package/assets/core/agents/technical-product-manager.agent.md +0 -328
- package/assets/core/agents/vesper.agent.md +0 -679
- package/assets/core/agents/vision-analyst.agent.md +0 -93
- package/assets/core/agents/workspace-learner.agent.md +0 -509
- package/assets/core/instructions/terminal-discipline.instructions.md +0 -27
- package/assets/core/instructions/vesper-cli-development.instructions.md +0 -85
- package/assets/core/instructions/vesper-implement.instructions.md +0 -250
- package/assets/core/instructions/vesper-qa-e2e.instructions.md +0 -155
- package/assets/core/instructions/vesper-reinit.instructions.md +0 -99
- package/assets/core/instructions/vesper-research-plan.instructions.md +0 -193
- package/assets/core/instructions/vscode-mcp-tools.instructions.md +0 -138
- package/assets/core/prompts/compact-knowledge.prompt.md +0 -14
- package/assets/core/prompts/memory-update.prompt.md +0 -94
- package/assets/core/prompts/revalidate-knowledge.prompt.md +0 -19
- package/assets/core/skills/agent-fundamentals/SKILL.md +0 -75
- package/assets/core/skills/agent-fundamentals/references/codebase-query.md +0 -106
- package/assets/core/skills/agent-fundamentals/references/terminal-discipline.md +0 -94
- package/assets/core/skills/agent-fundamentals/references/tool-usage-patterns.md +0 -72
- package/assets/core/skills/mcp-memory/SKILL.md +0 -109
- package/assets/core/skills/mcp-memory/references/agent-memory-protocol.md +0 -195
- package/assets/core/skills/mcp-memory/references/entity-schema.md +0 -160
- package/assets/core/skills/mcp-memory/references/memory-hygiene.md +0 -166
- package/assets/core/skills/vesper-orchestration/SKILL.md +0 -31
- package/assets/core/skills/vesper-orchestration/references/implement-pipeline.md +0 -244
- package/assets/core/skills/vesper-orchestration/references/qa-e2e-pipeline.md +0 -151
- package/assets/core/skills/vesper-orchestration/references/reinit-pipeline.md +0 -87
- package/assets/core/skills/vesper-orchestration/references/research-plan-pipeline.md +0 -189
- package/assets/instructions/document/document.instructions.md +0 -40
- package/assets/instructions/flutter/dart-n-flutter.instructions.md +0 -447
- package/assets/instructions/java/java.instructions.md +0 -81
- package/assets/instructions/nestjs/nestjs.instructions.md +0 -424
- package/assets/instructions/nextjs/nextjs.instructions.md +0 -178
- package/assets/instructions/nextjs-tailwind/nextjs-tailwind.instructions.md +0 -72
- package/assets/instructions/nodejs-javascript-vitest/nodejs-javascript-vitest.instructions.md +0 -33
- package/assets/instructions/playwright-typescript/playwright-typescript.instructions.md +0 -85
- package/assets/instructions/project-management/project-management.instructions.md +0 -124
- package/assets/instructions/reactjs/reactjs.instructions.md +0 -162
- package/assets/instructions/self-explanatory-code-commenting/self-explanatory-code-commenting.instructions.md +0 -162
- package/assets/instructions/tailwind-v4-vite/tailwind-v4-vite.instructions.md +0 -236
- package/assets/instructions/task-implementation/task-implementation.instructions.md +0 -223
- package/assets/prompts/create-specification/create-specification.prompt.md +0 -151
- package/assets/prompts/playwright-generate-test/playwright-generate-test.prompt.md +0 -26
- package/assets/prompts/repo-story-time/repo-story-time.prompt.md +0 -156
- package/assets/skills/.env.example +0 -32
- package/assets/skills/.mcp.json.example +0 -19
- package/assets/skills/README.md +0 -111
- package/assets/skills/aesthetic/manifest.json +0 -14
- package/assets/skills/ai-multimodal/SKILL.md +0 -357
- package/assets/skills/ai-multimodal/manifest.json +0 -20
- package/assets/skills/backend-development/manifest.json +0 -19
- package/assets/skills/better-auth/manifest.json +0 -15
- package/assets/skills/chrome-devtools/SKILL.md +0 -360
- package/assets/skills/chrome-devtools/manifest.json +0 -31
- package/assets/skills/chrome-devtools/scripts/README.md +0 -213
- package/assets/skills/code-review/manifest.json +0 -11
- package/assets/skills/databases/manifest.json +0 -25
- package/assets/skills/debugging/manifest.json +0 -17
- package/assets/skills/devops/manifest.json +0 -25
- package/assets/skills/docs-seeker/manifest.json +0 -15
- package/assets/skills/document-skills/manifest.json +0 -137
- package/assets/skills/frontend-design/manifest.json +0 -9
- package/assets/skills/gitlab-guardrails/SKILL.md +0 -62
- package/assets/skills/gitlab-guardrails/manifest.json +0 -8
- package/assets/skills/google-adk-python/SKILL.md +0 -237
- package/assets/skills/google-adk-python/manifest.json +0 -8
- package/assets/skills/mcp-builder/manifest.json +0 -17
- package/assets/skills/mermaidjs-v11/manifest.json +0 -13
- package/assets/skills/premium-frontend-ui/manifest.json +0 -8
- package/assets/skills/problem-solving/manifest.json +0 -14
- package/assets/skills/react-mui-tanstack/manifest.json +0 -18
- package/assets/skills/sequential-thinking/README.md +0 -118
- package/assets/skills/sequential-thinking/manifest.json +0 -11
- package/assets/skills/skill-creator/SKILL.md +0 -237
- package/assets/skills/skill-creator/manifest.json +0 -12
- package/assets/skills/tailwind-shadcn/manifest.json +0 -104
- package/assets/skills/vercel-react-best-practices/manifest.json +0 -60
- package/assets/skills/vesper-catalog-editing-safety/SKILL.md +0 -142
- package/assets/skills/vesper-catalog-editing-safety/manifest.json +0 -8
- package/assets/skills/vscode-agent-config/SKILL.md +0 -90
- package/assets/skills/vscode-agent-config/manifest.json +0 -8
- package/assets/skills/web-design-guidelines/manifest.json +0 -8
- package/assets/skills/web-frameworks/manifest.json +0 -24
- package/assets/vendor/i-have-adhd/VENDOR.md +0 -56
- package/assets/vendor/ponytail/VENDOR.md +0 -115
- /package/assets/claude/{agents → packs/backend/agents}/firebase-developer.md +0 -0
- /package/assets/claude/{agents → packs/backend/agents}/nodejs-express-developer.md +0 -0
- /package/assets/claude/{skills → packs/backend/skills}/backend-development/SKILL.md +0 -0
- /package/assets/claude/{skills → packs/backend/skills}/backend-development/references/backend-api-design.md +0 -0
- /package/assets/claude/{skills → packs/backend/skills}/backend-development/references/backend-architecture.md +0 -0
- /package/assets/claude/{skills → packs/backend/skills}/backend-development/references/backend-authentication.md +0 -0
- /package/assets/claude/{skills → packs/backend/skills}/backend-development/references/backend-code-quality.md +0 -0
- /package/assets/claude/{skills → packs/backend/skills}/backend-development/references/backend-debugging.md +0 -0
- /package/assets/claude/{skills → packs/backend/skills}/backend-development/references/backend-devops.md +0 -0
- /package/assets/claude/{skills → packs/backend/skills}/backend-development/references/backend-mindset.md +0 -0
- /package/assets/claude/{skills → packs/backend/skills}/backend-development/references/backend-performance.md +0 -0
- /package/assets/claude/{skills → packs/backend/skills}/backend-development/references/backend-security.md +0 -0
- /package/assets/claude/{skills → packs/backend/skills}/backend-development/references/backend-technologies.md +0 -0
- /package/assets/claude/{skills → packs/backend/skills}/backend-development/references/backend-testing.md +0 -0
- /package/assets/claude/{skills → packs/backend/skills}/better-auth/SKILL.md +0 -0
- /package/assets/claude/{skills → packs/backend/skills}/better-auth/references/advanced-features.md +0 -0
- /package/assets/claude/{skills → packs/backend/skills}/better-auth/references/database-integration.md +0 -0
- /package/assets/claude/{skills → packs/backend/skills}/better-auth/references/email-password-auth.md +0 -0
- /package/assets/claude/{skills → packs/backend/skills}/better-auth/references/oauth-providers.md +0 -0
- /package/assets/claude/{skills → packs/backend/skills}/better-auth/scripts/.coverage +0 -0
- /package/assets/claude/{skills → packs/backend/skills}/better-auth/scripts/better_auth_init.py +0 -0
- /package/assets/claude/{skills → packs/backend/skills}/better-auth/scripts/requirements.txt +0 -0
- /package/assets/claude/{skills → packs/backend/skills}/better-auth/scripts/tests/.coverage +0 -0
- /package/assets/claude/{skills → packs/backend/skills}/better-auth/scripts/tests/test_better_auth_init.py +0 -0
- /package/assets/claude/{skills → packs/backend/skills}/databases/SKILL.md +0 -0
- /package/assets/claude/{skills → packs/backend/skills}/databases/references/mongodb-aggregation.md +0 -0
- /package/assets/claude/{skills → packs/backend/skills}/databases/references/mongodb-atlas.md +0 -0
- /package/assets/claude/{skills → packs/backend/skills}/databases/references/mongodb-crud.md +0 -0
- /package/assets/claude/{skills → packs/backend/skills}/databases/references/mongodb-indexing.md +0 -0
- /package/assets/claude/{skills → packs/backend/skills}/databases/references/postgresql-administration.md +0 -0
- /package/assets/claude/{skills → packs/backend/skills}/databases/references/postgresql-performance.md +0 -0
- /package/assets/claude/{skills → packs/backend/skills}/databases/references/postgresql-psql-cli.md +0 -0
- /package/assets/claude/{skills → packs/backend/skills}/databases/references/postgresql-queries.md +0 -0
- /package/assets/claude/{skills → packs/backend/skills}/databases/scripts/.coverage +0 -0
- /package/assets/claude/{skills → packs/backend/skills}/databases/scripts/db_backup.py +0 -0
- /package/assets/claude/{skills → packs/backend/skills}/databases/scripts/db_migrate.py +0 -0
- /package/assets/claude/{skills → packs/backend/skills}/databases/scripts/db_performance_check.py +0 -0
- /package/assets/claude/{skills → packs/backend/skills}/databases/scripts/requirements.txt +0 -0
- /package/assets/claude/{skills → packs/backend/skills}/databases/scripts/tests/coverage-db.json +0 -0
- /package/assets/claude/{skills → packs/backend/skills}/databases/scripts/tests/requirements.txt +0 -0
- /package/assets/claude/{skills → packs/backend/skills}/databases/scripts/tests/test_db_backup.py +0 -0
- /package/assets/claude/{skills → packs/backend/skills}/databases/scripts/tests/test_db_migrate.py +0 -0
- /package/assets/claude/{skills → packs/backend/skills}/databases/scripts/tests/test_db_performance_check.py +0 -0
- /package/assets/claude/{skills → packs/backend/skills}/devops/.env.example +0 -0
- /package/assets/claude/{skills → packs/backend/skills}/devops/SKILL.md +0 -0
- /package/assets/claude/{skills → packs/backend/skills}/devops/references/browser-rendering.md +0 -0
- /package/assets/claude/{skills → packs/backend/skills}/devops/references/cloudflare-d1-kv.md +0 -0
- /package/assets/claude/{skills → packs/backend/skills}/devops/references/cloudflare-platform.md +0 -0
- /package/assets/claude/{skills → packs/backend/skills}/devops/references/cloudflare-r2-storage.md +0 -0
- /package/assets/claude/{skills → packs/backend/skills}/devops/references/cloudflare-workers-advanced.md +0 -0
- /package/assets/claude/{skills → packs/backend/skills}/devops/references/cloudflare-workers-apis.md +0 -0
- /package/assets/claude/{skills → packs/backend/skills}/devops/references/cloudflare-workers-basics.md +0 -0
- /package/assets/claude/{skills → packs/backend/skills}/devops/references/docker-basics.md +0 -0
- /package/assets/claude/{skills → packs/backend/skills}/devops/references/docker-compose.md +0 -0
- /package/assets/claude/{skills → packs/backend/skills}/devops/references/gcloud-platform.md +0 -0
- /package/assets/claude/{skills → packs/backend/skills}/devops/references/gcloud-services.md +0 -0
- /package/assets/claude/{skills → packs/backend/skills}/devops/scripts/cloudflare_deploy.py +0 -0
- /package/assets/claude/{skills → packs/backend/skills}/devops/scripts/docker_optimize.py +0 -0
- /package/assets/claude/{skills → packs/backend/skills}/devops/scripts/requirements.txt +0 -0
- /package/assets/claude/{skills → packs/backend/skills}/devops/scripts/tests/requirements.txt +0 -0
- /package/assets/claude/{skills → packs/backend/skills}/devops/scripts/tests/test_cloudflare_deploy.py +0 -0
- /package/assets/claude/{skills → packs/backend/skills}/devops/scripts/tests/test_docker_optimize.py +0 -0
- /package/assets/claude/{skills → packs/backend/skills}/nestjs/SKILL.md +0 -0
- /package/assets/claude/{skills → packs/docs/skills}/ai-multimodal/.env.example +0 -0
- /package/assets/claude/{skills → packs/docs/skills}/ai-multimodal/SKILL.md +0 -0
- /package/assets/claude/{skills → packs/docs/skills}/ai-multimodal/references/audio-processing.md +0 -0
- /package/assets/claude/{skills → packs/docs/skills}/ai-multimodal/references/image-generation.md +0 -0
- /package/assets/claude/{skills → packs/docs/skills}/ai-multimodal/references/video-analysis.md +0 -0
- /package/assets/claude/{skills → packs/docs/skills}/ai-multimodal/references/vision-understanding.md +0 -0
- /package/assets/claude/{skills → packs/docs/skills}/ai-multimodal/scripts/document_converter.py +0 -0
- /package/assets/claude/{skills → packs/docs/skills}/ai-multimodal/scripts/gemini_batch_process.py +0 -0
- /package/assets/claude/{skills → packs/docs/skills}/ai-multimodal/scripts/media_optimizer.py +0 -0
- /package/assets/claude/{skills → packs/docs/skills}/ai-multimodal/scripts/requirements.txt +0 -0
- /package/assets/claude/{skills → packs/docs/skills}/ai-multimodal/scripts/tests/.coverage +0 -0
- /package/assets/claude/{skills → packs/docs/skills}/ai-multimodal/scripts/tests/requirements.txt +0 -0
- /package/assets/claude/{skills → packs/docs/skills}/ai-multimodal/scripts/tests/test_document_converter.py +0 -0
- /package/assets/claude/{skills → packs/docs/skills}/ai-multimodal/scripts/tests/test_gemini_batch_process.py +0 -0
- /package/assets/claude/{skills → packs/docs/skills}/ai-multimodal/scripts/tests/test_media_optimizer.py +0 -0
- /package/assets/claude/{skills → packs/docs/skills}/document-skills/docx/LICENSE.txt +0 -0
- /package/assets/claude/{skills → packs/docs/skills}/document-skills/docx/SKILL.md +0 -0
- /package/assets/claude/{skills → packs/docs/skills}/document-skills/docx/docx-js.md +0 -0
- /package/assets/claude/{skills → packs/docs/skills}/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-chart.xsd +0 -0
- /package/assets/claude/{skills → packs/docs/skills}/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd +0 -0
- /package/assets/claude/{skills → packs/docs/skills}/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd +0 -0
- /package/assets/claude/{skills → packs/docs/skills}/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd +0 -0
- /package/assets/claude/{skills → packs/docs/skills}/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-main.xsd +0 -0
- /package/assets/claude/{skills → packs/docs/skills}/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-picture.xsd +0 -0
- /package/assets/claude/{skills → packs/docs/skills}/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd +0 -0
- /package/assets/claude/{skills → packs/docs/skills}/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd +0 -0
- /package/assets/claude/{skills → packs/docs/skills}/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/pml.xsd +0 -0
- /package/assets/claude/{skills → packs/docs/skills}/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd +0 -0
- /package/assets/claude/{skills → packs/docs/skills}/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd +0 -0
- /package/assets/claude/{skills → packs/docs/skills}/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd +0 -0
- /package/assets/claude/{skills → packs/docs/skills}/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd +0 -0
- /package/assets/claude/{skills → packs/docs/skills}/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd +0 -0
- /package/assets/claude/{skills → packs/docs/skills}/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd +0 -0
- /package/assets/claude/{skills → packs/docs/skills}/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd +0 -0
- /package/assets/claude/{skills → packs/docs/skills}/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd +0 -0
- /package/assets/claude/{skills → packs/docs/skills}/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-math.xsd +0 -0
- /package/assets/claude/{skills → packs/docs/skills}/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd +0 -0
- /package/assets/claude/{skills → packs/docs/skills}/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/sml.xsd +0 -0
- /package/assets/claude/{skills → packs/docs/skills}/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-main.xsd +0 -0
- /package/assets/claude/{skills → packs/docs/skills}/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd +0 -0
- /package/assets/claude/{skills → packs/docs/skills}/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd +0 -0
- /package/assets/claude/{skills → packs/docs/skills}/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd +0 -0
- /package/assets/claude/{skills → packs/docs/skills}/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd +0 -0
- /package/assets/claude/{skills → packs/docs/skills}/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/wml.xsd +0 -0
- /package/assets/claude/{skills → packs/docs/skills}/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/xml.xsd +0 -0
- /package/assets/claude/{skills → packs/docs/skills}/document-skills/docx/ooxml/schemas/ecma/fouth-edition/opc-contentTypes.xsd +0 -0
- /package/assets/claude/{skills → packs/docs/skills}/document-skills/docx/ooxml/schemas/ecma/fouth-edition/opc-coreProperties.xsd +0 -0
- /package/assets/claude/{skills → packs/docs/skills}/document-skills/docx/ooxml/schemas/ecma/fouth-edition/opc-digSig.xsd +0 -0
- /package/assets/claude/{skills → packs/docs/skills}/document-skills/docx/ooxml/schemas/ecma/fouth-edition/opc-relationships.xsd +0 -0
- /package/assets/claude/{skills → packs/docs/skills}/document-skills/docx/ooxml/schemas/mce/mc.xsd +0 -0
- /package/assets/claude/{skills → packs/docs/skills}/document-skills/docx/ooxml/schemas/microsoft/wml-2010.xsd +0 -0
- /package/assets/claude/{skills → packs/docs/skills}/document-skills/docx/ooxml/schemas/microsoft/wml-2012.xsd +0 -0
- /package/assets/claude/{skills → packs/docs/skills}/document-skills/docx/ooxml/schemas/microsoft/wml-2018.xsd +0 -0
- /package/assets/claude/{skills → packs/docs/skills}/document-skills/docx/ooxml/schemas/microsoft/wml-cex-2018.xsd +0 -0
- /package/assets/claude/{skills → packs/docs/skills}/document-skills/docx/ooxml/schemas/microsoft/wml-cid-2016.xsd +0 -0
- /package/assets/claude/{skills → packs/docs/skills}/document-skills/docx/ooxml/schemas/microsoft/wml-sdtdatahash-2020.xsd +0 -0
- /package/assets/claude/{skills → packs/docs/skills}/document-skills/docx/ooxml/schemas/microsoft/wml-symex-2015.xsd +0 -0
- /package/assets/claude/{skills → packs/docs/skills}/document-skills/docx/ooxml/scripts/pack.py +0 -0
- /package/assets/claude/{skills → packs/docs/skills}/document-skills/docx/ooxml/scripts/unpack.py +0 -0
- /package/assets/claude/{skills → packs/docs/skills}/document-skills/docx/ooxml/scripts/validate.py +0 -0
- /package/assets/claude/{skills → packs/docs/skills}/document-skills/docx/ooxml/scripts/validation/__init__.py +0 -0
- /package/assets/claude/{skills → packs/docs/skills}/document-skills/docx/ooxml/scripts/validation/base.py +0 -0
- /package/assets/claude/{skills → packs/docs/skills}/document-skills/docx/ooxml/scripts/validation/docx.py +0 -0
- /package/assets/claude/{skills → packs/docs/skills}/document-skills/docx/ooxml/scripts/validation/pptx.py +0 -0
- /package/assets/claude/{skills → packs/docs/skills}/document-skills/docx/ooxml/scripts/validation/redlining.py +0 -0
- /package/assets/claude/{skills → packs/docs/skills}/document-skills/docx/ooxml.md +0 -0
- /package/assets/claude/{skills → packs/docs/skills}/document-skills/docx/scripts/__init__.py +0 -0
- /package/assets/claude/{skills → packs/docs/skills}/document-skills/docx/scripts/document.py +0 -0
- /package/assets/claude/{skills → packs/docs/skills}/document-skills/docx/scripts/templates/comments.xml +0 -0
- /package/assets/claude/{skills → packs/docs/skills}/document-skills/docx/scripts/templates/commentsExtended.xml +0 -0
- /package/assets/claude/{skills → packs/docs/skills}/document-skills/docx/scripts/templates/commentsExtensible.xml +0 -0
- /package/assets/claude/{skills → packs/docs/skills}/document-skills/docx/scripts/templates/commentsIds.xml +0 -0
- /package/assets/claude/{skills → packs/docs/skills}/document-skills/docx/scripts/templates/people.xml +0 -0
- /package/assets/claude/{skills → packs/docs/skills}/document-skills/docx/scripts/utilities.py +0 -0
- /package/assets/claude/{skills → packs/docs/skills}/document-skills/pdf/LICENSE.txt +0 -0
- /package/assets/claude/{skills → packs/docs/skills}/document-skills/pdf/SKILL.md +0 -0
- /package/assets/claude/{skills → packs/docs/skills}/document-skills/pdf/forms.md +0 -0
- /package/assets/claude/{skills → packs/docs/skills}/document-skills/pdf/reference.md +0 -0
- /package/assets/claude/{skills → packs/docs/skills}/document-skills/pdf/scripts/check_bounding_boxes.py +0 -0
- /package/assets/claude/{skills → packs/docs/skills}/document-skills/pdf/scripts/check_bounding_boxes_test.py +0 -0
- /package/assets/claude/{skills → packs/docs/skills}/document-skills/pdf/scripts/check_fillable_fields.py +0 -0
- /package/assets/claude/{skills → packs/docs/skills}/document-skills/pdf/scripts/convert_pdf_to_images.py +0 -0
- /package/assets/claude/{skills → packs/docs/skills}/document-skills/pdf/scripts/create_validation_image.py +0 -0
- /package/assets/claude/{skills → packs/docs/skills}/document-skills/pdf/scripts/extract_form_field_info.py +0 -0
- /package/assets/claude/{skills → packs/docs/skills}/document-skills/pdf/scripts/fill_fillable_fields.py +0 -0
- /package/assets/claude/{skills → packs/docs/skills}/document-skills/pdf/scripts/fill_pdf_form_with_annotations.py +0 -0
- /package/assets/claude/{skills → packs/docs/skills}/document-skills/pptx/LICENSE.txt +0 -0
- /package/assets/claude/{skills → packs/docs/skills}/document-skills/pptx/SKILL.md +0 -0
- /package/assets/claude/{skills → packs/docs/skills}/document-skills/pptx/html2pptx.md +0 -0
- /package/assets/claude/{skills → packs/docs/skills}/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-chart.xsd +0 -0
- /package/assets/claude/{skills → packs/docs/skills}/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd +0 -0
- /package/assets/claude/{skills → packs/docs/skills}/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd +0 -0
- /package/assets/claude/{skills → packs/docs/skills}/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd +0 -0
- /package/assets/claude/{skills → packs/docs/skills}/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-main.xsd +0 -0
- /package/assets/claude/{skills → packs/docs/skills}/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-picture.xsd +0 -0
- /package/assets/claude/{skills → packs/docs/skills}/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd +0 -0
- /package/assets/claude/{skills → packs/docs/skills}/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd +0 -0
- /package/assets/claude/{skills → packs/docs/skills}/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/pml.xsd +0 -0
- /package/assets/claude/{skills → packs/docs/skills}/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd +0 -0
- /package/assets/claude/{skills → packs/docs/skills}/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd +0 -0
- /package/assets/claude/{skills → packs/docs/skills}/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd +0 -0
- /package/assets/claude/{skills → packs/docs/skills}/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd +0 -0
- /package/assets/claude/{skills → packs/docs/skills}/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd +0 -0
- /package/assets/claude/{skills → packs/docs/skills}/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd +0 -0
- /package/assets/claude/{skills → packs/docs/skills}/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd +0 -0
- /package/assets/claude/{skills → packs/docs/skills}/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd +0 -0
- /package/assets/claude/{skills → packs/docs/skills}/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-math.xsd +0 -0
- /package/assets/claude/{skills → packs/docs/skills}/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd +0 -0
- /package/assets/claude/{skills → packs/docs/skills}/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/sml.xsd +0 -0
- /package/assets/claude/{skills → packs/docs/skills}/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-main.xsd +0 -0
- /package/assets/claude/{skills → packs/docs/skills}/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd +0 -0
- /package/assets/claude/{skills → packs/docs/skills}/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd +0 -0
- /package/assets/claude/{skills → packs/docs/skills}/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd +0 -0
- /package/assets/claude/{skills → packs/docs/skills}/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd +0 -0
- /package/assets/claude/{skills → packs/docs/skills}/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/wml.xsd +0 -0
- /package/assets/claude/{skills → packs/docs/skills}/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/xml.xsd +0 -0
- /package/assets/claude/{skills → packs/docs/skills}/document-skills/pptx/ooxml/schemas/ecma/fouth-edition/opc-contentTypes.xsd +0 -0
- /package/assets/claude/{skills → packs/docs/skills}/document-skills/pptx/ooxml/schemas/ecma/fouth-edition/opc-coreProperties.xsd +0 -0
- /package/assets/claude/{skills → packs/docs/skills}/document-skills/pptx/ooxml/schemas/ecma/fouth-edition/opc-digSig.xsd +0 -0
- /package/assets/claude/{skills → packs/docs/skills}/document-skills/pptx/ooxml/schemas/ecma/fouth-edition/opc-relationships.xsd +0 -0
- /package/assets/claude/{skills → packs/docs/skills}/document-skills/pptx/ooxml/schemas/mce/mc.xsd +0 -0
- /package/assets/claude/{skills → packs/docs/skills}/document-skills/pptx/ooxml/schemas/microsoft/wml-2010.xsd +0 -0
- /package/assets/claude/{skills → packs/docs/skills}/document-skills/pptx/ooxml/schemas/microsoft/wml-2012.xsd +0 -0
- /package/assets/claude/{skills → packs/docs/skills}/document-skills/pptx/ooxml/schemas/microsoft/wml-2018.xsd +0 -0
- /package/assets/claude/{skills → packs/docs/skills}/document-skills/pptx/ooxml/schemas/microsoft/wml-cex-2018.xsd +0 -0
- /package/assets/claude/{skills → packs/docs/skills}/document-skills/pptx/ooxml/schemas/microsoft/wml-cid-2016.xsd +0 -0
- /package/assets/claude/{skills → packs/docs/skills}/document-skills/pptx/ooxml/schemas/microsoft/wml-sdtdatahash-2020.xsd +0 -0
- /package/assets/claude/{skills → packs/docs/skills}/document-skills/pptx/ooxml/schemas/microsoft/wml-symex-2015.xsd +0 -0
- /package/assets/claude/{skills → packs/docs/skills}/document-skills/pptx/ooxml/scripts/pack.py +0 -0
- /package/assets/claude/{skills → packs/docs/skills}/document-skills/pptx/ooxml/scripts/unpack.py +0 -0
- /package/assets/claude/{skills → packs/docs/skills}/document-skills/pptx/ooxml/scripts/validate.py +0 -0
- /package/assets/claude/{skills → packs/docs/skills}/document-skills/pptx/ooxml/scripts/validation/__init__.py +0 -0
- /package/assets/claude/{skills → packs/docs/skills}/document-skills/pptx/ooxml/scripts/validation/base.py +0 -0
- /package/assets/claude/{skills → packs/docs/skills}/document-skills/pptx/ooxml/scripts/validation/docx.py +0 -0
- /package/assets/claude/{skills → packs/docs/skills}/document-skills/pptx/ooxml/scripts/validation/pptx.py +0 -0
- /package/assets/claude/{skills → packs/docs/skills}/document-skills/pptx/ooxml/scripts/validation/redlining.py +0 -0
- /package/assets/claude/{skills → packs/docs/skills}/document-skills/pptx/ooxml.md +0 -0
- /package/assets/claude/{skills → packs/docs/skills}/document-skills/pptx/scripts/html2pptx.js +0 -0
- /package/assets/claude/{skills → packs/docs/skills}/document-skills/pptx/scripts/inventory.py +0 -0
- /package/assets/claude/{skills → packs/docs/skills}/document-skills/pptx/scripts/rearrange.py +0 -0
- /package/assets/claude/{skills → packs/docs/skills}/document-skills/pptx/scripts/replace.py +0 -0
- /package/assets/claude/{skills → packs/docs/skills}/document-skills/pptx/scripts/thumbnail.py +0 -0
- /package/assets/claude/{skills → packs/docs/skills}/document-skills/xlsx/LICENSE.txt +0 -0
- /package/assets/claude/{skills → packs/docs/skills}/document-skills/xlsx/SKILL.md +0 -0
- /package/assets/claude/{skills → packs/docs/skills}/document-skills/xlsx/recalc.py +0 -0
- /package/assets/claude/{agents → packs/frontend/agents}/expert-nextjs-developer.md +0 -0
- /package/assets/claude/{agents → packs/frontend/agents}/expert-react-frontend-engineer.md +0 -0
- /package/assets/claude/{agents → packs/frontend/agents}/jest-react-component-analyzer.md +0 -0
- /package/assets/claude/{agents → packs/frontend/agents}/jest-react-scenario-scanner.md +0 -0
- /package/assets/claude/{agents → packs/frontend/agents}/jest-react-test-generator.md +0 -0
- /package/assets/claude/{agents → packs/frontend/agents}/jest-react-test-planner.md +0 -0
- /package/assets/claude/{agents → packs/frontend/agents}/jest-react-test-runner.md +0 -0
- /package/assets/claude/{skills → packs/frontend/skills}/aesthetic/SKILL.md +0 -0
- /package/assets/claude/{skills → packs/frontend/skills}/aesthetic/assets/design-guideline-template.md +0 -0
- /package/assets/claude/{skills → packs/frontend/skills}/aesthetic/assets/design-story-template.md +0 -0
- /package/assets/claude/{skills → packs/frontend/skills}/aesthetic/references/design-principles.md +0 -0
- /package/assets/claude/{skills → packs/frontend/skills}/aesthetic/references/design-resources.md +0 -0
- /package/assets/claude/{skills → packs/frontend/skills}/aesthetic/references/micro-interactions.md +0 -0
- /package/assets/claude/{skills → packs/frontend/skills}/aesthetic/references/storytelling-design.md +0 -0
- /package/assets/claude/{skills → packs/frontend/skills}/frontend-design/SKILL.md +0 -0
- /package/assets/claude/{skills → packs/frontend/skills}/frontend-design/references/animejs.md +0 -0
- /package/assets/claude/{skills → packs/frontend/skills}/nextjs/SKILL.md +0 -0
- /package/assets/claude/{skills → packs/frontend/skills}/premium-frontend-ui/SKILL.md +0 -0
- /package/assets/claude/{skills → packs/frontend/skills}/react-mui-tanstack/SKILL.md +0 -0
- /package/assets/claude/{skills → packs/frontend/skills}/react-mui-tanstack/resources/common-patterns.md +0 -0
- /package/assets/claude/{skills → packs/frontend/skills}/react-mui-tanstack/resources/complete-examples.md +0 -0
- /package/assets/claude/{skills → packs/frontend/skills}/react-mui-tanstack/resources/component-patterns.md +0 -0
- /package/assets/claude/{skills → packs/frontend/skills}/react-mui-tanstack/resources/data-fetching.md +0 -0
- /package/assets/claude/{skills → packs/frontend/skills}/react-mui-tanstack/resources/file-organization.md +0 -0
- /package/assets/claude/{skills → packs/frontend/skills}/react-mui-tanstack/resources/loading-and-error-states.md +0 -0
- /package/assets/claude/{skills → packs/frontend/skills}/react-mui-tanstack/resources/performance.md +0 -0
- /package/assets/claude/{skills → packs/frontend/skills}/react-mui-tanstack/resources/routing-guide.md +0 -0
- /package/assets/claude/{skills → packs/frontend/skills}/react-mui-tanstack/resources/styling-guide.md +0 -0
- /package/assets/claude/{skills → packs/frontend/skills}/react-mui-tanstack/resources/typescript-standards.md +0 -0
- /package/assets/claude/{skills → packs/frontend/skills}/tailwind-shadcn/LICENSE.txt +0 -0
- /package/assets/claude/{skills → packs/frontend/skills}/tailwind-shadcn/SKILL.md +0 -0
- /package/assets/claude/{skills → packs/frontend/skills}/tailwind-shadcn/canvas-fonts/ArsenalSC-OFL.txt +0 -0
- /package/assets/claude/{skills → packs/frontend/skills}/tailwind-shadcn/canvas-fonts/ArsenalSC-Regular.ttf +0 -0
- /package/assets/claude/{skills → packs/frontend/skills}/tailwind-shadcn/canvas-fonts/BigShoulders-Bold.ttf +0 -0
- /package/assets/claude/{skills → packs/frontend/skills}/tailwind-shadcn/canvas-fonts/BigShoulders-OFL.txt +0 -0
- /package/assets/claude/{skills → packs/frontend/skills}/tailwind-shadcn/canvas-fonts/BigShoulders-Regular.ttf +0 -0
- /package/assets/claude/{skills → packs/frontend/skills}/tailwind-shadcn/canvas-fonts/Boldonse-OFL.txt +0 -0
- /package/assets/claude/{skills → packs/frontend/skills}/tailwind-shadcn/canvas-fonts/Boldonse-Regular.ttf +0 -0
- /package/assets/claude/{skills → packs/frontend/skills}/tailwind-shadcn/canvas-fonts/BricolageGrotesque-Bold.ttf +0 -0
- /package/assets/claude/{skills → packs/frontend/skills}/tailwind-shadcn/canvas-fonts/BricolageGrotesque-OFL.txt +0 -0
- /package/assets/claude/{skills → packs/frontend/skills}/tailwind-shadcn/canvas-fonts/BricolageGrotesque-Regular.ttf +0 -0
- /package/assets/claude/{skills → packs/frontend/skills}/tailwind-shadcn/canvas-fonts/CrimsonPro-Bold.ttf +0 -0
- /package/assets/claude/{skills → packs/frontend/skills}/tailwind-shadcn/canvas-fonts/CrimsonPro-Italic.ttf +0 -0
- /package/assets/claude/{skills → packs/frontend/skills}/tailwind-shadcn/canvas-fonts/CrimsonPro-OFL.txt +0 -0
- /package/assets/claude/{skills → packs/frontend/skills}/tailwind-shadcn/canvas-fonts/CrimsonPro-Regular.ttf +0 -0
- /package/assets/claude/{skills → packs/frontend/skills}/tailwind-shadcn/canvas-fonts/DMMono-OFL.txt +0 -0
- /package/assets/claude/{skills → packs/frontend/skills}/tailwind-shadcn/canvas-fonts/DMMono-Regular.ttf +0 -0
- /package/assets/claude/{skills → packs/frontend/skills}/tailwind-shadcn/canvas-fonts/EricaOne-OFL.txt +0 -0
- /package/assets/claude/{skills → packs/frontend/skills}/tailwind-shadcn/canvas-fonts/EricaOne-Regular.ttf +0 -0
- /package/assets/claude/{skills → packs/frontend/skills}/tailwind-shadcn/canvas-fonts/GeistMono-Bold.ttf +0 -0
- /package/assets/claude/{skills → packs/frontend/skills}/tailwind-shadcn/canvas-fonts/GeistMono-OFL.txt +0 -0
- /package/assets/claude/{skills → packs/frontend/skills}/tailwind-shadcn/canvas-fonts/GeistMono-Regular.ttf +0 -0
- /package/assets/claude/{skills → packs/frontend/skills}/tailwind-shadcn/canvas-fonts/Gloock-OFL.txt +0 -0
- /package/assets/claude/{skills → packs/frontend/skills}/tailwind-shadcn/canvas-fonts/Gloock-Regular.ttf +0 -0
- /package/assets/claude/{skills → packs/frontend/skills}/tailwind-shadcn/canvas-fonts/IBMPlexMono-Bold.ttf +0 -0
- /package/assets/claude/{skills → packs/frontend/skills}/tailwind-shadcn/canvas-fonts/IBMPlexMono-OFL.txt +0 -0
- /package/assets/claude/{skills → packs/frontend/skills}/tailwind-shadcn/canvas-fonts/IBMPlexMono-Regular.ttf +0 -0
- /package/assets/claude/{skills → packs/frontend/skills}/tailwind-shadcn/canvas-fonts/IBMPlexSerif-Bold.ttf +0 -0
- /package/assets/claude/{skills → packs/frontend/skills}/tailwind-shadcn/canvas-fonts/IBMPlexSerif-BoldItalic.ttf +0 -0
- /package/assets/claude/{skills → packs/frontend/skills}/tailwind-shadcn/canvas-fonts/IBMPlexSerif-Italic.ttf +0 -0
- /package/assets/claude/{skills → packs/frontend/skills}/tailwind-shadcn/canvas-fonts/IBMPlexSerif-Regular.ttf +0 -0
- /package/assets/claude/{skills → packs/frontend/skills}/tailwind-shadcn/canvas-fonts/InstrumentSans-Bold.ttf +0 -0
- /package/assets/claude/{skills → packs/frontend/skills}/tailwind-shadcn/canvas-fonts/InstrumentSans-BoldItalic.ttf +0 -0
- /package/assets/claude/{skills → packs/frontend/skills}/tailwind-shadcn/canvas-fonts/InstrumentSans-Italic.ttf +0 -0
- /package/assets/claude/{skills → packs/frontend/skills}/tailwind-shadcn/canvas-fonts/InstrumentSans-OFL.txt +0 -0
- /package/assets/claude/{skills → packs/frontend/skills}/tailwind-shadcn/canvas-fonts/InstrumentSans-Regular.ttf +0 -0
- /package/assets/claude/{skills → packs/frontend/skills}/tailwind-shadcn/canvas-fonts/InstrumentSerif-Italic.ttf +0 -0
- /package/assets/claude/{skills → packs/frontend/skills}/tailwind-shadcn/canvas-fonts/InstrumentSerif-Regular.ttf +0 -0
- /package/assets/claude/{skills → packs/frontend/skills}/tailwind-shadcn/canvas-fonts/Italiana-OFL.txt +0 -0
- /package/assets/claude/{skills → packs/frontend/skills}/tailwind-shadcn/canvas-fonts/Italiana-Regular.ttf +0 -0
- /package/assets/claude/{skills → packs/frontend/skills}/tailwind-shadcn/canvas-fonts/JetBrainsMono-Bold.ttf +0 -0
- /package/assets/claude/{skills → packs/frontend/skills}/tailwind-shadcn/canvas-fonts/JetBrainsMono-OFL.txt +0 -0
- /package/assets/claude/{skills → packs/frontend/skills}/tailwind-shadcn/canvas-fonts/JetBrainsMono-Regular.ttf +0 -0
- /package/assets/claude/{skills → packs/frontend/skills}/tailwind-shadcn/canvas-fonts/Jura-Light.ttf +0 -0
- /package/assets/claude/{skills → packs/frontend/skills}/tailwind-shadcn/canvas-fonts/Jura-Medium.ttf +0 -0
- /package/assets/claude/{skills → packs/frontend/skills}/tailwind-shadcn/canvas-fonts/Jura-OFL.txt +0 -0
- /package/assets/claude/{skills → packs/frontend/skills}/tailwind-shadcn/canvas-fonts/LibreBaskerville-OFL.txt +0 -0
- /package/assets/claude/{skills → packs/frontend/skills}/tailwind-shadcn/canvas-fonts/LibreBaskerville-Regular.ttf +0 -0
- /package/assets/claude/{skills → packs/frontend/skills}/tailwind-shadcn/canvas-fonts/Lora-Bold.ttf +0 -0
- /package/assets/claude/{skills → packs/frontend/skills}/tailwind-shadcn/canvas-fonts/Lora-BoldItalic.ttf +0 -0
- /package/assets/claude/{skills → packs/frontend/skills}/tailwind-shadcn/canvas-fonts/Lora-Italic.ttf +0 -0
- /package/assets/claude/{skills → packs/frontend/skills}/tailwind-shadcn/canvas-fonts/Lora-OFL.txt +0 -0
- /package/assets/claude/{skills → packs/frontend/skills}/tailwind-shadcn/canvas-fonts/Lora-Regular.ttf +0 -0
- /package/assets/claude/{skills → packs/frontend/skills}/tailwind-shadcn/canvas-fonts/NationalPark-Bold.ttf +0 -0
- /package/assets/claude/{skills → packs/frontend/skills}/tailwind-shadcn/canvas-fonts/NationalPark-OFL.txt +0 -0
- /package/assets/claude/{skills → packs/frontend/skills}/tailwind-shadcn/canvas-fonts/NationalPark-Regular.ttf +0 -0
- /package/assets/claude/{skills → packs/frontend/skills}/tailwind-shadcn/canvas-fonts/NothingYouCouldDo-OFL.txt +0 -0
- /package/assets/claude/{skills → packs/frontend/skills}/tailwind-shadcn/canvas-fonts/NothingYouCouldDo-Regular.ttf +0 -0
- /package/assets/claude/{skills → packs/frontend/skills}/tailwind-shadcn/canvas-fonts/Outfit-Bold.ttf +0 -0
- /package/assets/claude/{skills → packs/frontend/skills}/tailwind-shadcn/canvas-fonts/Outfit-OFL.txt +0 -0
- /package/assets/claude/{skills → packs/frontend/skills}/tailwind-shadcn/canvas-fonts/Outfit-Regular.ttf +0 -0
- /package/assets/claude/{skills → packs/frontend/skills}/tailwind-shadcn/canvas-fonts/PixelifySans-Medium.ttf +0 -0
- /package/assets/claude/{skills → packs/frontend/skills}/tailwind-shadcn/canvas-fonts/PixelifySans-OFL.txt +0 -0
- /package/assets/claude/{skills → packs/frontend/skills}/tailwind-shadcn/canvas-fonts/PoiretOne-OFL.txt +0 -0
- /package/assets/claude/{skills → packs/frontend/skills}/tailwind-shadcn/canvas-fonts/PoiretOne-Regular.ttf +0 -0
- /package/assets/claude/{skills → packs/frontend/skills}/tailwind-shadcn/canvas-fonts/RedHatMono-Bold.ttf +0 -0
- /package/assets/claude/{skills → packs/frontend/skills}/tailwind-shadcn/canvas-fonts/RedHatMono-OFL.txt +0 -0
- /package/assets/claude/{skills → packs/frontend/skills}/tailwind-shadcn/canvas-fonts/RedHatMono-Regular.ttf +0 -0
- /package/assets/claude/{skills → packs/frontend/skills}/tailwind-shadcn/canvas-fonts/Silkscreen-OFL.txt +0 -0
- /package/assets/claude/{skills → packs/frontend/skills}/tailwind-shadcn/canvas-fonts/Silkscreen-Regular.ttf +0 -0
- /package/assets/claude/{skills → packs/frontend/skills}/tailwind-shadcn/canvas-fonts/SmoochSans-Medium.ttf +0 -0
- /package/assets/claude/{skills → packs/frontend/skills}/tailwind-shadcn/canvas-fonts/SmoochSans-OFL.txt +0 -0
- /package/assets/claude/{skills → packs/frontend/skills}/tailwind-shadcn/canvas-fonts/Tektur-Medium.ttf +0 -0
- /package/assets/claude/{skills → packs/frontend/skills}/tailwind-shadcn/canvas-fonts/Tektur-OFL.txt +0 -0
- /package/assets/claude/{skills → packs/frontend/skills}/tailwind-shadcn/canvas-fonts/Tektur-Regular.ttf +0 -0
- /package/assets/claude/{skills → packs/frontend/skills}/tailwind-shadcn/canvas-fonts/WorkSans-Bold.ttf +0 -0
- /package/assets/claude/{skills → packs/frontend/skills}/tailwind-shadcn/canvas-fonts/WorkSans-BoldItalic.ttf +0 -0
- /package/assets/claude/{skills → packs/frontend/skills}/tailwind-shadcn/canvas-fonts/WorkSans-Italic.ttf +0 -0
- /package/assets/claude/{skills → packs/frontend/skills}/tailwind-shadcn/canvas-fonts/WorkSans-OFL.txt +0 -0
- /package/assets/claude/{skills → packs/frontend/skills}/tailwind-shadcn/canvas-fonts/WorkSans-Regular.ttf +0 -0
- /package/assets/claude/{skills → packs/frontend/skills}/tailwind-shadcn/canvas-fonts/YoungSerif-OFL.txt +0 -0
- /package/assets/claude/{skills → packs/frontend/skills}/tailwind-shadcn/canvas-fonts/YoungSerif-Regular.ttf +0 -0
- /package/assets/claude/{skills → packs/frontend/skills}/tailwind-shadcn/references/canvas-design-system.md +0 -0
- /package/assets/claude/{skills → packs/frontend/skills}/tailwind-shadcn/references/shadcn-accessibility.md +0 -0
- /package/assets/claude/{skills → packs/frontend/skills}/tailwind-shadcn/references/shadcn-components.md +0 -0
- /package/assets/claude/{skills → packs/frontend/skills}/tailwind-shadcn/references/shadcn-theming.md +0 -0
- /package/assets/claude/{skills → packs/frontend/skills}/tailwind-shadcn/references/tailwind-customization.md +0 -0
- /package/assets/claude/{skills → packs/frontend/skills}/tailwind-shadcn/references/tailwind-responsive.md +0 -0
- /package/assets/claude/{skills → packs/frontend/skills}/tailwind-shadcn/references/tailwind-utilities.md +0 -0
- /package/assets/claude/{skills → packs/frontend/skills}/tailwind-shadcn/scripts/.coverage +0 -0
- /package/assets/claude/{skills → packs/frontend/skills}/tailwind-shadcn/scripts/requirements.txt +0 -0
- /package/assets/claude/{skills → packs/frontend/skills}/tailwind-shadcn/scripts/shadcn_add.py +0 -0
- /package/assets/claude/{skills → packs/frontend/skills}/tailwind-shadcn/scripts/tailwind_config_gen.py +0 -0
- /package/assets/claude/{skills → packs/frontend/skills}/tailwind-shadcn/scripts/tests/coverage-ui.json +0 -0
- /package/assets/claude/{skills → packs/frontend/skills}/tailwind-shadcn/scripts/tests/requirements.txt +0 -0
- /package/assets/claude/{skills → packs/frontend/skills}/tailwind-shadcn/scripts/tests/test_shadcn_add.py +0 -0
- /package/assets/claude/{skills → packs/frontend/skills}/tailwind-shadcn/scripts/tests/test_tailwind_config_gen.py +0 -0
- /package/assets/claude/{skills → packs/frontend/skills}/vercel-react-best-practices/AGENTS.md +0 -0
- /package/assets/claude/{skills → packs/frontend/skills}/vercel-react-best-practices/README.md +0 -0
- /package/assets/claude/{skills → packs/frontend/skills}/vercel-react-best-practices/SKILL.md +0 -0
- /package/assets/claude/{skills → packs/frontend/skills}/vercel-react-best-practices/metadata.json +0 -0
- /package/assets/claude/{skills → packs/frontend/skills}/vercel-react-best-practices/rules/_sections.md +0 -0
- /package/assets/claude/{skills → packs/frontend/skills}/vercel-react-best-practices/rules/_template.md +0 -0
- /package/assets/claude/{skills → packs/frontend/skills}/vercel-react-best-practices/rules/advanced-event-handler-refs.md +0 -0
- /package/assets/claude/{skills → packs/frontend/skills}/vercel-react-best-practices/rules/advanced-use-latest.md +0 -0
- /package/assets/claude/{skills → packs/frontend/skills}/vercel-react-best-practices/rules/async-api-routes.md +0 -0
- /package/assets/claude/{skills → packs/frontend/skills}/vercel-react-best-practices/rules/async-defer-await.md +0 -0
- /package/assets/claude/{skills → packs/frontend/skills}/vercel-react-best-practices/rules/async-dependencies.md +0 -0
- /package/assets/claude/{skills → packs/frontend/skills}/vercel-react-best-practices/rules/async-parallel.md +0 -0
- /package/assets/claude/{skills → packs/frontend/skills}/vercel-react-best-practices/rules/async-suspense-boundaries.md +0 -0
- /package/assets/claude/{skills → packs/frontend/skills}/vercel-react-best-practices/rules/bundle-barrel-imports.md +0 -0
- /package/assets/claude/{skills → packs/frontend/skills}/vercel-react-best-practices/rules/bundle-conditional.md +0 -0
- /package/assets/claude/{skills → packs/frontend/skills}/vercel-react-best-practices/rules/bundle-defer-third-party.md +0 -0
- /package/assets/claude/{skills → packs/frontend/skills}/vercel-react-best-practices/rules/bundle-dynamic-imports.md +0 -0
- /package/assets/claude/{skills → packs/frontend/skills}/vercel-react-best-practices/rules/bundle-preload.md +0 -0
- /package/assets/claude/{skills → packs/frontend/skills}/vercel-react-best-practices/rules/client-event-listeners.md +0 -0
- /package/assets/claude/{skills → packs/frontend/skills}/vercel-react-best-practices/rules/client-localstorage-schema.md +0 -0
- /package/assets/claude/{skills → packs/frontend/skills}/vercel-react-best-practices/rules/client-passive-event-listeners.md +0 -0
- /package/assets/claude/{skills → packs/frontend/skills}/vercel-react-best-practices/rules/client-swr-dedup.md +0 -0
- /package/assets/claude/{skills → packs/frontend/skills}/vercel-react-best-practices/rules/js-batch-dom-css.md +0 -0
- /package/assets/claude/{skills → packs/frontend/skills}/vercel-react-best-practices/rules/js-cache-function-results.md +0 -0
- /package/assets/claude/{skills → packs/frontend/skills}/vercel-react-best-practices/rules/js-cache-property-access.md +0 -0
- /package/assets/claude/{skills → packs/frontend/skills}/vercel-react-best-practices/rules/js-cache-storage.md +0 -0
- /package/assets/claude/{skills → packs/frontend/skills}/vercel-react-best-practices/rules/js-combine-iterations.md +0 -0
- /package/assets/claude/{skills → packs/frontend/skills}/vercel-react-best-practices/rules/js-early-exit.md +0 -0
- /package/assets/claude/{skills → packs/frontend/skills}/vercel-react-best-practices/rules/js-hoist-regexp.md +0 -0
- /package/assets/claude/{skills → packs/frontend/skills}/vercel-react-best-practices/rules/js-index-maps.md +0 -0
- /package/assets/claude/{skills → packs/frontend/skills}/vercel-react-best-practices/rules/js-length-check-first.md +0 -0
- /package/assets/claude/{skills → packs/frontend/skills}/vercel-react-best-practices/rules/js-min-max-loop.md +0 -0
- /package/assets/claude/{skills → packs/frontend/skills}/vercel-react-best-practices/rules/js-set-map-lookups.md +0 -0
- /package/assets/claude/{skills → packs/frontend/skills}/vercel-react-best-practices/rules/js-tosorted-immutable.md +0 -0
- /package/assets/claude/{skills → packs/frontend/skills}/vercel-react-best-practices/rules/rendering-activity.md +0 -0
- /package/assets/claude/{skills → packs/frontend/skills}/vercel-react-best-practices/rules/rendering-animate-svg-wrapper.md +0 -0
- /package/assets/claude/{skills → packs/frontend/skills}/vercel-react-best-practices/rules/rendering-conditional-render.md +0 -0
- /package/assets/claude/{skills → packs/frontend/skills}/vercel-react-best-practices/rules/rendering-content-visibility.md +0 -0
- /package/assets/claude/{skills → packs/frontend/skills}/vercel-react-best-practices/rules/rendering-hoist-jsx.md +0 -0
- /package/assets/claude/{skills → packs/frontend/skills}/vercel-react-best-practices/rules/rendering-hydration-no-flicker.md +0 -0
- /package/assets/claude/{skills → packs/frontend/skills}/vercel-react-best-practices/rules/rendering-svg-precision.md +0 -0
- /package/assets/claude/{skills → packs/frontend/skills}/vercel-react-best-practices/rules/rerender-defer-reads.md +0 -0
- /package/assets/claude/{skills → packs/frontend/skills}/vercel-react-best-practices/rules/rerender-dependencies.md +0 -0
- /package/assets/claude/{skills → packs/frontend/skills}/vercel-react-best-practices/rules/rerender-derived-state.md +0 -0
- /package/assets/claude/{skills → packs/frontend/skills}/vercel-react-best-practices/rules/rerender-functional-setstate.md +0 -0
- /package/assets/claude/{skills → packs/frontend/skills}/vercel-react-best-practices/rules/rerender-lazy-state-init.md +0 -0
- /package/assets/claude/{skills → packs/frontend/skills}/vercel-react-best-practices/rules/rerender-memo.md +0 -0
- /package/assets/claude/{skills → packs/frontend/skills}/vercel-react-best-practices/rules/rerender-transitions.md +0 -0
- /package/assets/claude/{skills → packs/frontend/skills}/vercel-react-best-practices/rules/server-after-nonblocking.md +0 -0
- /package/assets/claude/{skills → packs/frontend/skills}/vercel-react-best-practices/rules/server-cache-lru.md +0 -0
- /package/assets/claude/{skills → packs/frontend/skills}/vercel-react-best-practices/rules/server-cache-react.md +0 -0
- /package/assets/claude/{skills → packs/frontend/skills}/vercel-react-best-practices/rules/server-parallel-fetching.md +0 -0
- /package/assets/claude/{skills → packs/frontend/skills}/vercel-react-best-practices/rules/server-serialization.md +0 -0
- /package/assets/claude/{skills → packs/frontend/skills}/web-design-guidelines/SKILL.md +0 -0
- /package/assets/claude/{skills → packs/frontend/skills}/web-frameworks/SKILL.md +0 -0
- /package/assets/claude/{skills → packs/frontend/skills}/web-frameworks/references/nextjs-app-router.md +0 -0
- /package/assets/claude/{skills → packs/frontend/skills}/web-frameworks/references/nextjs-data-fetching.md +0 -0
- /package/assets/claude/{skills → packs/frontend/skills}/web-frameworks/references/nextjs-optimization.md +0 -0
- /package/assets/claude/{skills → packs/frontend/skills}/web-frameworks/references/nextjs-server-components.md +0 -0
- /package/assets/claude/{skills → packs/frontend/skills}/web-frameworks/references/remix-icon-integration.md +0 -0
- /package/assets/claude/{skills → packs/frontend/skills}/web-frameworks/references/turborepo-caching.md +0 -0
- /package/assets/claude/{skills → packs/frontend/skills}/web-frameworks/references/turborepo-pipelines.md +0 -0
- /package/assets/claude/{skills → packs/frontend/skills}/web-frameworks/references/turborepo-setup.md +0 -0
- /package/assets/claude/{skills → packs/frontend/skills}/web-frameworks/scripts/.coverage +0 -0
- /package/assets/claude/{skills → packs/frontend/skills}/web-frameworks/scripts/__init__.py +0 -0
- /package/assets/claude/{skills → packs/frontend/skills}/web-frameworks/scripts/nextjs_init.py +0 -0
- /package/assets/claude/{skills → packs/frontend/skills}/web-frameworks/scripts/requirements.txt +0 -0
- /package/assets/claude/{skills → packs/frontend/skills}/web-frameworks/scripts/tests/coverage-web.json +0 -0
- /package/assets/claude/{skills → packs/frontend/skills}/web-frameworks/scripts/tests/requirements.txt +0 -0
- /package/assets/claude/{skills → packs/frontend/skills}/web-frameworks/scripts/tests/test_nextjs_init.py +0 -0
- /package/assets/claude/{skills → packs/frontend/skills}/web-frameworks/scripts/tests/test_turborepo_migrate.py +0 -0
- /package/assets/claude/{skills → packs/frontend/skills}/web-frameworks/scripts/turborepo_migrate.py +0 -0
- /package/assets/claude/{agents → packs/integrations/agents}/clickup-agent.md +0 -0
- /package/assets/claude/{agents → packs/playwright/agents}/playwright-component-analyzer.md +0 -0
- /package/assets/claude/{agents → packs/playwright/agents}/playwright-scenario-scanner.md +0 -0
- /package/assets/claude/{agents → packs/playwright/agents}/playwright-test-generator.md +0 -0
- /package/assets/claude/{agents → packs/playwright/agents}/playwright-test-planner.md +0 -0
- /package/assets/claude/{agents → packs/playwright/agents}/playwright-tester.md +0 -0
- /package/assets/claude/{skills → packs/playwright/skills}/chrome-devtools/SKILL.md +0 -0
- /package/assets/claude/{skills → packs/playwright/skills}/chrome-devtools/references/cdp-domains.md +0 -0
- /package/assets/claude/{skills → packs/playwright/skills}/chrome-devtools/references/performance-guide.md +0 -0
- /package/assets/claude/{skills → packs/playwright/skills}/chrome-devtools/references/puppeteer-reference.md +0 -0
- /package/assets/claude/{skills → packs/playwright/skills}/chrome-devtools/scripts/PERSISTENT-BROWSER.md +0 -0
- /package/assets/claude/{skills → packs/playwright/skills}/chrome-devtools/scripts/README.md +0 -0
- /package/assets/claude/{skills → packs/playwright/skills}/chrome-devtools/scripts/__tests__/selector.test.js +0 -0
- /package/assets/claude/{skills → packs/playwright/skills}/chrome-devtools/scripts/click.js +0 -0
- /package/assets/claude/{skills → packs/playwright/skills}/chrome-devtools/scripts/close-persistent.js +0 -0
- /package/assets/claude/{skills → packs/playwright/skills}/chrome-devtools/scripts/console.js +0 -0
- /package/assets/claude/{skills → packs/playwright/skills}/chrome-devtools/scripts/evaluate.js +0 -0
- /package/assets/claude/{skills → packs/playwright/skills}/chrome-devtools/scripts/fill.js +0 -0
- /package/assets/claude/{skills → packs/playwright/skills}/chrome-devtools/scripts/install-deps.sh +0 -0
- /package/assets/claude/{skills → packs/playwright/skills}/chrome-devtools/scripts/install.sh +0 -0
- /package/assets/claude/{skills → packs/playwright/skills}/chrome-devtools/scripts/launch-persistent.js +0 -0
- /package/assets/claude/{skills → packs/playwright/skills}/chrome-devtools/scripts/lib/browser.js +0 -0
- /package/assets/claude/{skills → packs/playwright/skills}/chrome-devtools/scripts/lib/selector.js +0 -0
- /package/assets/claude/{skills → packs/playwright/skills}/chrome-devtools/scripts/navigate.js +0 -0
- /package/assets/claude/{skills → packs/playwright/skills}/chrome-devtools/scripts/network.js +0 -0
- /package/assets/claude/{skills → packs/playwright/skills}/chrome-devtools/scripts/package-lock.json +0 -0
- /package/assets/claude/{skills → packs/playwright/skills}/chrome-devtools/scripts/package.json +0 -0
- /package/assets/claude/{skills → packs/playwright/skills}/chrome-devtools/scripts/performance.js +0 -0
- /package/assets/claude/{skills → packs/playwright/skills}/chrome-devtools/scripts/screenshot.js +0 -0
- /package/assets/claude/{skills → packs/playwright/skills}/chrome-devtools/scripts/snapshot.js +0 -0
- /package/assets/claude/{skills → packs/playwright/skills}/playwright-typescript/SKILL.md +0 -0
- /package/assets/{vendor → claude/packs/styles/skills}/i-have-adhd/LICENSE +0 -0
- /package/assets/{vendor → claude/packs/styles/skills}/i-have-adhd/SKILL.md +0 -0
- /package/assets/{vendor → claude/packs/styles/skills}/ponytail/LICENSE +0 -0
- /package/assets/{vendor → claude/packs/styles/skills}/ponytail/SKILL.md +0 -0
- /package/assets/{skills → claude/skills/skill-creator}/agent_skills_spec.md +0 -0
- /package/assets/{skills → copilot/packs/backend/skills}/backend-development/SKILL.md +0 -0
- /package/assets/{skills → copilot/packs/backend/skills}/backend-development/references/backend-api-design.md +0 -0
- /package/assets/{skills → copilot/packs/backend/skills}/backend-development/references/backend-architecture.md +0 -0
- /package/assets/{skills → copilot/packs/backend/skills}/backend-development/references/backend-authentication.md +0 -0
- /package/assets/{skills → copilot/packs/backend/skills}/backend-development/references/backend-code-quality.md +0 -0
- /package/assets/{skills → copilot/packs/backend/skills}/backend-development/references/backend-debugging.md +0 -0
- /package/assets/{skills → copilot/packs/backend/skills}/backend-development/references/backend-devops.md +0 -0
- /package/assets/{skills → copilot/packs/backend/skills}/backend-development/references/backend-mindset.md +0 -0
- /package/assets/{skills → copilot/packs/backend/skills}/backend-development/references/backend-performance.md +0 -0
- /package/assets/{skills → copilot/packs/backend/skills}/backend-development/references/backend-security.md +0 -0
- /package/assets/{skills → copilot/packs/backend/skills}/backend-development/references/backend-technologies.md +0 -0
- /package/assets/{skills → copilot/packs/backend/skills}/backend-development/references/backend-testing.md +0 -0
- /package/assets/{skills → copilot/packs/backend/skills}/better-auth/SKILL.md +0 -0
- /package/assets/{skills → copilot/packs/backend/skills}/better-auth/references/advanced-features.md +0 -0
- /package/assets/{skills → copilot/packs/backend/skills}/better-auth/references/database-integration.md +0 -0
- /package/assets/{skills → copilot/packs/backend/skills}/better-auth/references/email-password-auth.md +0 -0
- /package/assets/{skills → copilot/packs/backend/skills}/better-auth/references/oauth-providers.md +0 -0
- /package/assets/{skills → copilot/packs/backend/skills}/better-auth/scripts/.coverage +0 -0
- /package/assets/{skills → copilot/packs/backend/skills}/better-auth/scripts/better_auth_init.py +0 -0
- /package/assets/{skills → copilot/packs/backend/skills}/better-auth/scripts/requirements.txt +0 -0
- /package/assets/{skills → copilot/packs/backend/skills}/better-auth/scripts/tests/.coverage +0 -0
- /package/assets/{skills → copilot/packs/backend/skills}/better-auth/scripts/tests/test_better_auth_init.py +0 -0
- /package/assets/{skills → copilot/packs/backend/skills}/databases/SKILL.md +0 -0
- /package/assets/{skills → copilot/packs/backend/skills}/databases/references/mongodb-aggregation.md +0 -0
- /package/assets/{skills → copilot/packs/backend/skills}/databases/references/mongodb-atlas.md +0 -0
- /package/assets/{skills → copilot/packs/backend/skills}/databases/references/mongodb-crud.md +0 -0
- /package/assets/{skills → copilot/packs/backend/skills}/databases/references/mongodb-indexing.md +0 -0
- /package/assets/{skills → copilot/packs/backend/skills}/databases/references/postgresql-administration.md +0 -0
- /package/assets/{skills → copilot/packs/backend/skills}/databases/references/postgresql-performance.md +0 -0
- /package/assets/{skills → copilot/packs/backend/skills}/databases/references/postgresql-psql-cli.md +0 -0
- /package/assets/{skills → copilot/packs/backend/skills}/databases/references/postgresql-queries.md +0 -0
- /package/assets/{skills → copilot/packs/backend/skills}/databases/scripts/.coverage +0 -0
- /package/assets/{skills → copilot/packs/backend/skills}/databases/scripts/db_backup.py +0 -0
- /package/assets/{skills → copilot/packs/backend/skills}/databases/scripts/db_migrate.py +0 -0
- /package/assets/{skills → copilot/packs/backend/skills}/databases/scripts/db_performance_check.py +0 -0
- /package/assets/{skills → copilot/packs/backend/skills}/databases/scripts/requirements.txt +0 -0
- /package/assets/{skills → copilot/packs/backend/skills}/databases/scripts/tests/coverage-db.json +0 -0
- /package/assets/{skills → copilot/packs/backend/skills}/databases/scripts/tests/requirements.txt +0 -0
- /package/assets/{skills → copilot/packs/backend/skills}/databases/scripts/tests/test_db_backup.py +0 -0
- /package/assets/{skills → copilot/packs/backend/skills}/databases/scripts/tests/test_db_migrate.py +0 -0
- /package/assets/{skills → copilot/packs/backend/skills}/databases/scripts/tests/test_db_performance_check.py +0 -0
- /package/assets/{skills → copilot/packs/backend/skills}/devops/.env.example +0 -0
- /package/assets/{skills → copilot/packs/backend/skills}/devops/SKILL.md +0 -0
- /package/assets/{skills → copilot/packs/backend/skills}/devops/references/browser-rendering.md +0 -0
- /package/assets/{skills → copilot/packs/backend/skills}/devops/references/cloudflare-d1-kv.md +0 -0
- /package/assets/{skills → copilot/packs/backend/skills}/devops/references/cloudflare-platform.md +0 -0
- /package/assets/{skills → copilot/packs/backend/skills}/devops/references/cloudflare-r2-storage.md +0 -0
- /package/assets/{skills → copilot/packs/backend/skills}/devops/references/cloudflare-workers-advanced.md +0 -0
- /package/assets/{skills → copilot/packs/backend/skills}/devops/references/cloudflare-workers-apis.md +0 -0
- /package/assets/{skills → copilot/packs/backend/skills}/devops/references/cloudflare-workers-basics.md +0 -0
- /package/assets/{skills → copilot/packs/backend/skills}/devops/references/docker-basics.md +0 -0
- /package/assets/{skills → copilot/packs/backend/skills}/devops/references/docker-compose.md +0 -0
- /package/assets/{skills → copilot/packs/backend/skills}/devops/references/gcloud-platform.md +0 -0
- /package/assets/{skills → copilot/packs/backend/skills}/devops/references/gcloud-services.md +0 -0
- /package/assets/{skills → copilot/packs/backend/skills}/devops/scripts/cloudflare_deploy.py +0 -0
- /package/assets/{skills → copilot/packs/backend/skills}/devops/scripts/docker_optimize.py +0 -0
- /package/assets/{skills → copilot/packs/backend/skills}/devops/scripts/requirements.txt +0 -0
- /package/assets/{skills → copilot/packs/backend/skills}/devops/scripts/tests/requirements.txt +0 -0
- /package/assets/{skills → copilot/packs/backend/skills}/devops/scripts/tests/test_cloudflare_deploy.py +0 -0
- /package/assets/{skills → copilot/packs/backend/skills}/devops/scripts/tests/test_docker_optimize.py +0 -0
- /package/assets/{skills → copilot/packs/docs/skills}/ai-multimodal/.env.example +0 -0
- /package/assets/{skills → copilot/packs/docs/skills}/ai-multimodal/references/audio-processing.md +0 -0
- /package/assets/{skills → copilot/packs/docs/skills}/ai-multimodal/references/image-generation.md +0 -0
- /package/assets/{skills → copilot/packs/docs/skills}/ai-multimodal/references/video-analysis.md +0 -0
- /package/assets/{skills → copilot/packs/docs/skills}/ai-multimodal/references/vision-understanding.md +0 -0
- /package/assets/{skills → copilot/packs/docs/skills}/ai-multimodal/scripts/document_converter.py +0 -0
- /package/assets/{skills → copilot/packs/docs/skills}/ai-multimodal/scripts/gemini_batch_process.py +0 -0
- /package/assets/{skills → copilot/packs/docs/skills}/ai-multimodal/scripts/media_optimizer.py +0 -0
- /package/assets/{skills → copilot/packs/docs/skills}/ai-multimodal/scripts/requirements.txt +0 -0
- /package/assets/{skills → copilot/packs/docs/skills}/ai-multimodal/scripts/tests/.coverage +0 -0
- /package/assets/{skills → copilot/packs/docs/skills}/ai-multimodal/scripts/tests/requirements.txt +0 -0
- /package/assets/{skills → copilot/packs/docs/skills}/ai-multimodal/scripts/tests/test_document_converter.py +0 -0
- /package/assets/{skills → copilot/packs/docs/skills}/ai-multimodal/scripts/tests/test_gemini_batch_process.py +0 -0
- /package/assets/{skills → copilot/packs/docs/skills}/ai-multimodal/scripts/tests/test_media_optimizer.py +0 -0
- /package/assets/{skills → copilot/packs/docs/skills}/document-skills/docx/LICENSE.txt +0 -0
- /package/assets/{skills → copilot/packs/docs/skills}/document-skills/docx/SKILL.md +0 -0
- /package/assets/{skills → copilot/packs/docs/skills}/document-skills/docx/docx-js.md +0 -0
- /package/assets/{skills → copilot/packs/docs/skills}/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-chart.xsd +0 -0
- /package/assets/{skills → copilot/packs/docs/skills}/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd +0 -0
- /package/assets/{skills → copilot/packs/docs/skills}/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd +0 -0
- /package/assets/{skills → copilot/packs/docs/skills}/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd +0 -0
- /package/assets/{skills → copilot/packs/docs/skills}/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-main.xsd +0 -0
- /package/assets/{skills → copilot/packs/docs/skills}/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-picture.xsd +0 -0
- /package/assets/{skills → copilot/packs/docs/skills}/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd +0 -0
- /package/assets/{skills → copilot/packs/docs/skills}/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd +0 -0
- /package/assets/{skills → copilot/packs/docs/skills}/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/pml.xsd +0 -0
- /package/assets/{skills → copilot/packs/docs/skills}/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd +0 -0
- /package/assets/{skills → copilot/packs/docs/skills}/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd +0 -0
- /package/assets/{skills → copilot/packs/docs/skills}/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd +0 -0
- /package/assets/{skills → copilot/packs/docs/skills}/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd +0 -0
- /package/assets/{skills → copilot/packs/docs/skills}/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd +0 -0
- /package/assets/{skills → copilot/packs/docs/skills}/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd +0 -0
- /package/assets/{skills → copilot/packs/docs/skills}/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd +0 -0
- /package/assets/{skills → copilot/packs/docs/skills}/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd +0 -0
- /package/assets/{skills → copilot/packs/docs/skills}/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-math.xsd +0 -0
- /package/assets/{skills → copilot/packs/docs/skills}/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd +0 -0
- /package/assets/{skills → copilot/packs/docs/skills}/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/sml.xsd +0 -0
- /package/assets/{skills → copilot/packs/docs/skills}/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-main.xsd +0 -0
- /package/assets/{skills → copilot/packs/docs/skills}/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd +0 -0
- /package/assets/{skills → copilot/packs/docs/skills}/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd +0 -0
- /package/assets/{skills → copilot/packs/docs/skills}/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd +0 -0
- /package/assets/{skills → copilot/packs/docs/skills}/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd +0 -0
- /package/assets/{skills → copilot/packs/docs/skills}/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/wml.xsd +0 -0
- /package/assets/{skills → copilot/packs/docs/skills}/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/xml.xsd +0 -0
- /package/assets/{skills → copilot/packs/docs/skills}/document-skills/docx/ooxml/schemas/ecma/fouth-edition/opc-contentTypes.xsd +0 -0
- /package/assets/{skills → copilot/packs/docs/skills}/document-skills/docx/ooxml/schemas/ecma/fouth-edition/opc-coreProperties.xsd +0 -0
- /package/assets/{skills → copilot/packs/docs/skills}/document-skills/docx/ooxml/schemas/ecma/fouth-edition/opc-digSig.xsd +0 -0
- /package/assets/{skills → copilot/packs/docs/skills}/document-skills/docx/ooxml/schemas/ecma/fouth-edition/opc-relationships.xsd +0 -0
- /package/assets/{skills → copilot/packs/docs/skills}/document-skills/docx/ooxml/schemas/mce/mc.xsd +0 -0
- /package/assets/{skills → copilot/packs/docs/skills}/document-skills/docx/ooxml/schemas/microsoft/wml-2010.xsd +0 -0
- /package/assets/{skills → copilot/packs/docs/skills}/document-skills/docx/ooxml/schemas/microsoft/wml-2012.xsd +0 -0
- /package/assets/{skills → copilot/packs/docs/skills}/document-skills/docx/ooxml/schemas/microsoft/wml-2018.xsd +0 -0
- /package/assets/{skills → copilot/packs/docs/skills}/document-skills/docx/ooxml/schemas/microsoft/wml-cex-2018.xsd +0 -0
- /package/assets/{skills → copilot/packs/docs/skills}/document-skills/docx/ooxml/schemas/microsoft/wml-cid-2016.xsd +0 -0
- /package/assets/{skills → copilot/packs/docs/skills}/document-skills/docx/ooxml/schemas/microsoft/wml-sdtdatahash-2020.xsd +0 -0
- /package/assets/{skills → copilot/packs/docs/skills}/document-skills/docx/ooxml/schemas/microsoft/wml-symex-2015.xsd +0 -0
- /package/assets/{skills → copilot/packs/docs/skills}/document-skills/docx/ooxml/scripts/pack.py +0 -0
- /package/assets/{skills → copilot/packs/docs/skills}/document-skills/docx/ooxml/scripts/unpack.py +0 -0
- /package/assets/{skills → copilot/packs/docs/skills}/document-skills/docx/ooxml/scripts/validate.py +0 -0
- /package/assets/{skills → copilot/packs/docs/skills}/document-skills/docx/ooxml/scripts/validation/__init__.py +0 -0
- /package/assets/{skills → copilot/packs/docs/skills}/document-skills/docx/ooxml/scripts/validation/base.py +0 -0
- /package/assets/{skills → copilot/packs/docs/skills}/document-skills/docx/ooxml/scripts/validation/docx.py +0 -0
- /package/assets/{skills → copilot/packs/docs/skills}/document-skills/docx/ooxml/scripts/validation/pptx.py +0 -0
- /package/assets/{skills → copilot/packs/docs/skills}/document-skills/docx/ooxml/scripts/validation/redlining.py +0 -0
- /package/assets/{skills → copilot/packs/docs/skills}/document-skills/docx/ooxml.md +0 -0
- /package/assets/{skills → copilot/packs/docs/skills}/document-skills/docx/scripts/__init__.py +0 -0
- /package/assets/{skills → copilot/packs/docs/skills}/document-skills/docx/scripts/document.py +0 -0
- /package/assets/{skills → copilot/packs/docs/skills}/document-skills/docx/scripts/templates/comments.xml +0 -0
- /package/assets/{skills → copilot/packs/docs/skills}/document-skills/docx/scripts/templates/commentsExtended.xml +0 -0
- /package/assets/{skills → copilot/packs/docs/skills}/document-skills/docx/scripts/templates/commentsExtensible.xml +0 -0
- /package/assets/{skills → copilot/packs/docs/skills}/document-skills/docx/scripts/templates/commentsIds.xml +0 -0
- /package/assets/{skills → copilot/packs/docs/skills}/document-skills/docx/scripts/templates/people.xml +0 -0
- /package/assets/{skills → copilot/packs/docs/skills}/document-skills/docx/scripts/utilities.py +0 -0
- /package/assets/{skills → copilot/packs/docs/skills}/document-skills/pdf/LICENSE.txt +0 -0
- /package/assets/{skills → copilot/packs/docs/skills}/document-skills/pdf/SKILL.md +0 -0
- /package/assets/{skills → copilot/packs/docs/skills}/document-skills/pdf/forms.md +0 -0
- /package/assets/{skills → copilot/packs/docs/skills}/document-skills/pdf/reference.md +0 -0
- /package/assets/{skills → copilot/packs/docs/skills}/document-skills/pdf/scripts/check_bounding_boxes.py +0 -0
- /package/assets/{skills → copilot/packs/docs/skills}/document-skills/pdf/scripts/check_bounding_boxes_test.py +0 -0
- /package/assets/{skills → copilot/packs/docs/skills}/document-skills/pdf/scripts/check_fillable_fields.py +0 -0
- /package/assets/{skills → copilot/packs/docs/skills}/document-skills/pdf/scripts/convert_pdf_to_images.py +0 -0
- /package/assets/{skills → copilot/packs/docs/skills}/document-skills/pdf/scripts/create_validation_image.py +0 -0
- /package/assets/{skills → copilot/packs/docs/skills}/document-skills/pdf/scripts/extract_form_field_info.py +0 -0
- /package/assets/{skills → copilot/packs/docs/skills}/document-skills/pdf/scripts/fill_fillable_fields.py +0 -0
- /package/assets/{skills → copilot/packs/docs/skills}/document-skills/pdf/scripts/fill_pdf_form_with_annotations.py +0 -0
- /package/assets/{skills → copilot/packs/docs/skills}/document-skills/pptx/LICENSE.txt +0 -0
- /package/assets/{skills → copilot/packs/docs/skills}/document-skills/pptx/SKILL.md +0 -0
- /package/assets/{skills → copilot/packs/docs/skills}/document-skills/pptx/html2pptx.md +0 -0
- /package/assets/{skills → copilot/packs/docs/skills}/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-chart.xsd +0 -0
- /package/assets/{skills → copilot/packs/docs/skills}/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd +0 -0
- /package/assets/{skills → copilot/packs/docs/skills}/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd +0 -0
- /package/assets/{skills → copilot/packs/docs/skills}/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd +0 -0
- /package/assets/{skills → copilot/packs/docs/skills}/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-main.xsd +0 -0
- /package/assets/{skills → copilot/packs/docs/skills}/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-picture.xsd +0 -0
- /package/assets/{skills → copilot/packs/docs/skills}/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd +0 -0
- /package/assets/{skills → copilot/packs/docs/skills}/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd +0 -0
- /package/assets/{skills → copilot/packs/docs/skills}/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/pml.xsd +0 -0
- /package/assets/{skills → copilot/packs/docs/skills}/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd +0 -0
- /package/assets/{skills → copilot/packs/docs/skills}/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd +0 -0
- /package/assets/{skills → copilot/packs/docs/skills}/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd +0 -0
- /package/assets/{skills → copilot/packs/docs/skills}/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd +0 -0
- /package/assets/{skills → copilot/packs/docs/skills}/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd +0 -0
- /package/assets/{skills → copilot/packs/docs/skills}/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd +0 -0
- /package/assets/{skills → copilot/packs/docs/skills}/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd +0 -0
- /package/assets/{skills → copilot/packs/docs/skills}/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd +0 -0
- /package/assets/{skills → copilot/packs/docs/skills}/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-math.xsd +0 -0
- /package/assets/{skills → copilot/packs/docs/skills}/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd +0 -0
- /package/assets/{skills → copilot/packs/docs/skills}/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/sml.xsd +0 -0
- /package/assets/{skills → copilot/packs/docs/skills}/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-main.xsd +0 -0
- /package/assets/{skills → copilot/packs/docs/skills}/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd +0 -0
- /package/assets/{skills → copilot/packs/docs/skills}/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd +0 -0
- /package/assets/{skills → copilot/packs/docs/skills}/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd +0 -0
- /package/assets/{skills → copilot/packs/docs/skills}/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd +0 -0
- /package/assets/{skills → copilot/packs/docs/skills}/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/wml.xsd +0 -0
- /package/assets/{skills → copilot/packs/docs/skills}/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/xml.xsd +0 -0
- /package/assets/{skills → copilot/packs/docs/skills}/document-skills/pptx/ooxml/schemas/ecma/fouth-edition/opc-contentTypes.xsd +0 -0
- /package/assets/{skills → copilot/packs/docs/skills}/document-skills/pptx/ooxml/schemas/ecma/fouth-edition/opc-coreProperties.xsd +0 -0
- /package/assets/{skills → copilot/packs/docs/skills}/document-skills/pptx/ooxml/schemas/ecma/fouth-edition/opc-digSig.xsd +0 -0
- /package/assets/{skills → copilot/packs/docs/skills}/document-skills/pptx/ooxml/schemas/ecma/fouth-edition/opc-relationships.xsd +0 -0
- /package/assets/{skills → copilot/packs/docs/skills}/document-skills/pptx/ooxml/schemas/mce/mc.xsd +0 -0
- /package/assets/{skills → copilot/packs/docs/skills}/document-skills/pptx/ooxml/schemas/microsoft/wml-2010.xsd +0 -0
- /package/assets/{skills → copilot/packs/docs/skills}/document-skills/pptx/ooxml/schemas/microsoft/wml-2012.xsd +0 -0
- /package/assets/{skills → copilot/packs/docs/skills}/document-skills/pptx/ooxml/schemas/microsoft/wml-2018.xsd +0 -0
- /package/assets/{skills → copilot/packs/docs/skills}/document-skills/pptx/ooxml/schemas/microsoft/wml-cex-2018.xsd +0 -0
- /package/assets/{skills → copilot/packs/docs/skills}/document-skills/pptx/ooxml/schemas/microsoft/wml-cid-2016.xsd +0 -0
- /package/assets/{skills → copilot/packs/docs/skills}/document-skills/pptx/ooxml/schemas/microsoft/wml-sdtdatahash-2020.xsd +0 -0
- /package/assets/{skills → copilot/packs/docs/skills}/document-skills/pptx/ooxml/schemas/microsoft/wml-symex-2015.xsd +0 -0
- /package/assets/{skills → copilot/packs/docs/skills}/document-skills/pptx/ooxml/scripts/pack.py +0 -0
- /package/assets/{skills → copilot/packs/docs/skills}/document-skills/pptx/ooxml/scripts/unpack.py +0 -0
- /package/assets/{skills → copilot/packs/docs/skills}/document-skills/pptx/ooxml/scripts/validate.py +0 -0
- /package/assets/{skills → copilot/packs/docs/skills}/document-skills/pptx/ooxml/scripts/validation/__init__.py +0 -0
- /package/assets/{skills → copilot/packs/docs/skills}/document-skills/pptx/ooxml/scripts/validation/base.py +0 -0
- /package/assets/{skills → copilot/packs/docs/skills}/document-skills/pptx/ooxml/scripts/validation/docx.py +0 -0
- /package/assets/{skills → copilot/packs/docs/skills}/document-skills/pptx/ooxml/scripts/validation/pptx.py +0 -0
- /package/assets/{skills → copilot/packs/docs/skills}/document-skills/pptx/ooxml/scripts/validation/redlining.py +0 -0
- /package/assets/{skills → copilot/packs/docs/skills}/document-skills/pptx/ooxml.md +0 -0
- /package/assets/{skills → copilot/packs/docs/skills}/document-skills/pptx/scripts/html2pptx.js +0 -0
- /package/assets/{skills → copilot/packs/docs/skills}/document-skills/pptx/scripts/inventory.py +0 -0
- /package/assets/{skills → copilot/packs/docs/skills}/document-skills/pptx/scripts/rearrange.py +0 -0
- /package/assets/{skills → copilot/packs/docs/skills}/document-skills/pptx/scripts/replace.py +0 -0
- /package/assets/{skills → copilot/packs/docs/skills}/document-skills/pptx/scripts/thumbnail.py +0 -0
- /package/assets/{skills → copilot/packs/docs/skills}/document-skills/xlsx/LICENSE.txt +0 -0
- /package/assets/{skills → copilot/packs/docs/skills}/document-skills/xlsx/SKILL.md +0 -0
- /package/assets/{skills → copilot/packs/docs/skills}/document-skills/xlsx/recalc.py +0 -0
- /package/assets/{skills → copilot/packs/frontend/skills}/aesthetic/SKILL.md +0 -0
- /package/assets/{skills → copilot/packs/frontend/skills}/aesthetic/assets/design-guideline-template.md +0 -0
- /package/assets/{skills → copilot/packs/frontend/skills}/aesthetic/assets/design-story-template.md +0 -0
- /package/assets/{skills → copilot/packs/frontend/skills}/aesthetic/references/design-principles.md +0 -0
- /package/assets/{skills → copilot/packs/frontend/skills}/aesthetic/references/design-resources.md +0 -0
- /package/assets/{skills → copilot/packs/frontend/skills}/aesthetic/references/micro-interactions.md +0 -0
- /package/assets/{skills → copilot/packs/frontend/skills}/aesthetic/references/storytelling-design.md +0 -0
- /package/assets/{skills → copilot/packs/frontend/skills}/frontend-design/SKILL.md +0 -0
- /package/assets/{skills → copilot/packs/frontend/skills}/frontend-design/references/animejs.md +0 -0
- /package/assets/{claude → copilot/packs/frontend}/skills/nextjs-tailwind/SKILL.md +0 -0
- /package/assets/{skills → copilot/packs/frontend/skills}/premium-frontend-ui/SKILL.md +0 -0
- /package/assets/{skills → copilot/packs/frontend/skills}/react-mui-tanstack/SKILL.md +0 -0
- /package/assets/{skills → copilot/packs/frontend/skills}/react-mui-tanstack/resources/common-patterns.md +0 -0
- /package/assets/{skills → copilot/packs/frontend/skills}/react-mui-tanstack/resources/complete-examples.md +0 -0
- /package/assets/{skills → copilot/packs/frontend/skills}/react-mui-tanstack/resources/component-patterns.md +0 -0
- /package/assets/{skills → copilot/packs/frontend/skills}/react-mui-tanstack/resources/data-fetching.md +0 -0
- /package/assets/{skills → copilot/packs/frontend/skills}/react-mui-tanstack/resources/file-organization.md +0 -0
- /package/assets/{skills → copilot/packs/frontend/skills}/react-mui-tanstack/resources/loading-and-error-states.md +0 -0
- /package/assets/{skills → copilot/packs/frontend/skills}/react-mui-tanstack/resources/performance.md +0 -0
- /package/assets/{skills → copilot/packs/frontend/skills}/react-mui-tanstack/resources/routing-guide.md +0 -0
- /package/assets/{skills → copilot/packs/frontend/skills}/react-mui-tanstack/resources/styling-guide.md +0 -0
- /package/assets/{skills → copilot/packs/frontend/skills}/react-mui-tanstack/resources/typescript-standards.md +0 -0
- /package/assets/{claude → copilot/packs/frontend}/skills/reactjs/SKILL.md +0 -0
- /package/assets/{skills/mcp-builder → copilot/packs/frontend/skills/tailwind-shadcn}/LICENSE.txt +0 -0
- /package/assets/{skills → copilot/packs/frontend/skills}/tailwind-shadcn/SKILL.md +0 -0
- /package/assets/{skills → copilot/packs/frontend/skills}/tailwind-shadcn/canvas-fonts/ArsenalSC-OFL.txt +0 -0
- /package/assets/{skills → copilot/packs/frontend/skills}/tailwind-shadcn/canvas-fonts/ArsenalSC-Regular.ttf +0 -0
- /package/assets/{skills → copilot/packs/frontend/skills}/tailwind-shadcn/canvas-fonts/BigShoulders-Bold.ttf +0 -0
- /package/assets/{skills → copilot/packs/frontend/skills}/tailwind-shadcn/canvas-fonts/BigShoulders-OFL.txt +0 -0
- /package/assets/{skills → copilot/packs/frontend/skills}/tailwind-shadcn/canvas-fonts/BigShoulders-Regular.ttf +0 -0
- /package/assets/{skills → copilot/packs/frontend/skills}/tailwind-shadcn/canvas-fonts/Boldonse-OFL.txt +0 -0
- /package/assets/{skills → copilot/packs/frontend/skills}/tailwind-shadcn/canvas-fonts/Boldonse-Regular.ttf +0 -0
- /package/assets/{skills → copilot/packs/frontend/skills}/tailwind-shadcn/canvas-fonts/BricolageGrotesque-Bold.ttf +0 -0
- /package/assets/{skills → copilot/packs/frontend/skills}/tailwind-shadcn/canvas-fonts/BricolageGrotesque-OFL.txt +0 -0
- /package/assets/{skills → copilot/packs/frontend/skills}/tailwind-shadcn/canvas-fonts/BricolageGrotesque-Regular.ttf +0 -0
- /package/assets/{skills → copilot/packs/frontend/skills}/tailwind-shadcn/canvas-fonts/CrimsonPro-Bold.ttf +0 -0
- /package/assets/{skills → copilot/packs/frontend/skills}/tailwind-shadcn/canvas-fonts/CrimsonPro-Italic.ttf +0 -0
- /package/assets/{skills → copilot/packs/frontend/skills}/tailwind-shadcn/canvas-fonts/CrimsonPro-OFL.txt +0 -0
- /package/assets/{skills → copilot/packs/frontend/skills}/tailwind-shadcn/canvas-fonts/CrimsonPro-Regular.ttf +0 -0
- /package/assets/{skills → copilot/packs/frontend/skills}/tailwind-shadcn/canvas-fonts/DMMono-OFL.txt +0 -0
- /package/assets/{skills → copilot/packs/frontend/skills}/tailwind-shadcn/canvas-fonts/DMMono-Regular.ttf +0 -0
- /package/assets/{skills → copilot/packs/frontend/skills}/tailwind-shadcn/canvas-fonts/EricaOne-OFL.txt +0 -0
- /package/assets/{skills → copilot/packs/frontend/skills}/tailwind-shadcn/canvas-fonts/EricaOne-Regular.ttf +0 -0
- /package/assets/{skills → copilot/packs/frontend/skills}/tailwind-shadcn/canvas-fonts/GeistMono-Bold.ttf +0 -0
- /package/assets/{skills → copilot/packs/frontend/skills}/tailwind-shadcn/canvas-fonts/GeistMono-OFL.txt +0 -0
- /package/assets/{skills → copilot/packs/frontend/skills}/tailwind-shadcn/canvas-fonts/GeistMono-Regular.ttf +0 -0
- /package/assets/{skills → copilot/packs/frontend/skills}/tailwind-shadcn/canvas-fonts/Gloock-OFL.txt +0 -0
- /package/assets/{skills → copilot/packs/frontend/skills}/tailwind-shadcn/canvas-fonts/Gloock-Regular.ttf +0 -0
- /package/assets/{skills → copilot/packs/frontend/skills}/tailwind-shadcn/canvas-fonts/IBMPlexMono-Bold.ttf +0 -0
- /package/assets/{skills → copilot/packs/frontend/skills}/tailwind-shadcn/canvas-fonts/IBMPlexMono-OFL.txt +0 -0
- /package/assets/{skills → copilot/packs/frontend/skills}/tailwind-shadcn/canvas-fonts/IBMPlexMono-Regular.ttf +0 -0
- /package/assets/{skills → copilot/packs/frontend/skills}/tailwind-shadcn/canvas-fonts/IBMPlexSerif-Bold.ttf +0 -0
- /package/assets/{skills → copilot/packs/frontend/skills}/tailwind-shadcn/canvas-fonts/IBMPlexSerif-BoldItalic.ttf +0 -0
- /package/assets/{skills → copilot/packs/frontend/skills}/tailwind-shadcn/canvas-fonts/IBMPlexSerif-Italic.ttf +0 -0
- /package/assets/{skills → copilot/packs/frontend/skills}/tailwind-shadcn/canvas-fonts/IBMPlexSerif-Regular.ttf +0 -0
- /package/assets/{skills → copilot/packs/frontend/skills}/tailwind-shadcn/canvas-fonts/InstrumentSans-Bold.ttf +0 -0
- /package/assets/{skills → copilot/packs/frontend/skills}/tailwind-shadcn/canvas-fonts/InstrumentSans-BoldItalic.ttf +0 -0
- /package/assets/{skills → copilot/packs/frontend/skills}/tailwind-shadcn/canvas-fonts/InstrumentSans-Italic.ttf +0 -0
- /package/assets/{skills → copilot/packs/frontend/skills}/tailwind-shadcn/canvas-fonts/InstrumentSans-OFL.txt +0 -0
- /package/assets/{skills → copilot/packs/frontend/skills}/tailwind-shadcn/canvas-fonts/InstrumentSans-Regular.ttf +0 -0
- /package/assets/{skills → copilot/packs/frontend/skills}/tailwind-shadcn/canvas-fonts/InstrumentSerif-Italic.ttf +0 -0
- /package/assets/{skills → copilot/packs/frontend/skills}/tailwind-shadcn/canvas-fonts/InstrumentSerif-Regular.ttf +0 -0
- /package/assets/{skills → copilot/packs/frontend/skills}/tailwind-shadcn/canvas-fonts/Italiana-OFL.txt +0 -0
- /package/assets/{skills → copilot/packs/frontend/skills}/tailwind-shadcn/canvas-fonts/Italiana-Regular.ttf +0 -0
- /package/assets/{skills → copilot/packs/frontend/skills}/tailwind-shadcn/canvas-fonts/JetBrainsMono-Bold.ttf +0 -0
- /package/assets/{skills → copilot/packs/frontend/skills}/tailwind-shadcn/canvas-fonts/JetBrainsMono-OFL.txt +0 -0
- /package/assets/{skills → copilot/packs/frontend/skills}/tailwind-shadcn/canvas-fonts/JetBrainsMono-Regular.ttf +0 -0
- /package/assets/{skills → copilot/packs/frontend/skills}/tailwind-shadcn/canvas-fonts/Jura-Light.ttf +0 -0
- /package/assets/{skills → copilot/packs/frontend/skills}/tailwind-shadcn/canvas-fonts/Jura-Medium.ttf +0 -0
- /package/assets/{skills → copilot/packs/frontend/skills}/tailwind-shadcn/canvas-fonts/Jura-OFL.txt +0 -0
- /package/assets/{skills → copilot/packs/frontend/skills}/tailwind-shadcn/canvas-fonts/LibreBaskerville-OFL.txt +0 -0
- /package/assets/{skills → copilot/packs/frontend/skills}/tailwind-shadcn/canvas-fonts/LibreBaskerville-Regular.ttf +0 -0
- /package/assets/{skills → copilot/packs/frontend/skills}/tailwind-shadcn/canvas-fonts/Lora-Bold.ttf +0 -0
- /package/assets/{skills → copilot/packs/frontend/skills}/tailwind-shadcn/canvas-fonts/Lora-BoldItalic.ttf +0 -0
- /package/assets/{skills → copilot/packs/frontend/skills}/tailwind-shadcn/canvas-fonts/Lora-Italic.ttf +0 -0
- /package/assets/{skills → copilot/packs/frontend/skills}/tailwind-shadcn/canvas-fonts/Lora-OFL.txt +0 -0
- /package/assets/{skills → copilot/packs/frontend/skills}/tailwind-shadcn/canvas-fonts/Lora-Regular.ttf +0 -0
- /package/assets/{skills → copilot/packs/frontend/skills}/tailwind-shadcn/canvas-fonts/NationalPark-Bold.ttf +0 -0
- /package/assets/{skills → copilot/packs/frontend/skills}/tailwind-shadcn/canvas-fonts/NationalPark-OFL.txt +0 -0
- /package/assets/{skills → copilot/packs/frontend/skills}/tailwind-shadcn/canvas-fonts/NationalPark-Regular.ttf +0 -0
- /package/assets/{skills → copilot/packs/frontend/skills}/tailwind-shadcn/canvas-fonts/NothingYouCouldDo-OFL.txt +0 -0
- /package/assets/{skills → copilot/packs/frontend/skills}/tailwind-shadcn/canvas-fonts/NothingYouCouldDo-Regular.ttf +0 -0
- /package/assets/{skills → copilot/packs/frontend/skills}/tailwind-shadcn/canvas-fonts/Outfit-Bold.ttf +0 -0
- /package/assets/{skills → copilot/packs/frontend/skills}/tailwind-shadcn/canvas-fonts/Outfit-OFL.txt +0 -0
- /package/assets/{skills → copilot/packs/frontend/skills}/tailwind-shadcn/canvas-fonts/Outfit-Regular.ttf +0 -0
- /package/assets/{skills → copilot/packs/frontend/skills}/tailwind-shadcn/canvas-fonts/PixelifySans-Medium.ttf +0 -0
- /package/assets/{skills → copilot/packs/frontend/skills}/tailwind-shadcn/canvas-fonts/PixelifySans-OFL.txt +0 -0
- /package/assets/{skills → copilot/packs/frontend/skills}/tailwind-shadcn/canvas-fonts/PoiretOne-OFL.txt +0 -0
- /package/assets/{skills → copilot/packs/frontend/skills}/tailwind-shadcn/canvas-fonts/PoiretOne-Regular.ttf +0 -0
- /package/assets/{skills → copilot/packs/frontend/skills}/tailwind-shadcn/canvas-fonts/RedHatMono-Bold.ttf +0 -0
- /package/assets/{skills → copilot/packs/frontend/skills}/tailwind-shadcn/canvas-fonts/RedHatMono-OFL.txt +0 -0
- /package/assets/{skills → copilot/packs/frontend/skills}/tailwind-shadcn/canvas-fonts/RedHatMono-Regular.ttf +0 -0
- /package/assets/{skills → copilot/packs/frontend/skills}/tailwind-shadcn/canvas-fonts/Silkscreen-OFL.txt +0 -0
- /package/assets/{skills → copilot/packs/frontend/skills}/tailwind-shadcn/canvas-fonts/Silkscreen-Regular.ttf +0 -0
- /package/assets/{skills → copilot/packs/frontend/skills}/tailwind-shadcn/canvas-fonts/SmoochSans-Medium.ttf +0 -0
- /package/assets/{skills → copilot/packs/frontend/skills}/tailwind-shadcn/canvas-fonts/SmoochSans-OFL.txt +0 -0
- /package/assets/{skills → copilot/packs/frontend/skills}/tailwind-shadcn/canvas-fonts/Tektur-Medium.ttf +0 -0
- /package/assets/{skills → copilot/packs/frontend/skills}/tailwind-shadcn/canvas-fonts/Tektur-OFL.txt +0 -0
- /package/assets/{skills → copilot/packs/frontend/skills}/tailwind-shadcn/canvas-fonts/Tektur-Regular.ttf +0 -0
- /package/assets/{skills → copilot/packs/frontend/skills}/tailwind-shadcn/canvas-fonts/WorkSans-Bold.ttf +0 -0
- /package/assets/{skills → copilot/packs/frontend/skills}/tailwind-shadcn/canvas-fonts/WorkSans-BoldItalic.ttf +0 -0
- /package/assets/{skills → copilot/packs/frontend/skills}/tailwind-shadcn/canvas-fonts/WorkSans-Italic.ttf +0 -0
- /package/assets/{skills → copilot/packs/frontend/skills}/tailwind-shadcn/canvas-fonts/WorkSans-OFL.txt +0 -0
- /package/assets/{skills → copilot/packs/frontend/skills}/tailwind-shadcn/canvas-fonts/WorkSans-Regular.ttf +0 -0
- /package/assets/{skills → copilot/packs/frontend/skills}/tailwind-shadcn/canvas-fonts/YoungSerif-OFL.txt +0 -0
- /package/assets/{skills → copilot/packs/frontend/skills}/tailwind-shadcn/canvas-fonts/YoungSerif-Regular.ttf +0 -0
- /package/assets/{skills → copilot/packs/frontend/skills}/tailwind-shadcn/references/canvas-design-system.md +0 -0
- /package/assets/{skills → copilot/packs/frontend/skills}/tailwind-shadcn/references/shadcn-accessibility.md +0 -0
- /package/assets/{skills → copilot/packs/frontend/skills}/tailwind-shadcn/references/shadcn-components.md +0 -0
- /package/assets/{skills → copilot/packs/frontend/skills}/tailwind-shadcn/references/shadcn-theming.md +0 -0
- /package/assets/{skills → copilot/packs/frontend/skills}/tailwind-shadcn/references/tailwind-customization.md +0 -0
- /package/assets/{skills → copilot/packs/frontend/skills}/tailwind-shadcn/references/tailwind-responsive.md +0 -0
- /package/assets/{skills → copilot/packs/frontend/skills}/tailwind-shadcn/references/tailwind-utilities.md +0 -0
- /package/assets/{skills → copilot/packs/frontend/skills}/tailwind-shadcn/scripts/.coverage +0 -0
- /package/assets/{skills → copilot/packs/frontend/skills}/tailwind-shadcn/scripts/requirements.txt +0 -0
- /package/assets/{skills → copilot/packs/frontend/skills}/tailwind-shadcn/scripts/shadcn_add.py +0 -0
- /package/assets/{skills → copilot/packs/frontend/skills}/tailwind-shadcn/scripts/tailwind_config_gen.py +0 -0
- /package/assets/{skills → copilot/packs/frontend/skills}/tailwind-shadcn/scripts/tests/coverage-ui.json +0 -0
- /package/assets/{skills → copilot/packs/frontend/skills}/tailwind-shadcn/scripts/tests/requirements.txt +0 -0
- /package/assets/{skills → copilot/packs/frontend/skills}/tailwind-shadcn/scripts/tests/test_shadcn_add.py +0 -0
- /package/assets/{skills → copilot/packs/frontend/skills}/tailwind-shadcn/scripts/tests/test_tailwind_config_gen.py +0 -0
- /package/assets/{claude → copilot/packs/frontend}/skills/tailwind-v4-vite/SKILL.md +0 -0
- /package/assets/{skills → copilot/packs/frontend/skills}/vercel-react-best-practices/AGENTS.md +0 -0
- /package/assets/{skills → copilot/packs/frontend/skills}/vercel-react-best-practices/README.md +0 -0
- /package/assets/{skills → copilot/packs/frontend/skills}/vercel-react-best-practices/SKILL.md +0 -0
- /package/assets/{skills → copilot/packs/frontend/skills}/vercel-react-best-practices/metadata.json +0 -0
- /package/assets/{skills → copilot/packs/frontend/skills}/vercel-react-best-practices/rules/_sections.md +0 -0
- /package/assets/{skills → copilot/packs/frontend/skills}/vercel-react-best-practices/rules/_template.md +0 -0
- /package/assets/{skills → copilot/packs/frontend/skills}/vercel-react-best-practices/rules/advanced-event-handler-refs.md +0 -0
- /package/assets/{skills → copilot/packs/frontend/skills}/vercel-react-best-practices/rules/advanced-use-latest.md +0 -0
- /package/assets/{skills → copilot/packs/frontend/skills}/vercel-react-best-practices/rules/async-api-routes.md +0 -0
- /package/assets/{skills → copilot/packs/frontend/skills}/vercel-react-best-practices/rules/async-defer-await.md +0 -0
- /package/assets/{skills → copilot/packs/frontend/skills}/vercel-react-best-practices/rules/async-dependencies.md +0 -0
- /package/assets/{skills → copilot/packs/frontend/skills}/vercel-react-best-practices/rules/async-parallel.md +0 -0
- /package/assets/{skills → copilot/packs/frontend/skills}/vercel-react-best-practices/rules/async-suspense-boundaries.md +0 -0
- /package/assets/{skills → copilot/packs/frontend/skills}/vercel-react-best-practices/rules/bundle-barrel-imports.md +0 -0
- /package/assets/{skills → copilot/packs/frontend/skills}/vercel-react-best-practices/rules/bundle-conditional.md +0 -0
- /package/assets/{skills → copilot/packs/frontend/skills}/vercel-react-best-practices/rules/bundle-defer-third-party.md +0 -0
- /package/assets/{skills → copilot/packs/frontend/skills}/vercel-react-best-practices/rules/bundle-dynamic-imports.md +0 -0
- /package/assets/{skills → copilot/packs/frontend/skills}/vercel-react-best-practices/rules/bundle-preload.md +0 -0
- /package/assets/{skills → copilot/packs/frontend/skills}/vercel-react-best-practices/rules/client-event-listeners.md +0 -0
- /package/assets/{skills → copilot/packs/frontend/skills}/vercel-react-best-practices/rules/client-localstorage-schema.md +0 -0
- /package/assets/{skills → copilot/packs/frontend/skills}/vercel-react-best-practices/rules/client-passive-event-listeners.md +0 -0
- /package/assets/{skills → copilot/packs/frontend/skills}/vercel-react-best-practices/rules/client-swr-dedup.md +0 -0
- /package/assets/{skills → copilot/packs/frontend/skills}/vercel-react-best-practices/rules/js-batch-dom-css.md +0 -0
- /package/assets/{skills → copilot/packs/frontend/skills}/vercel-react-best-practices/rules/js-cache-function-results.md +0 -0
- /package/assets/{skills → copilot/packs/frontend/skills}/vercel-react-best-practices/rules/js-cache-property-access.md +0 -0
- /package/assets/{skills → copilot/packs/frontend/skills}/vercel-react-best-practices/rules/js-cache-storage.md +0 -0
- /package/assets/{skills → copilot/packs/frontend/skills}/vercel-react-best-practices/rules/js-combine-iterations.md +0 -0
- /package/assets/{skills → copilot/packs/frontend/skills}/vercel-react-best-practices/rules/js-early-exit.md +0 -0
- /package/assets/{skills → copilot/packs/frontend/skills}/vercel-react-best-practices/rules/js-hoist-regexp.md +0 -0
- /package/assets/{skills → copilot/packs/frontend/skills}/vercel-react-best-practices/rules/js-index-maps.md +0 -0
- /package/assets/{skills → copilot/packs/frontend/skills}/vercel-react-best-practices/rules/js-length-check-first.md +0 -0
- /package/assets/{skills → copilot/packs/frontend/skills}/vercel-react-best-practices/rules/js-min-max-loop.md +0 -0
- /package/assets/{skills → copilot/packs/frontend/skills}/vercel-react-best-practices/rules/js-set-map-lookups.md +0 -0
- /package/assets/{skills → copilot/packs/frontend/skills}/vercel-react-best-practices/rules/js-tosorted-immutable.md +0 -0
- /package/assets/{skills → copilot/packs/frontend/skills}/vercel-react-best-practices/rules/rendering-activity.md +0 -0
- /package/assets/{skills → copilot/packs/frontend/skills}/vercel-react-best-practices/rules/rendering-animate-svg-wrapper.md +0 -0
- /package/assets/{skills → copilot/packs/frontend/skills}/vercel-react-best-practices/rules/rendering-conditional-render.md +0 -0
- /package/assets/{skills → copilot/packs/frontend/skills}/vercel-react-best-practices/rules/rendering-content-visibility.md +0 -0
- /package/assets/{skills → copilot/packs/frontend/skills}/vercel-react-best-practices/rules/rendering-hoist-jsx.md +0 -0
- /package/assets/{skills → copilot/packs/frontend/skills}/vercel-react-best-practices/rules/rendering-hydration-no-flicker.md +0 -0
- /package/assets/{skills → copilot/packs/frontend/skills}/vercel-react-best-practices/rules/rendering-svg-precision.md +0 -0
- /package/assets/{skills → copilot/packs/frontend/skills}/vercel-react-best-practices/rules/rerender-defer-reads.md +0 -0
- /package/assets/{skills → copilot/packs/frontend/skills}/vercel-react-best-practices/rules/rerender-dependencies.md +0 -0
- /package/assets/{skills → copilot/packs/frontend/skills}/vercel-react-best-practices/rules/rerender-derived-state.md +0 -0
- /package/assets/{skills → copilot/packs/frontend/skills}/vercel-react-best-practices/rules/rerender-functional-setstate.md +0 -0
- /package/assets/{skills → copilot/packs/frontend/skills}/vercel-react-best-practices/rules/rerender-lazy-state-init.md +0 -0
- /package/assets/{skills → copilot/packs/frontend/skills}/vercel-react-best-practices/rules/rerender-memo.md +0 -0
- /package/assets/{skills → copilot/packs/frontend/skills}/vercel-react-best-practices/rules/rerender-transitions.md +0 -0
- /package/assets/{skills → copilot/packs/frontend/skills}/vercel-react-best-practices/rules/server-after-nonblocking.md +0 -0
- /package/assets/{skills → copilot/packs/frontend/skills}/vercel-react-best-practices/rules/server-cache-lru.md +0 -0
- /package/assets/{skills → copilot/packs/frontend/skills}/vercel-react-best-practices/rules/server-cache-react.md +0 -0
- /package/assets/{skills → copilot/packs/frontend/skills}/vercel-react-best-practices/rules/server-parallel-fetching.md +0 -0
- /package/assets/{skills → copilot/packs/frontend/skills}/vercel-react-best-practices/rules/server-serialization.md +0 -0
- /package/assets/{skills → copilot/packs/frontend/skills}/web-design-guidelines/SKILL.md +0 -0
- /package/assets/{skills → copilot/packs/frontend/skills}/web-frameworks/SKILL.md +0 -0
- /package/assets/{skills → copilot/packs/frontend/skills}/web-frameworks/references/nextjs-app-router.md +0 -0
- /package/assets/{skills → copilot/packs/frontend/skills}/web-frameworks/references/nextjs-data-fetching.md +0 -0
- /package/assets/{skills → copilot/packs/frontend/skills}/web-frameworks/references/nextjs-optimization.md +0 -0
- /package/assets/{skills → copilot/packs/frontend/skills}/web-frameworks/references/nextjs-server-components.md +0 -0
- /package/assets/{skills → copilot/packs/frontend/skills}/web-frameworks/references/remix-icon-integration.md +0 -0
- /package/assets/{skills → copilot/packs/frontend/skills}/web-frameworks/references/turborepo-caching.md +0 -0
- /package/assets/{skills → copilot/packs/frontend/skills}/web-frameworks/references/turborepo-pipelines.md +0 -0
- /package/assets/{skills → copilot/packs/frontend/skills}/web-frameworks/references/turborepo-setup.md +0 -0
- /package/assets/{skills → copilot/packs/frontend/skills}/web-frameworks/scripts/.coverage +0 -0
- /package/assets/{skills → copilot/packs/frontend/skills}/web-frameworks/scripts/__init__.py +0 -0
- /package/assets/{skills → copilot/packs/frontend/skills}/web-frameworks/scripts/nextjs_init.py +0 -0
- /package/assets/{skills → copilot/packs/frontend/skills}/web-frameworks/scripts/requirements.txt +0 -0
- /package/assets/{skills → copilot/packs/frontend/skills}/web-frameworks/scripts/tests/coverage-web.json +0 -0
- /package/assets/{skills → copilot/packs/frontend/skills}/web-frameworks/scripts/tests/requirements.txt +0 -0
- /package/assets/{skills → copilot/packs/frontend/skills}/web-frameworks/scripts/tests/test_nextjs_init.py +0 -0
- /package/assets/{skills → copilot/packs/frontend/skills}/web-frameworks/scripts/tests/test_turborepo_migrate.py +0 -0
- /package/assets/{skills → copilot/packs/frontend/skills}/web-frameworks/scripts/turborepo_migrate.py +0 -0
- /package/assets/{skills → copilot/packs/playwright/skills}/chrome-devtools/references/cdp-domains.md +0 -0
- /package/assets/{skills → copilot/packs/playwright/skills}/chrome-devtools/references/performance-guide.md +0 -0
- /package/assets/{skills → copilot/packs/playwright/skills}/chrome-devtools/references/puppeteer-reference.md +0 -0
- /package/assets/{skills → copilot/packs/playwright/skills}/chrome-devtools/scripts/PERSISTENT-BROWSER.md +0 -0
- /package/assets/{skills → copilot/packs/playwright/skills}/chrome-devtools/scripts/__tests__/selector.test.js +0 -0
- /package/assets/{skills → copilot/packs/playwright/skills}/chrome-devtools/scripts/click.js +0 -0
- /package/assets/{skills → copilot/packs/playwright/skills}/chrome-devtools/scripts/close-persistent.js +0 -0
- /package/assets/{skills → copilot/packs/playwright/skills}/chrome-devtools/scripts/console.js +0 -0
- /package/assets/{skills → copilot/packs/playwright/skills}/chrome-devtools/scripts/evaluate.js +0 -0
- /package/assets/{skills → copilot/packs/playwright/skills}/chrome-devtools/scripts/fill.js +0 -0
- /package/assets/{skills → copilot/packs/playwright/skills}/chrome-devtools/scripts/install-deps.sh +0 -0
- /package/assets/{skills → copilot/packs/playwright/skills}/chrome-devtools/scripts/install.sh +0 -0
- /package/assets/{skills → copilot/packs/playwright/skills}/chrome-devtools/scripts/launch-persistent.js +0 -0
- /package/assets/{skills → copilot/packs/playwright/skills}/chrome-devtools/scripts/lib/browser.js +0 -0
- /package/assets/{skills → copilot/packs/playwright/skills}/chrome-devtools/scripts/lib/selector.js +0 -0
- /package/assets/{skills → copilot/packs/playwright/skills}/chrome-devtools/scripts/navigate.js +0 -0
- /package/assets/{skills → copilot/packs/playwright/skills}/chrome-devtools/scripts/network.js +0 -0
- /package/assets/{skills → copilot/packs/playwright/skills}/chrome-devtools/scripts/package-lock.json +0 -0
- /package/assets/{skills → copilot/packs/playwright/skills}/chrome-devtools/scripts/package.json +0 -0
- /package/assets/{skills → copilot/packs/playwright/skills}/chrome-devtools/scripts/performance.js +0 -0
- /package/assets/{skills → copilot/packs/playwright/skills}/chrome-devtools/scripts/screenshot.js +0 -0
- /package/assets/{skills → copilot/packs/playwright/skills}/chrome-devtools/scripts/snapshot.js +0 -0
- /package/assets/{claude → copilot/packs/polyglot}/skills/java/SKILL.md +0 -0
- /package/assets/{skills → copilot/skills}/code-review/SKILL.md +0 -0
- /package/assets/{skills → copilot/skills}/code-review/references/code-review-reception.md +0 -0
- /package/assets/{skills → copilot/skills}/code-review/references/requesting-code-review.md +0 -0
- /package/assets/{skills → copilot/skills}/code-review/references/verification-before-completion.md +0 -0
- /package/assets/{skills → copilot/skills}/debugging/defense-in-depth/SKILL.md +0 -0
- /package/assets/{skills → copilot/skills}/debugging/root-cause-tracing/SKILL.md +0 -0
- /package/assets/{skills → copilot/skills}/debugging/root-cause-tracing/find-polluter.sh +0 -0
- /package/assets/{skills → copilot/skills}/debugging/systematic-debugging/CREATION-LOG.md +0 -0
- /package/assets/{skills → copilot/skills}/debugging/systematic-debugging/SKILL.md +0 -0
- /package/assets/{skills → copilot/skills}/debugging/systematic-debugging/test-academic.md +0 -0
- /package/assets/{skills → copilot/skills}/debugging/systematic-debugging/test-pressure-1.md +0 -0
- /package/assets/{skills → copilot/skills}/debugging/systematic-debugging/test-pressure-2.md +0 -0
- /package/assets/{skills → copilot/skills}/debugging/systematic-debugging/test-pressure-3.md +0 -0
- /package/assets/{skills → copilot/skills}/debugging/verification-before-completion/SKILL.md +0 -0
- /package/assets/{skills → copilot/skills}/docs-seeker/SKILL.md +0 -0
- /package/assets/{skills → copilot/skills}/docs-seeker/WORKFLOWS.md +0 -0
- /package/assets/{skills → copilot/skills}/docs-seeker/references/best-practices.md +0 -0
- /package/assets/{skills → copilot/skills}/docs-seeker/references/documentation-sources.md +0 -0
- /package/assets/{skills → copilot/skills}/docs-seeker/references/error-handling.md +0 -0
- /package/assets/{skills → copilot/skills}/docs-seeker/references/limitations.md +0 -0
- /package/assets/{skills → copilot/skills}/docs-seeker/references/performance.md +0 -0
- /package/assets/{skills → copilot/skills}/docs-seeker/references/tool-selection.md +0 -0
- /package/assets/{skills/skill-creator → copilot/skills/mcp-builder}/LICENSE.txt +0 -0
- /package/assets/{skills → copilot/skills}/mcp-builder/SKILL.md +0 -0
- /package/assets/{skills → copilot/skills}/mcp-builder/reference/evaluation.md +0 -0
- /package/assets/{skills → copilot/skills}/mcp-builder/reference/mcp_best_practices.md +0 -0
- /package/assets/{skills → copilot/skills}/mcp-builder/reference/node_mcp_server.md +0 -0
- /package/assets/{skills → copilot/skills}/mcp-builder/reference/python_mcp_server.md +0 -0
- /package/assets/{skills → copilot/skills}/mcp-builder/scripts/connections.py +0 -0
- /package/assets/{skills → copilot/skills}/mcp-builder/scripts/evaluation.py +0 -0
- /package/assets/{skills → copilot/skills}/mcp-builder/scripts/example_evaluation.xml +0 -0
- /package/assets/{skills → copilot/skills}/mcp-builder/scripts/requirements.txt +0 -0
- /package/assets/{skills → copilot/skills}/mermaidjs-v11/SKILL.md +0 -0
- /package/assets/{skills → copilot/skills}/mermaidjs-v11/references/cli-usage.md +0 -0
- /package/assets/{skills → copilot/skills}/mermaidjs-v11/references/configuration.md +0 -0
- /package/assets/{skills → copilot/skills}/mermaidjs-v11/references/diagram-types.md +0 -0
- /package/assets/{skills → copilot/skills}/mermaidjs-v11/references/examples.md +0 -0
- /package/assets/{skills → copilot/skills}/mermaidjs-v11/references/integration.md +0 -0
- /package/assets/{skills → copilot/skills}/problem-solving/ABOUT.md +0 -0
- /package/assets/{skills → copilot/skills}/problem-solving/collision-zone-thinking/SKILL.md +0 -0
- /package/assets/{skills → copilot/skills}/problem-solving/inversion-exercise/SKILL.md +0 -0
- /package/assets/{skills → copilot/skills}/problem-solving/meta-pattern-recognition/SKILL.md +0 -0
- /package/assets/{skills → copilot/skills}/problem-solving/scale-game/SKILL.md +0 -0
- /package/assets/{skills → copilot/skills}/problem-solving/simplification-cascades/SKILL.md +0 -0
- /package/assets/{skills → copilot/skills}/problem-solving/when-stuck/SKILL.md +0 -0
- /package/assets/{skills → copilot/skills}/sequential-thinking/SKILL.md +0 -0
- /package/assets/{skills → copilot/skills}/sequential-thinking/references/advanced.md +0 -0
- /package/assets/{skills → copilot/skills}/sequential-thinking/references/examples.md +0 -0
- /package/assets/{skills/tailwind-shadcn → copilot/skills/skill-creator}/LICENSE.txt +0 -0
- /package/assets/{skills → copilot/skills}/skill-creator/scripts/init_skill.py +0 -0
- /package/assets/{skills → copilot/skills}/skill-creator/scripts/package_skill.py +0 -0
- /package/assets/{skills → copilot/skills}/skill-creator/scripts/quick_validate.py +0 -0
|
@@ -1,636 +1,676 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
/**
|
|
3
|
-
* Generate the
|
|
3
|
+
* Generate the **Copilot** target's catalog from the canonical **Claude** source trees.
|
|
4
4
|
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
* assets/skills/<name>/ -> assets/claude/skills/<name>/ (near-verbatim)
|
|
9
|
-
* assets/instructions/<name>/<name>.instructions.md -> assets/claude/skills/<name>/SKILL.md (new skill)
|
|
5
|
+
* DIRECTION (Vesper 2.0): `assets/claude/` + `assets/claude-committed/` are the sole
|
|
6
|
+
* hand-authored catalog; `assets/copilot/` is machine-generated, COMMITTED output. The
|
|
7
|
+
* filename is historical (it is still "the asset generator"); only its direction changed.
|
|
10
8
|
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
*
|
|
9
|
+
* THIS FILE IS AN I/O SHELL. Every Claude → Copilot inversion layer lives in the PURE
|
|
10
|
+
* module `src/cli/utils/copilot-render.js`, which the runtime Copilot provisioning
|
|
11
|
+
* module imports too. Runtime code must NEVER import from `scripts/` (enforced by a
|
|
12
|
+
* test): the CLI bundle once inlined this file's run-as-main guard and regenerated the
|
|
13
|
+
* installed package's assets mid-command.
|
|
15
14
|
*
|
|
16
|
-
*
|
|
17
|
-
*
|
|
18
|
-
*
|
|
19
|
-
*
|
|
20
|
-
*
|
|
21
|
-
*
|
|
15
|
+
* Scan roots → outputs:
|
|
16
|
+
*
|
|
17
|
+
* assets/claude/agents/<name>.md -> copilot/agents/<name>.agent.md (hidden specialist)
|
|
18
|
+
* assets/claude/skills/<name>/ -> copilot/skills/<name>/ (EVERY .md rendered)
|
|
19
|
+
* assets/claude/skills/<name>/SKILL.md
|
|
20
|
+
* `copilot-apply-to` + tier `core` -> copilot/instructions/<name>.instructions.md
|
|
21
|
+
* `copilot-apply-to` + tier `extended` -> copilot/instructions-extended/<name>/<name>.instructions.md
|
|
22
|
+
* assets/claude-committed/skills/<name>/ -> copilot/prompts/<name>.prompt.md
|
|
23
|
+
* (must carry `disable-model-invocation: true`)
|
|
24
|
+
* assets/claude/packs/<pack>/agents/<name>.md -> copilot/packs/<pack>/agents/<name>.agent.md
|
|
25
|
+
* assets/claude/packs/<pack>/skills/<name>/ -> copilot/packs/<pack>/skills/<name>/
|
|
26
|
+
* (tiered instructions of a packed skill go to the GLOBAL instructions folders above;
|
|
27
|
+
* the shared `agent-fundamentals` copy each pack carries is validated, not mirrored;
|
|
28
|
+
* a THIRD-PARTY skill — one carrying `UPSTREAM.json` (epic J) — is copied VERBATIM,
|
|
29
|
+
* `UPSTREAM.json` and `LICENSE` included: Vesper does not author it, so it is neither
|
|
30
|
+
* rendered nor residue-scanned, and its own `disable-model-invocation` marker is allowed)
|
|
31
|
+
* assets/manifest.json <- written here too (no timestamp); carries
|
|
32
|
+
* `packs` + `assetPacks` (pack per asset)
|
|
33
|
+
*
|
|
34
|
+
* The instruction TIER restores 1.x's core/extended split (1.x kept them apart by tree:
|
|
35
|
+
* `assets/core/instructions/` injected for every project, `assets/instructions/<name>/`
|
|
36
|
+
* opt-in). Only the core folder is default-injected by `settings.js`; each extended
|
|
37
|
+
* instruction lives in its own folder so it can be injected individually.
|
|
38
|
+
*
|
|
39
|
+
* STRICT: any per-entry failure (I/O, missing/unsafe frontmatter, a committed skill
|
|
40
|
+
* without the maintenance marker, a plugin skill WITH it, an unmapped tool or model,
|
|
41
|
+
* Claude-host residue outside the allow-list) fails the run with every error listed,
|
|
42
|
+
* and NOTHING is written.
|
|
43
|
+
* ATOMIC: the tree is built in memory, written to a sibling temp dir, and swapped in
|
|
44
|
+
* by rename — an interrupted run never leaves a partial `assets/copilot/`.
|
|
45
|
+
*
|
|
46
|
+
* !! LOAD-BEARING !! `disable-model-invocation: true` is NOT globally unique (the third-party
|
|
47
|
+
* `packs/styles/skills/i-have-adhd/SKILL.md` carries it). Prompt emission is scoped to
|
|
48
|
+
* `assets/claude-committed/skills/` by TREE LOCATION, never by the marker alone.
|
|
22
49
|
*
|
|
23
50
|
* Run: node scripts/generate-claude-assets.js
|
|
24
51
|
*/
|
|
25
52
|
|
|
26
|
-
import { readdir, readFile, writeFile, mkdir,
|
|
27
|
-
import {
|
|
53
|
+
import { readdir, readFile, writeFile, mkdir, rm, rename, stat, chmod } from 'node:fs/promises';
|
|
54
|
+
import { existsSync } from 'node:fs';
|
|
55
|
+
import { join, dirname, relative, sep } from 'node:path';
|
|
28
56
|
import { fileURLToPath, pathToFileURL } from 'node:url';
|
|
29
|
-
|
|
57
|
+
|
|
58
|
+
import {
|
|
59
|
+
splitFrontmatter,
|
|
60
|
+
readFrontmatterValue,
|
|
61
|
+
isYamlSafeInlineScalar,
|
|
62
|
+
extractClaudeToolTokens,
|
|
63
|
+
mapClaudeToolsToCopilot,
|
|
64
|
+
mapMcpTools,
|
|
65
|
+
convertAgentToCopilot,
|
|
66
|
+
convertMaintenanceSkillToPrompt,
|
|
67
|
+
convertSkillToInstructions,
|
|
68
|
+
convertSkillMd,
|
|
69
|
+
convertSkillMarkdownFile,
|
|
70
|
+
applyCopilotBodyTokenReplacements,
|
|
71
|
+
renderCopilotText,
|
|
72
|
+
hasMaintenanceMarker,
|
|
73
|
+
readInstructionTier,
|
|
74
|
+
COPILOT_INSTRUCTION_TIERS,
|
|
75
|
+
__resetDiagnostics,
|
|
76
|
+
__getDiagnostics,
|
|
77
|
+
getDiagnosticMessages,
|
|
78
|
+
} from '../src/cli/utils/copilot-render.js';
|
|
79
|
+
|
|
80
|
+
// Re-exported so the generator's own test suite (and tooling) keeps one import site.
|
|
81
|
+
export {
|
|
82
|
+
splitFrontmatter,
|
|
83
|
+
readFrontmatterValue,
|
|
84
|
+
extractClaudeToolTokens,
|
|
85
|
+
mapClaudeToolsToCopilot,
|
|
86
|
+
mapMcpTools,
|
|
87
|
+
convertAgentToCopilot,
|
|
88
|
+
convertMaintenanceSkillToPrompt,
|
|
89
|
+
convertSkillToInstructions,
|
|
90
|
+
convertSkillMd,
|
|
91
|
+
applyCopilotBodyTokenReplacements,
|
|
92
|
+
renderCopilotText,
|
|
93
|
+
__resetDiagnostics,
|
|
94
|
+
__getDiagnostics,
|
|
95
|
+
};
|
|
30
96
|
|
|
31
97
|
const __filename = fileURLToPath(import.meta.url);
|
|
32
98
|
const __dirname = dirname(__filename);
|
|
33
99
|
|
|
34
|
-
const ASSETS_DIR = join(__dirname, '..', 'assets');
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
'read': 'Read',
|
|
41
|
-
'edit/editFiles': 'Edit, Write',
|
|
42
|
-
'edit/createFile': 'Write',
|
|
43
|
-
'edit/createDirectory': 'Write',
|
|
44
|
-
'edit': 'Edit, Write',
|
|
45
|
-
'execute/runInTerminal': 'Bash',
|
|
46
|
-
'execute/createAndRunTask': 'Bash',
|
|
47
|
-
'execute/getTerminalOutput': 'Bash',
|
|
48
|
-
'execute/testFailure': 'Bash',
|
|
49
|
-
'execute/runTests': 'Bash',
|
|
50
|
-
'execute/runNotebookCell': 'Bash',
|
|
51
|
-
'execute/awaitTerminal': 'Bash',
|
|
52
|
-
'execute': 'Bash',
|
|
53
|
-
'search/listDirectory': 'Glob',
|
|
54
|
-
'search/fileSearch': 'Glob',
|
|
55
|
-
'search/codebase': 'Grep',
|
|
56
|
-
'search/changes': 'Bash',
|
|
57
|
-
'search/searchSubagent': 'Agent',
|
|
58
|
-
'search': 'Grep, Glob',
|
|
59
|
-
'todo': 'TodoWrite',
|
|
60
|
-
'agent': 'Agent',
|
|
61
|
-
'agent/runSubagent': 'Agent', // namespaced Copilot spelling of the subagent-invocation capability; equivalent to bare `agent`
|
|
62
|
-
'vscode/askQuestions': 'AskUserQuestion',
|
|
63
|
-
'web/fetch': 'WebFetch',
|
|
64
|
-
'web': 'WebFetch, WebSearch',
|
|
65
|
-
};
|
|
100
|
+
export const ASSETS_DIR = join(__dirname, '..', 'assets');
|
|
101
|
+
/** The committed Copilot output root (M-2). Never hand-edited — regenerate instead. */
|
|
102
|
+
export const COPILOT_DIR = join(ASSETS_DIR, 'copilot');
|
|
103
|
+
|
|
104
|
+
/** The two canonical, hand-authored roots (assets-relative). */
|
|
105
|
+
export const CANONICAL_ROOTS = Object.freeze(['claude', 'claude-committed']);
|
|
66
106
|
|
|
67
107
|
/**
|
|
68
|
-
*
|
|
69
|
-
*
|
|
70
|
-
*
|
|
71
|
-
* MCP_PASSTHROUGH is treated as a hazard and warned about (see mapToolTokens).
|
|
108
|
+
* The four — and only four — scan roots, as assets-relative POSIX paths. `packs` is the root of
|
|
109
|
+
* the stack packs (epic H): each `claude/packs/<pack>/` is a plugin of its own (`vesper-<pack>`)
|
|
110
|
+
* with its own `agents/` + `skills/`, listed in the marketplace next to the core plugin.
|
|
72
111
|
*/
|
|
73
|
-
const
|
|
74
|
-
|
|
75
|
-
'
|
|
76
|
-
'
|
|
77
|
-
'
|
|
78
|
-
|
|
79
|
-
'vscode/runCommand',
|
|
80
|
-
'vscode/vscodeAPI',
|
|
81
|
-
'vscode/extensions',
|
|
82
|
-
'vscode',
|
|
83
|
-
// Copilot-only task/terminal/diagnostic capabilities — no Claude Code equivalent.
|
|
84
|
-
'read/problems', // VS Code Problems panel; Claude has no diagnostics feed
|
|
85
|
-
'execute/runTask', // VS Code task runner; Claude uses Bash directly
|
|
86
|
-
'execute/getTaskOutput', // paired with runTask; N/A in Claude
|
|
87
|
-
'read/getTaskOutput', // Copilot task-runner readback (read a VS Code task's output); sibling of execute/getTaskOutput. No Claude equivalent.
|
|
88
|
-
'read/terminalLastCommand', // VS Code terminal introspection
|
|
89
|
-
'read/terminalSelection', // VS Code terminal introspection
|
|
90
|
-
// Copilot-only search/context capabilities with no Claude Code analogue.
|
|
91
|
-
'web/githubRepo', // Copilot GitHub repo context provider
|
|
92
|
-
'findTestFiles', // Copilot test-file locator; use Glob/Grep in Claude
|
|
93
|
-
'search/searchResults', // Copilot search-results context provider
|
|
94
|
-
'search/usages', // Copilot symbol-usages provider
|
|
95
|
-
// Copilot-only MCP/context providers with no Claude equivalent in this catalog.
|
|
96
|
-
'microsoft.docs.mcp', // Copilot-bundled Microsoft Docs MCP
|
|
97
|
-
'github', // Copilot GitHub context provider
|
|
98
|
-
]);
|
|
112
|
+
export const SCAN_ROOT_RELATIVE_PATHS = Object.freeze({
|
|
113
|
+
pluginAgents: 'claude/agents',
|
|
114
|
+
pluginSkills: 'claude/skills',
|
|
115
|
+
packs: 'claude/packs',
|
|
116
|
+
committedSkills: 'claude-committed/skills',
|
|
117
|
+
});
|
|
99
118
|
|
|
100
|
-
/**
|
|
101
|
-
const
|
|
102
|
-
|
|
103
|
-
// Pinned model IDs, not floating aliases (`opus`/`sonnet`/`haiku`) — aliases
|
|
104
|
-
// silently track the newest release of each family, which means unreviewed
|
|
105
|
-
// cost changes. Bump these deliberately when adopting a new model version.
|
|
106
|
-
const MODEL_MAP = {
|
|
107
|
-
'Claude Opus 4.8': 'claude-opus-4-8',
|
|
108
|
-
'Claude Opus 4.7': 'claude-opus-4-8',
|
|
109
|
-
'Claude Sonnet 4.6': 'claude-sonnet-5',
|
|
110
|
-
'Claude Haiku 4.5': 'claude-haiku-4-5-20251001',
|
|
111
|
-
'GPT-5.5': 'claude-sonnet-5',
|
|
112
|
-
};
|
|
119
|
+
/** Plugin name prefix of every pack: `vesper-<pack>` (the core plugin is `vesper`). */
|
|
120
|
+
export const PACK_PLUGIN_PREFIX = 'vesper-';
|
|
113
121
|
|
|
114
122
|
/**
|
|
115
|
-
*
|
|
116
|
-
*
|
|
117
|
-
*
|
|
123
|
+
* The provenance record a THIRD-PARTY pack skill carries beside its `SKILL.md` (epic J):
|
|
124
|
+
* `{ upstream, sha, retrieved, license, path }`, written by `scripts/vendor-sync.js`. Its
|
|
125
|
+
* presence is what makes a skill third-party to this generator: copied verbatim, never
|
|
126
|
+
* rendered, never residue-scanned, its own frontmatter markers allowed.
|
|
118
127
|
*/
|
|
119
|
-
|
|
120
|
-
return raw.trim().replace(/^['"]|['"]$/g, '');
|
|
121
|
-
}
|
|
128
|
+
export const UPSTREAM_RECORD_FILE = 'UPSTREAM.json';
|
|
122
129
|
|
|
123
|
-
/**
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
*
|
|
128
|
-
* The dash-list branch is DEFECT 1's fix: without it, a `tools:` written as a
|
|
129
|
-
* YAML sequence matches no branch and the generated agent ships with no `tools:`
|
|
130
|
-
* key at all — which, per Claude Code docs, silently inherits ALL tools (including
|
|
131
|
-
* every live MCP tool). Parser-only fix: authored dash-list sources are NOT rewritten.
|
|
132
|
-
* @param {string} frontmatter
|
|
133
|
-
* @returns {string[]}
|
|
134
|
-
*/
|
|
135
|
-
function extractToolTokens(frontmatter) {
|
|
136
|
-
// Bracket-array form first (unchanged behavior).
|
|
137
|
-
const bracket = frontmatter.match(/tools:\s*\[([\s\S]*?)\]/);
|
|
138
|
-
if (bracket) {
|
|
139
|
-
return bracket[1]
|
|
140
|
-
.split(',')
|
|
141
|
-
.map(normalizeToolItem)
|
|
142
|
-
.filter(Boolean);
|
|
143
|
-
}
|
|
130
|
+
/** Is this skill folder third-party (carries an `UPSTREAM.json`)? */
|
|
131
|
+
export function isThirdPartySkillDir(skillDir) {
|
|
132
|
+
return existsSync(join(skillDir, UPSTREAM_RECORD_FILE));
|
|
133
|
+
}
|
|
144
134
|
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
if (
|
|
153
|
-
|
|
154
|
-
const tokens = [];
|
|
155
|
-
for (let i = startIdx + 1; i < lines.length; i++) {
|
|
156
|
-
const line = lines[i];
|
|
157
|
-
const dash = line.match(/^\s*-\s+(.*)$/); // tolerate mixed indentation
|
|
158
|
-
if (dash) {
|
|
159
|
-
// Strip a trailing inline `# comment`, then normalize (trim + unquote).
|
|
160
|
-
const item = normalizeToolItem(dash[1].replace(/\s+#.*$/, ''));
|
|
161
|
-
if (item) tokens.push(item);
|
|
162
|
-
continue;
|
|
163
|
-
}
|
|
164
|
-
if (line.trim() === '') continue; // tolerate blank lines within the block
|
|
165
|
-
break; // next non-indented, non-dash key ends the block (empty list -> [])
|
|
166
|
-
}
|
|
167
|
-
return tokens;
|
|
135
|
+
/** Validate a third-party skill's `UPSTREAM.json`; errors pushed, never thrown. */
|
|
136
|
+
async function checkUpstreamRecord(skillDir, where, errors) {
|
|
137
|
+
const rec = await readJsonOrNull(join(skillDir, UPSTREAM_RECORD_FILE));
|
|
138
|
+
if (!rec) { errors.push(`${where}/${UPSTREAM_RECORD_FILE}: missing or unparseable`); return; }
|
|
139
|
+
if (typeof rec.upstream !== 'string' || !/^https?:\/\/\S+$/.test(rec.upstream)) errors.push(`${where}/${UPSTREAM_RECORD_FILE}: "upstream" must be a git URL`);
|
|
140
|
+
if (typeof rec.sha !== 'string' || !/^[0-9a-f]{40}$/.test(rec.sha)) errors.push(`${where}/${UPSTREAM_RECORD_FILE}: "sha" must be a 40-hex commit`);
|
|
141
|
+
if (typeof rec.retrieved !== 'string' || !/^\d{4}-\d{2}-\d{2}$/.test(rec.retrieved)) errors.push(`${where}/${UPSTREAM_RECORD_FILE}: "retrieved" must be YYYY-MM-DD`);
|
|
142
|
+
if (typeof rec.license !== 'string' || !rec.license) errors.push(`${where}/${UPSTREAM_RECORD_FILE}: "license" is required`);
|
|
143
|
+
if (!existsSync(join(skillDir, 'LICENSE'))) errors.push(`${where}: a third-party skill ships its upstream LICENSE verbatim`);
|
|
168
144
|
}
|
|
169
145
|
|
|
170
146
|
/**
|
|
171
|
-
*
|
|
172
|
-
*
|
|
173
|
-
*
|
|
147
|
+
* Skills every pack carries as a byte-identical COPY of the core skill. Every agent preloads
|
|
148
|
+
* `agent-fundamentals` through its `skills:` frontmatter; the Claude Code docs do not promise
|
|
149
|
+
* that a plugin agent can preload a skill shipped by a DIFFERENT plugin, so each pack ships its
|
|
150
|
+
* own copy (kept identical to the core by `syncSharedPackSkills`, asserted by the strict build).
|
|
151
|
+
* The Copilot mirror does NOT duplicate them: Copilot injects the core `skills/` folder for
|
|
152
|
+
* every project, so one copy is enough there.
|
|
174
153
|
*/
|
|
175
|
-
|
|
154
|
+
export const SHARED_PACK_SKILLS = Object.freeze(['agent-fundamentals']);
|
|
176
155
|
|
|
177
|
-
/**
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
156
|
+
/** The pack names (directory names under `claude/packs/`), sorted. */
|
|
157
|
+
export async function listPackNames(assetsDir = ASSETS_DIR) {
|
|
158
|
+
try {
|
|
159
|
+
const entries = await readdir(join(assetsDir, SCAN_ROOT_RELATIVE_PATHS.packs), { withFileTypes: true });
|
|
160
|
+
return entries.filter((e) => e.isDirectory() && !e.name.startsWith('.')).map((e) => e.name).sort();
|
|
161
|
+
} catch {
|
|
162
|
+
return [];
|
|
163
|
+
}
|
|
164
|
+
}
|
|
184
165
|
|
|
185
166
|
/**
|
|
186
|
-
*
|
|
187
|
-
*
|
|
188
|
-
*
|
|
189
|
-
*
|
|
167
|
+
* Every child of a canonical root that is deliberately NOT a scan root. The
|
|
168
|
+
* completeness test requires each child of `assets/claude/` and
|
|
169
|
+
* `assets/claude-committed/` to be EITHER a scan root OR listed here, so a catalog
|
|
170
|
+
* author adding a tree gets a failing test instead of silent non-emission.
|
|
190
171
|
*/
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
continue;
|
|
200
|
-
}
|
|
201
|
-
const mapped = TOOL_MAP[token];
|
|
202
|
-
if (mapped) {
|
|
203
|
-
mapped.split(',').forEach(t => claudeTools.add(t.trim()));
|
|
204
|
-
continue;
|
|
205
|
-
}
|
|
206
|
-
// Unknown token: not mapped, not an MCP passthrough, not an intentional drop.
|
|
207
|
-
// This is exactly the diagnostic that would have surfaced DEFECT 2 (`clickup/*`)
|
|
208
|
-
// instead of letting it vanish. Warn and continue; CI/--strict escalates in main().
|
|
209
|
-
sawUnknownToken = true;
|
|
210
|
-
const where = agentName ? ` (in agent "${agentName}")` : '';
|
|
211
|
-
console.warn(
|
|
212
|
-
` [unknown-tool-token] "${token}"${where} matches no TOOL_MAP, MCP_PASSTHROUGH, or DROP_TOKENS entry — dropped. ` +
|
|
213
|
-
`Map it, add it to MCP_PASSTHROUGH, or add it to DROP_TOKENS if intentional.`
|
|
214
|
-
);
|
|
215
|
-
}
|
|
216
|
-
|
|
217
|
-
// Expand known MCP servers to their concrete tool names (best-effort; unknown servers noted as-is).
|
|
218
|
-
//
|
|
219
|
-
// The four entries below are a DELIBERATELY CURATED read-mostly SUBSET — NOT a mirror of
|
|
220
|
-
// MCP_SERVERS (which is the full auto-approval superset: memory has 9 tools incl. delete_*/
|
|
221
|
-
// read_graph, context7 has 3). Deriving these from MCP_SERVERS by rule would grant destructive
|
|
222
|
-
// tools to every agent declaring `memory/*`, re-creating the fail-open class this file fixes.
|
|
223
|
-
// Leave them literal. `clickup` is the sole exception: it has no curated subset, so its full
|
|
224
|
-
// set is sourced from the single source of truth in settings.js (MCP_SERVERS.clickup.tools).
|
|
225
|
-
const MCP_TOOL_NAMES = {
|
|
226
|
-
'vesper-indexing': ['mcp__vesper-indexing__vesper_search', 'mcp__vesper-indexing__vesper_symbols', 'mcp__vesper-indexing__vesper_status', 'mcp__vesper-indexing__vesper_reindex'],
|
|
227
|
-
'memory': ['mcp__memory__create_entities', 'mcp__memory__create_relations', 'mcp__memory__add_observations', 'mcp__memory__search_nodes', 'mcp__memory__open_nodes'],
|
|
228
|
-
'sequential-thinking': ['mcp__sequential-thinking__sequentialthinking'],
|
|
229
|
-
'context7': ['mcp__context7__resolve-library-id', 'mcp__context7__get-library-docs'],
|
|
230
|
-
'clickup': MCP_SERVERS.clickup.tools.map(t => `mcp__clickup__${t}`),
|
|
231
|
-
};
|
|
232
|
-
for (const server of mcpNotes) {
|
|
233
|
-
(MCP_TOOL_NAMES[server] || []).forEach(t => claudeTools.add(t));
|
|
234
|
-
}
|
|
172
|
+
export const EXCLUDED_SOURCE_PATHS = Object.freeze([
|
|
173
|
+
'claude/.claude-plugin', // plugin manifest dir (plugin.json, marketplace.json)
|
|
174
|
+
'claude/vesper-orchestrator.md', // always-on playbook \
|
|
175
|
+
'claude/orchestration.md.tpl', // roster template } rendered project-local by the
|
|
176
|
+
'claude/context.md.tpl', // whitepaper template / host modules, not emitted here
|
|
177
|
+
'claude/evals', // `claude plugin eval` suite (epic G): tests the plugin, ships nowhere
|
|
178
|
+
'claude-committed/agents', // the thin pickable persona (DEC-7: rendered project-local)
|
|
179
|
+
]);
|
|
235
180
|
|
|
236
|
-
|
|
181
|
+
/** Normalize an absolute-or-relative path to an assets-relative POSIX path. */
|
|
182
|
+
function toAssetsRelative(somePath) {
|
|
183
|
+
const rel = somePath.startsWith(ASSETS_DIR) ? relative(ASSETS_DIR, somePath) : somePath;
|
|
184
|
+
return rel.split(sep).join('/').replace(/^\.\//, '').replace(/\/+$/, '');
|
|
237
185
|
}
|
|
238
186
|
|
|
239
187
|
/**
|
|
240
|
-
*
|
|
241
|
-
*
|
|
242
|
-
* @param {string}
|
|
243
|
-
* @returns {string}
|
|
188
|
+
* Is this source path excluded from scanning? True for the listed canonical-root
|
|
189
|
+
* children and for anything outside the two canonical roots (`hooks/`, `legacy/`, …).
|
|
190
|
+
* @param {string} somePath - absolute path, or a path already relative to `assets/`
|
|
244
191
|
*/
|
|
245
|
-
function
|
|
246
|
-
const
|
|
247
|
-
if (!
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
const description = descriptionMatch ? descriptionMatch[1] : `${kebabName} specialist agent`;
|
|
254
|
-
const model = modelMatch ? (MODEL_MAP[modelMatch[1]] || 'claude-sonnet-5') : 'claude-sonnet-5';
|
|
255
|
-
const tools = mapToolTokens(extractToolTokens(frontmatter), kebabName);
|
|
256
|
-
|
|
257
|
-
const newFrontmatter = [
|
|
258
|
-
`name: ${kebabName}`,
|
|
259
|
-
`description: ${description}`,
|
|
260
|
-
`model: ${model}`,
|
|
261
|
-
tools ? `tools: ${tools}` : null,
|
|
262
|
-
// Preload the universal Vesper baseline skill into every subagent —
|
|
263
|
-
// guarantees terminal discipline / codebase-query rules without relying
|
|
264
|
-
// on incidental skill auto-discovery.
|
|
265
|
-
'skills: [agent-fundamentals]',
|
|
266
|
-
].filter(Boolean).join('\n');
|
|
267
|
-
|
|
268
|
-
const cleanedBody = applyBodyTokenReplacements(body);
|
|
269
|
-
|
|
270
|
-
return `---\n${newFrontmatter}\n---\n${cleanedBody}`;
|
|
192
|
+
export function isExcludedSource(somePath) {
|
|
193
|
+
const rel = toAssetsRelative(somePath);
|
|
194
|
+
if (!CANONICAL_ROOTS.some((r) => rel === r || rel.startsWith(`${r}/`))) return true;
|
|
195
|
+
// Each pack's own plugin manifest dir (`claude/packs/<pack>/.claude-plugin`) — the per-pack
|
|
196
|
+
// twin of `claude/.claude-plugin`; validated by the build, never emitted.
|
|
197
|
+
if (/^claude\/packs\/[^/]+\/\.claude-plugin(\/|$)/.test(rel)) return true;
|
|
198
|
+
return EXCLUDED_SOURCE_PATHS.some((ex) => rel === ex || rel.startsWith(`${ex}/`));
|
|
271
199
|
}
|
|
272
200
|
|
|
273
201
|
/**
|
|
274
|
-
*
|
|
275
|
-
*
|
|
276
|
-
*
|
|
202
|
+
* THE DISCRIMINATOR (DEC-6, single-key): a skill emits a `.prompt.md` iff it lives
|
|
203
|
+
* under `assets/claude-committed/skills/` AND carries `disable-model-invocation: true`.
|
|
204
|
+
* Tree location is the load-bearing signal (the marker is not globally unique).
|
|
277
205
|
*/
|
|
278
|
-
function
|
|
279
|
-
const
|
|
280
|
-
if (!
|
|
281
|
-
|
|
282
|
-
const [, frontmatter, body] = frontmatterMatch;
|
|
283
|
-
const descriptionMatch = frontmatter.match(/description:\s*['"]?(.*?)['"]?\s*(\n|$)/);
|
|
284
|
-
const description = descriptionMatch ? descriptionMatch[1] : '';
|
|
285
|
-
|
|
286
|
-
const newFrontmatter = description ? `description: ${description}` : '';
|
|
287
|
-
const cleanedBody = applyBodyTokenReplacements(body).replace(/\$\{input:[^}]+\}/g, '$ARGUMENTS');
|
|
288
|
-
|
|
289
|
-
return newFrontmatter ? `---\n${newFrontmatter}\n---\n${cleanedBody}` : cleanedBody;
|
|
206
|
+
export function isCommittedMaintenanceSkill(skillDir, frontmatter) {
|
|
207
|
+
const rel = toAssetsRelative(skillDir);
|
|
208
|
+
if (!rel.startsWith(`${SCAN_ROOT_RELATIVE_PATHS.committedSkills}/`)) return false;
|
|
209
|
+
return hasMaintenanceMarker(frontmatter);
|
|
290
210
|
}
|
|
291
211
|
|
|
212
|
+
/** Source-only files never copied into the generated catalog. */
|
|
213
|
+
const SKIPPED_SOURCE_FILES = new Set(['manifest.json', 'skill.json']);
|
|
214
|
+
|
|
292
215
|
/**
|
|
293
|
-
*
|
|
294
|
-
*
|
|
295
|
-
*
|
|
296
|
-
*
|
|
216
|
+
* Claude-host residue that must not appear anywhere in the generated tree, and the
|
|
217
|
+
* explicit allow-list of files where a token is legitimately host-neutral prose
|
|
218
|
+
* (e.g. a skill ABOUT Claude settings, a vendored-style tool reference). Every
|
|
219
|
+
* allow-list entry names the file AND the token; nothing is allowed tree-wide.
|
|
297
220
|
*/
|
|
298
|
-
const
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
rb: 'Ruby',
|
|
310
|
-
css: 'CSS',
|
|
311
|
-
scss: 'SCSS',
|
|
312
|
-
md: 'Markdown',
|
|
313
|
-
json: 'JSON',
|
|
314
|
-
html: 'HTML',
|
|
315
|
-
};
|
|
221
|
+
export const COPILOT_RESIDUE_TOKENS = Object.freeze([
|
|
222
|
+
{ token: 'vesper:', pattern: /\bvesper:(?!start\b|end\b|gitignore\b|hook\b)[a-z<*]/, why: 'Copilot delegation names are plain (no plugin namespace)' },
|
|
223
|
+
{ token: 'vesper-<pack>:', pattern: /\bvesper-(?:<pack>|[a-z][a-z0-9-]*):[a-z<*]/, why: 'Copilot delegation names are plain (no pack namespace either)' },
|
|
224
|
+
{ token: '.claude/rules/', pattern: /\.claude\/rules\//, why: 'Copilot brain lives under .vesper/instructions/' },
|
|
225
|
+
{ token: '.claude/vesper/', pattern: /\.claude\/vesper\//, why: 'Copilot brain lives under .vesper/' },
|
|
226
|
+
{ token: '.claude/agents/', pattern: /\.claude\/agents\//, why: 'Copilot agents live under .vesper/agents/' },
|
|
227
|
+
{ token: '.claude/skills/', pattern: /\.claude\/skills\//, why: 'Copilot skills live under .vesper/skills/' },
|
|
228
|
+
{ token: 'unsuffixed brain file', pattern: /\.vesper\/instructions\/vesper-(orchestrator|orchestration|context)\.md/, why: 'Copilot only attaches *.instructions.md' },
|
|
229
|
+
{ token: '.vesper/orchestration.md', pattern: /\.vesper\/(orchestrator|orchestration|context)\.md/, why: 'not the roster/whitepaper path the rendered playbook reads' },
|
|
230
|
+
{ token: '.claude/settings.json', pattern: /\.claude\/settings\.json/, why: 'Copilot has no .claude/settings.json' },
|
|
231
|
+
]);
|
|
316
232
|
|
|
317
233
|
/**
|
|
318
|
-
*
|
|
319
|
-
*
|
|
320
|
-
* A naive "trailing .md -> Markdown files" guess for the task-implementation entry would wrongly
|
|
321
|
-
* re-introduce over-breadth, so path-scoped globs are looked up here or fail LOUD. A stale/unused key
|
|
322
|
-
* is harmless residue (it simply never matches); prune only when a source stops using it.
|
|
234
|
+
* `path → tokens allowed there`. Keep this list SHORT and justified; the residue
|
|
235
|
+
* test prints the offending file + line for anything not listed.
|
|
323
236
|
*/
|
|
324
|
-
const
|
|
325
|
-
|
|
326
|
-
|
|
237
|
+
export const COPILOT_RESIDUE_ALLOW_LIST = Object.freeze({
|
|
238
|
+
// The catalog-safety skill is maintainer documentation of BOTH hosts' delivery model;
|
|
239
|
+
// `.claude/settings.json` (the Claude plugin declaration) is its subject matter, not an
|
|
240
|
+
// instruction for this host. Its remaining Copilot-copy prose issues are recorded in
|
|
241
|
+
// the epic (d) change log for a later pass.
|
|
242
|
+
'skills/vesper-catalog-editing-safety/SKILL.md': ['.claude/settings.json'],
|
|
243
|
+
});
|
|
327
244
|
|
|
328
245
|
/**
|
|
329
|
-
*
|
|
330
|
-
* @param {string
|
|
331
|
-
* @
|
|
246
|
+
* Find Claude-host residue in one generated file's text.
|
|
247
|
+
* @param {string} relPath - path relative to the Copilot output root
|
|
248
|
+
* @param {string} text
|
|
249
|
+
* @returns {string[]} human-readable findings (empty = clean)
|
|
332
250
|
*/
|
|
333
|
-
function
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
251
|
+
export function findCopilotResidue(relPath, text) {
|
|
252
|
+
const allowed = new Set(COPILOT_RESIDUE_ALLOW_LIST[relPath] || []);
|
|
253
|
+
const findings = [];
|
|
254
|
+
const lines = text.split('\n');
|
|
255
|
+
for (const { token, pattern, why } of COPILOT_RESIDUE_TOKENS) {
|
|
256
|
+
if (allowed.has(token)) continue;
|
|
257
|
+
lines.forEach((line, i) => {
|
|
258
|
+
if (pattern.test(line)) findings.push(`${relPath}:${i + 1}: ${token} — ${why}: ${line.trim().slice(0, 140)}`);
|
|
259
|
+
});
|
|
260
|
+
}
|
|
261
|
+
return findings;
|
|
338
262
|
}
|
|
339
263
|
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
* clause — degrade loudly, never silently.
|
|
353
|
-
*
|
|
354
|
-
* @param {string} applyTo - raw comma-separated applyTo value ('' when absent)
|
|
355
|
-
* @param {string} [skillName] - source skill name, threaded through for useful warnings
|
|
356
|
-
* @returns {{ clause: string, unmapped: string[] }} clause includes a leading space (or '' when empty)
|
|
357
|
-
*/
|
|
358
|
-
function describeApplyTo(applyTo, skillName) {
|
|
359
|
-
const unmapped = [];
|
|
360
|
-
if (!applyTo || !applyTo.trim()) return { clause: '', unmapped };
|
|
361
|
-
|
|
362
|
-
const tokens = applyTo.split(',').map(t => t.trim()).filter(Boolean);
|
|
363
|
-
const languages = [];
|
|
364
|
-
const phrases = [];
|
|
365
|
-
|
|
366
|
-
for (const token of tokens) {
|
|
367
|
-
// A single leading `**/` is a "match anywhere" prefix, not an embedded path — strip it before
|
|
368
|
-
// deciding whether the remainder is path-scoped.
|
|
369
|
-
const stripped = token.replace(/^\*\*\//, '');
|
|
370
|
-
|
|
371
|
-
if (stripped.includes('/')) {
|
|
372
|
-
// Path-scoped: only a curated override is acceptable; a miss is LOUD, never a raw-glob leak.
|
|
373
|
-
const override = GLOB_OVERRIDES[token];
|
|
374
|
-
if (override) {
|
|
375
|
-
if (!phrases.includes(override)) phrases.push(override);
|
|
376
|
-
} else {
|
|
377
|
-
unmapped.push(token);
|
|
378
|
-
}
|
|
379
|
-
continue;
|
|
380
|
-
}
|
|
264
|
+
// ---------------------------------------------------------------------------
|
|
265
|
+
// Scan helpers (read-only)
|
|
266
|
+
// ---------------------------------------------------------------------------
|
|
267
|
+
|
|
268
|
+
async function listChildren(dir, kind) {
|
|
269
|
+
const entries = await readdir(dir, { withFileTypes: true });
|
|
270
|
+
return entries
|
|
271
|
+
.filter((e) => (kind === 'dir' ? e.isDirectory() : e.isFile()))
|
|
272
|
+
.filter((e) => !e.name.startsWith('.'))
|
|
273
|
+
.map((e) => e.name)
|
|
274
|
+
.sort();
|
|
275
|
+
}
|
|
381
276
|
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
}
|
|
390
|
-
continue;
|
|
277
|
+
async function walkFiles(root) {
|
|
278
|
+
const out = [];
|
|
279
|
+
const visit = async (dir) => {
|
|
280
|
+
for (const e of await readdir(dir, { withFileTypes: true })) {
|
|
281
|
+
const abs = join(dir, e.name);
|
|
282
|
+
if (e.isDirectory()) await visit(abs);
|
|
283
|
+
else if (e.isFile()) out.push(relative(root, abs).split(sep).join('/'));
|
|
391
284
|
}
|
|
285
|
+
};
|
|
286
|
+
await visit(root);
|
|
287
|
+
return out.sort();
|
|
288
|
+
}
|
|
392
289
|
|
|
393
|
-
|
|
394
|
-
|
|
290
|
+
/** Validate a canonical source frontmatter for YAML safety of its description. */
|
|
291
|
+
function checkDescriptionYaml(frontmatter, where, errors) {
|
|
292
|
+
const line = frontmatter.split('\n').find((l) => l.startsWith('description:'));
|
|
293
|
+
if (!line) {
|
|
294
|
+
errors.push(`${where}: frontmatter has no description`);
|
|
295
|
+
return;
|
|
395
296
|
}
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
sawUnmappableGlob = true;
|
|
399
|
-
const where = skillName ? ` (in skill "${skillName}")` : '';
|
|
400
|
-
console.warn(
|
|
401
|
-
` [unmappable-applyto-glob] "${token}"${where} could not be translated to natural language — omitted. ` +
|
|
402
|
-
`Extend EXT_LANG (for a new extension) or GLOB_OVERRIDES (for a path-scoped glob) to map it.`
|
|
403
|
-
);
|
|
297
|
+
if (!isYamlSafeInlineScalar(line.slice('description:'.length))) {
|
|
298
|
+
errors.push(`${where}: unquoted description is not valid YAML (contains ": " or a YAML indicator) — quote it`);
|
|
404
299
|
}
|
|
300
|
+
}
|
|
405
301
|
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
302
|
+
/** Read + parse a JSON file; `null` when missing/unparseable (the caller reports it). */
|
|
303
|
+
async function readJsonOrNull(abs) {
|
|
304
|
+
try { return JSON.parse(await readFile(abs, 'utf-8')); } catch { return null; }
|
|
305
|
+
}
|
|
409
306
|
|
|
410
|
-
|
|
411
|
-
|
|
307
|
+
/** The package version every plugin manifest must carry (`package.json` next to `assets/`). */
|
|
308
|
+
async function readPackageVersion(assetsDir) {
|
|
309
|
+
const pkg = await readJsonOrNull(join(assetsDir, '..', 'package.json'));
|
|
310
|
+
return pkg?.version ?? null;
|
|
412
311
|
}
|
|
413
312
|
|
|
414
313
|
/**
|
|
415
|
-
*
|
|
416
|
-
*
|
|
417
|
-
* @param {string} kebabName
|
|
418
|
-
* @returns {string}
|
|
314
|
+
* Validate one pack's plugin manifest: `packs/<pack>/.claude-plugin/plugin.json` must exist,
|
|
315
|
+
* be named `vesper-<pack>` and carry the package version. Errors are pushed, never thrown.
|
|
419
316
|
*/
|
|
420
|
-
function
|
|
421
|
-
const
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
const applyToMatch = frontmatter.match(/applyTo:\s*['"]?(.*?)['"]?\s*(\n|$)/);
|
|
427
|
-
|
|
428
|
-
const rawBaseDescription = descriptionMatch ? descriptionMatch[1] : `${kebabName} conventions`;
|
|
429
|
-
const applyTo = applyToMatch ? applyToMatch[1] : '';
|
|
430
|
-
const { clause } = describeApplyTo(applyTo, kebabName);
|
|
431
|
-
// Normalize the base description before appending the scope clause: trim trailing whitespace and
|
|
432
|
-
// ensure it ends in terminal punctuation, so the clause's leading space doesn't run the two
|
|
433
|
-
// sentences together (e.g. "…Java base applications Use when…"). Only append when there IS a clause.
|
|
434
|
-
const trimmedBase = rawBaseDescription.trimEnd();
|
|
435
|
-
const normalizedBase = clause && !/[.!?]$/.test(trimmedBase) ? `${trimmedBase}.` : trimmedBase;
|
|
436
|
-
const description = `${normalizedBase}${clause}`;
|
|
437
|
-
|
|
438
|
-
const newFrontmatter = [`name: ${kebabName}`, `description: ${description}`].join('\n');
|
|
439
|
-
const cleanedBody = applyBodyTokenReplacements(body);
|
|
440
|
-
|
|
441
|
-
return `---\n${newFrontmatter}\n---\n${cleanedBody}`;
|
|
317
|
+
async function checkPackManifest(assetsDir, pack, version, errors) {
|
|
318
|
+
const where = `claude/packs/${pack}/.claude-plugin/plugin.json`;
|
|
319
|
+
const manifest = await readJsonOrNull(join(assetsDir, SCAN_ROOT_RELATIVE_PATHS.packs, pack, '.claude-plugin', 'plugin.json'));
|
|
320
|
+
if (!manifest) { errors.push(`${where}: missing or unparseable`); return; }
|
|
321
|
+
if (manifest.name !== `${PACK_PLUGIN_PREFIX}${pack}`) errors.push(`${where}: name must be "${PACK_PLUGIN_PREFIX}${pack}" (got "${manifest.name}")`);
|
|
322
|
+
if (version && manifest.version !== version) errors.push(`${where}: version must equal package.json (${version}), got "${manifest.version}"`);
|
|
442
323
|
}
|
|
443
324
|
|
|
444
325
|
/**
|
|
445
|
-
*
|
|
446
|
-
*
|
|
447
|
-
* prose is left untouched (per the generator's design, ~90% of body content
|
|
448
|
-
* is portable process knowledge, not Copilot mechanics).
|
|
449
|
-
* @param {string} body
|
|
450
|
-
* @returns {string}
|
|
326
|
+
* Validate the marketplace: it must list the core plugin (`vesper`, `source: "./"`) and every
|
|
327
|
+
* pack (`vesper-<pack>`, `source: "./packs/<pack>"`), and nothing else.
|
|
451
328
|
*/
|
|
452
|
-
function
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
.
|
|
467
|
-
|
|
468
|
-
.replace(/\bfile_search\b/g, 'Glob')
|
|
469
|
-
.replace(/\bsemantic_search\b/g, 'Grep')
|
|
470
|
-
.replace(/\blist_dir\b/g, 'Glob')
|
|
471
|
-
.replace(/\bcreate_file\b/g, 'Write')
|
|
472
|
-
.replace(/`get_terminal_output`/g, 'the background-task output mechanism')
|
|
473
|
-
.replace(/`isBackground:\s*true`/g, '`run_in_background: true`')
|
|
474
|
-
.replace(/isBackground:\s*true/g, 'run_in_background: true')
|
|
475
|
-
// Copilot's subagent-invocation directives — subagents can't nest in Claude
|
|
476
|
-
// Code; surface the need back to the orchestrator instead
|
|
477
|
-
.replace(/#tool:agent\/runSubagent/g, 'your available tools')
|
|
478
|
-
.replace(/#runSubagent:\s*/g, 'request via the orchestrator: ')
|
|
479
|
-
.replace(/#agent:\s*/g, 'request via the orchestrator: ');
|
|
480
|
-
}
|
|
481
|
-
|
|
482
|
-
async function ensureDir(dir) {
|
|
483
|
-
await mkdir(dir, { recursive: true });
|
|
329
|
+
async function checkMarketplace(assetsDir, packs, errors) {
|
|
330
|
+
const where = 'claude/.claude-plugin/marketplace.json';
|
|
331
|
+
const abs = join(assetsDir, 'claude', '.claude-plugin', 'marketplace.json');
|
|
332
|
+
// A minimal fixture tree (no packs, no manifest dir) has nothing to validate.
|
|
333
|
+
if (packs.length === 0 && !existsSync(abs)) return;
|
|
334
|
+
const mp = await readJsonOrNull(abs);
|
|
335
|
+
if (!mp || !Array.isArray(mp.plugins)) { errors.push(`${where}: missing, unparseable or without a plugins array`); return; }
|
|
336
|
+
const expected = new Map([['vesper', './'], ...packs.map((p) => [`${PACK_PLUGIN_PREFIX}${p}`, `./packs/${p}`])]);
|
|
337
|
+
const listed = new Map(mp.plugins.map((p) => [p.name, p.source]));
|
|
338
|
+
for (const [name, source] of expected) {
|
|
339
|
+
if (!listed.has(name)) errors.push(`${where}: plugin "${name}" (source ${source}) is not listed`);
|
|
340
|
+
else if (listed.get(name) !== source) errors.push(`${where}: plugin "${name}" must have source "${source}" (got "${listed.get(name)}")`);
|
|
341
|
+
}
|
|
342
|
+
for (const name of listed.keys()) {
|
|
343
|
+
if (!expected.has(name)) errors.push(`${where}: lists "${name}", which is neither the core plugin nor a pack under claude/packs/`);
|
|
344
|
+
}
|
|
484
345
|
}
|
|
485
346
|
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
|
|
347
|
+
/**
|
|
348
|
+
* The expected byte-identical copies of the shared skills, per pack: `Map<relative path under
|
|
349
|
+
* claude/, Buffer>` (`packs/<pack>/skills/<skill>/<file>`), read from the core skill folder.
|
|
350
|
+
*/
|
|
351
|
+
export async function expectedSharedPackSkillFiles({ assetsDir = ASSETS_DIR } = {}) {
|
|
352
|
+
const out = new Map();
|
|
353
|
+
const packs = await listPackNames(assetsDir);
|
|
354
|
+
for (const skill of SHARED_PACK_SKILLS) {
|
|
355
|
+
const src = join(assetsDir, SCAN_ROOT_RELATIVE_PATHS.pluginSkills, skill);
|
|
356
|
+
if (!existsSync(src)) continue;
|
|
357
|
+
for (const rel of await walkFiles(src)) {
|
|
358
|
+
const content = await readFile(join(src, rel));
|
|
359
|
+
for (const pack of packs) out.set(`packs/${pack}/skills/${skill}/${rel}`, content);
|
|
360
|
+
}
|
|
492
361
|
}
|
|
362
|
+
return out;
|
|
493
363
|
}
|
|
494
364
|
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
for (const
|
|
503
|
-
const
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
|
|
508
|
-
|
|
509
|
-
}
|
|
510
|
-
|
|
365
|
+
/**
|
|
366
|
+
* Refresh every pack's copy of the shared skills from the core (the one write the generator
|
|
367
|
+
* makes INTO the canonical tree — a sync of duplicates, not authored content). Returns the
|
|
368
|
+
* paths it changed. Idempotent; the strict build reports any copy that still differs.
|
|
369
|
+
*/
|
|
370
|
+
export async function syncSharedPackSkills({ assetsDir = ASSETS_DIR } = {}) {
|
|
371
|
+
const changed = [];
|
|
372
|
+
for (const [rel, content] of await expectedSharedPackSkillFiles({ assetsDir })) {
|
|
373
|
+
const dest = join(assetsDir, 'claude', ...rel.split('/'));
|
|
374
|
+
let current = null;
|
|
375
|
+
try { current = await readFile(dest); } catch { current = null; }
|
|
376
|
+
if (current && current.equals(content)) continue;
|
|
377
|
+
await mkdir(dirname(dest), { recursive: true });
|
|
378
|
+
await writeFile(dest, content);
|
|
379
|
+
changed.push(`claude/${rel}`);
|
|
380
|
+
}
|
|
381
|
+
// Stale extra files inside a pack copy (a file removed from the core) are removed too.
|
|
382
|
+
const expected = await expectedSharedPackSkillFiles({ assetsDir });
|
|
383
|
+
for (const pack of await listPackNames(assetsDir)) {
|
|
384
|
+
for (const skill of SHARED_PACK_SKILLS) {
|
|
385
|
+
const dir = join(assetsDir, SCAN_ROOT_RELATIVE_PATHS.packs, pack, 'skills', skill);
|
|
386
|
+
if (!existsSync(dir)) continue;
|
|
387
|
+
for (const rel of await walkFiles(dir)) {
|
|
388
|
+
const key = `packs/${pack}/skills/${skill}/${rel}`;
|
|
389
|
+
if (!expected.has(key)) { await rm(join(dir, rel), { force: true }); changed.push(`claude/${key} (removed)`); }
|
|
390
|
+
}
|
|
511
391
|
}
|
|
512
392
|
}
|
|
513
|
-
return
|
|
393
|
+
return changed;
|
|
514
394
|
}
|
|
515
395
|
|
|
516
|
-
|
|
517
|
-
|
|
518
|
-
|
|
519
|
-
await ensureDir(destDir);
|
|
396
|
+
// ---------------------------------------------------------------------------
|
|
397
|
+
// Build the whole generated tree in memory
|
|
398
|
+
// ---------------------------------------------------------------------------
|
|
520
399
|
|
|
521
|
-
|
|
522
|
-
|
|
523
|
-
|
|
524
|
-
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
|
|
400
|
+
/**
|
|
401
|
+
* Compute the complete expected `assets/copilot/` tree (plus the global manifest)
|
|
402
|
+
* from the canonical sources, WITHOUT writing anything. `assetsDir` is a test seam
|
|
403
|
+
* (a fixture tree with the same `claude/` + `claude-committed/` layout). The generator writes exactly
|
|
404
|
+
* this; the freshness test compares the committed tree against exactly this.
|
|
405
|
+
*
|
|
406
|
+
* Packs (epic H): `claude/packs/<pack>/agents|skills` mirror to `copilot/packs/<pack>/agents|skills`;
|
|
407
|
+
* the tiered instructions of a packed skill go to the same global `instructions/` and
|
|
408
|
+
* `instructions-extended/` folders as a core skill's (opt-in instructions are a per-project
|
|
409
|
+
* mechanism of their own, not a pack one); the shared skills are not mirrored per pack.
|
|
410
|
+
*
|
|
411
|
+
* @returns {Promise<{files: Map<string, {content: Buffer, mode: number}>, manifest: object, errors: string[], counts: object}>}
|
|
412
|
+
* `files` keys are POSIX paths relative to `assets/copilot/`.
|
|
413
|
+
*/
|
|
414
|
+
export async function buildCopilotTree({ assetsDir = ASSETS_DIR } = {}) {
|
|
415
|
+
__resetDiagnostics();
|
|
416
|
+
const files = new Map();
|
|
417
|
+
const errors = [];
|
|
418
|
+
const put = (rel, content, mode = 0o644) => files.set(rel, { content: Buffer.isBuffer(content) ? content : Buffer.from(content, 'utf-8'), mode });
|
|
419
|
+
const counts = { agents: 0, skills: 0, coreInstructions: 0, extendedInstructions: 0, prompts: 0, packs: 0, thirdParty: 0 };
|
|
420
|
+
const coreInstructions = [];
|
|
421
|
+
const extendedInstructions = [];
|
|
422
|
+
/** Generated paths copied verbatim from a third-party skill — exempt from the residue scan. */
|
|
423
|
+
const thirdPartyFiles = new Set();
|
|
424
|
+
// `pack` per asset: `core` or the pack name. Names are unique across core + packs.
|
|
425
|
+
const assetPacks = { agents: {}, skills: {} };
|
|
426
|
+
const claimAssetName = (type, name, pack, where) => {
|
|
427
|
+
const prior = assetPacks[type][name];
|
|
428
|
+
if (prior !== undefined && !(type === 'skills' && SHARED_PACK_SKILLS.includes(name))) {
|
|
429
|
+
errors.push(`${where}: ${type.slice(0, -1)} "${name}" is also shipped by ${prior === 'core' ? 'the core' : `pack "${prior}"`} — names are unique across the marketplace`);
|
|
430
|
+
return false;
|
|
532
431
|
}
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
}
|
|
432
|
+
if (prior === undefined) assetPacks[type][name] = pack;
|
|
433
|
+
return true;
|
|
434
|
+
};
|
|
536
435
|
|
|
537
|
-
|
|
538
|
-
const
|
|
539
|
-
|
|
540
|
-
|
|
436
|
+
/** 1. Agents → hidden specialists (one folder: the core, or a pack). */
|
|
437
|
+
const scanAgents = async (agentsDir, { pack, outPrefix, whereBase }) => {
|
|
438
|
+
let names = [];
|
|
439
|
+
try { names = (await listChildren(agentsDir, 'file')).filter((f) => f.endsWith('.md')); } catch { return; }
|
|
440
|
+
for (const file of names) {
|
|
441
|
+
const name = file.replace(/\.md$/, '');
|
|
442
|
+
const where = `${whereBase}/${file}`;
|
|
443
|
+
try {
|
|
444
|
+
if (!claimAssetName('agents', name, pack, where)) continue;
|
|
445
|
+
const content = await readFile(join(agentsDir, file), 'utf-8');
|
|
446
|
+
const { frontmatter } = splitFrontmatter(content);
|
|
447
|
+
if (!frontmatter) throw new Error('no parseable frontmatter (an agent without it would ship pickable)');
|
|
448
|
+
checkDescriptionYaml(frontmatter, where, errors);
|
|
449
|
+
put(`${outPrefix}agents/${name}.agent.md`, convertAgentToCopilot(content, name));
|
|
450
|
+
counts.agents += 1;
|
|
451
|
+
} catch (error) {
|
|
452
|
+
errors.push(`${where}: ${error.message}`);
|
|
453
|
+
}
|
|
454
|
+
}
|
|
455
|
+
};
|
|
541
456
|
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
|
|
545
|
-
|
|
546
|
-
const
|
|
547
|
-
|
|
548
|
-
|
|
549
|
-
|
|
550
|
-
|
|
551
|
-
|
|
552
|
-
//
|
|
553
|
-
//
|
|
554
|
-
|
|
555
|
-
// already handles those correctly, nothing further to patch).
|
|
556
|
-
const skillMdPath = join(destPath, 'SKILL.md');
|
|
457
|
+
/** 2. Plugin skills → skills (every file; every .md rendered) + tiered instructions. */
|
|
458
|
+
const scanSkills = async (skillsDir, { pack, outPrefix, whereBase }) => {
|
|
459
|
+
let names = [];
|
|
460
|
+
try { names = await listChildren(skillsDir, 'dir'); } catch { return; }
|
|
461
|
+
for (const name of names) {
|
|
462
|
+
const srcDir = join(skillsDir, name);
|
|
463
|
+
const where = `${whereBase}/${name}`;
|
|
464
|
+
const shared = pack !== 'core' && SHARED_PACK_SKILLS.includes(name);
|
|
465
|
+
// A third-party skill (epic J): upstream's bytes, shipped as pack content. Copied verbatim
|
|
466
|
+
// (`UPSTREAM.json` + `LICENSE` included) so the Copilot mirror is the same snapshot; its
|
|
467
|
+
// markdown is neither rendered nor residue-scanned (Vesper does not author it), and its
|
|
468
|
+
// own `disable-model-invocation` marker is allowed — prompt emission is tree-scoped anyway.
|
|
469
|
+
const thirdParty = isThirdPartySkillDir(srcDir);
|
|
557
470
|
try {
|
|
558
|
-
|
|
559
|
-
|
|
560
|
-
|
|
561
|
-
|
|
471
|
+
if (!claimAssetName('skills', name, pack, where)) continue;
|
|
472
|
+
if (thirdParty && pack === 'core') throw new Error(`carries ${UPSTREAM_RECORD_FILE} — third-party skills are pack content, never core`);
|
|
473
|
+
if (thirdParty) await checkUpstreamRecord(srcDir, where, errors);
|
|
474
|
+
const rels = (await walkFiles(srcDir)).filter((r) => !SKIPPED_SOURCE_FILES.has(r.split('/').pop()));
|
|
475
|
+
const skillMds = rels.filter((r) => r === 'SKILL.md' || r.endsWith('/SKILL.md'));
|
|
476
|
+
if (skillMds.length === 0) throw new Error('no SKILL.md at any depth — not a skill');
|
|
477
|
+
for (const rel of rels) {
|
|
478
|
+
const abs = join(srcDir, rel);
|
|
479
|
+
const { mode } = await stat(abs);
|
|
480
|
+
if (!rel.endsWith('.md') || thirdParty) {
|
|
481
|
+
if (!shared) put(`${outPrefix}skills/${name}/${rel}`, await readFile(abs), mode & 0o777);
|
|
482
|
+
if (thirdParty) thirdPartyFiles.add(`${outPrefix}skills/${name}/${rel}`);
|
|
483
|
+
continue;
|
|
484
|
+
}
|
|
485
|
+
const content = await readFile(abs, 'utf-8');
|
|
486
|
+
const isSkillMd = rel === 'SKILL.md' || rel.endsWith('/SKILL.md');
|
|
487
|
+
if (isSkillMd) {
|
|
488
|
+
const { frontmatter } = splitFrontmatter(content);
|
|
489
|
+
if (!frontmatter) throw new Error(`${rel} has no frontmatter (name + description are required)`);
|
|
490
|
+
checkDescriptionYaml(frontmatter, `${where}/${rel}`, errors);
|
|
491
|
+
if (hasMaintenanceMarker(frontmatter)) {
|
|
492
|
+
throw new Error(`${rel} carries disable-model-invocation: true — maintenance skills belong in assets/claude-committed/skills/, not the plugin tree`);
|
|
493
|
+
}
|
|
494
|
+
}
|
|
495
|
+
if (!shared) put(`${outPrefix}skills/${name}/${rel}`, rel === 'SKILL.md' ? convertSkillMd(content) : convertSkillMarkdownFile(content), mode & 0o777);
|
|
496
|
+
}
|
|
497
|
+
if (shared) continue; // a pack's copy of a shared skill: validated below, never mirrored
|
|
498
|
+
counts.skills += 1;
|
|
499
|
+
if (thirdParty) { counts.thirdParty += 1; continue; } // no tiers, no instructions: upstream's skill as-is
|
|
500
|
+
|
|
501
|
+
if (rels.includes('SKILL.md')) {
|
|
502
|
+
const content = await readFile(join(srcDir, 'SKILL.md'), 'utf-8');
|
|
503
|
+
const { frontmatter } = splitFrontmatter(content);
|
|
504
|
+
const instructions = convertSkillToInstructions(content, name);
|
|
505
|
+
const tier = readInstructionTier(frontmatter);
|
|
506
|
+
if (instructions) {
|
|
507
|
+
if (!COPILOT_INSTRUCTION_TIERS.includes(tier)) {
|
|
508
|
+
throw new Error(`carries copilot-apply-to but copilot-instructions-tier is ${tier === null ? 'missing' : `"${tier}"`} — set core or extended`);
|
|
509
|
+
}
|
|
510
|
+
if (tier === 'core') {
|
|
511
|
+
put(`instructions/${name}.instructions.md`, instructions);
|
|
512
|
+
coreInstructions.push(name);
|
|
513
|
+
counts.coreInstructions += 1;
|
|
514
|
+
} else {
|
|
515
|
+
put(`instructions-extended/${name}/${name}.instructions.md`, instructions);
|
|
516
|
+
extendedInstructions.push(name);
|
|
517
|
+
counts.extendedInstructions += 1;
|
|
518
|
+
}
|
|
519
|
+
} else if (tier !== null) {
|
|
520
|
+
throw new Error('carries copilot-instructions-tier without copilot-apply-to');
|
|
521
|
+
}
|
|
522
|
+
}
|
|
523
|
+
} catch (error) {
|
|
524
|
+
errors.push(`${where}: ${error.message}`);
|
|
562
525
|
}
|
|
563
|
-
count += 1;
|
|
564
|
-
} catch (error) {
|
|
565
|
-
console.warn(` skip skills/${name}: ${error.message}`);
|
|
566
526
|
}
|
|
567
|
-
}
|
|
568
|
-
return count;
|
|
569
|
-
}
|
|
527
|
+
};
|
|
570
528
|
|
|
571
|
-
|
|
572
|
-
|
|
573
|
-
|
|
574
|
-
|
|
529
|
+
// The core plugin.
|
|
530
|
+
await scanAgents(join(assetsDir, SCAN_ROOT_RELATIVE_PATHS.pluginAgents), { pack: 'core', outPrefix: '', whereBase: 'claude/agents' });
|
|
531
|
+
await scanSkills(join(assetsDir, SCAN_ROOT_RELATIVE_PATHS.pluginSkills), { pack: 'core', outPrefix: '', whereBase: 'claude/skills' });
|
|
532
|
+
|
|
533
|
+
// The packs — each a plugin of its own, mirrored under `packs/<pack>/`.
|
|
534
|
+
const packs = await listPackNames(assetsDir);
|
|
535
|
+
const version = await readPackageVersion(assetsDir);
|
|
536
|
+
for (const pack of packs) {
|
|
537
|
+
if (!/^[a-z][a-z0-9-]*$/.test(pack)) { errors.push(`claude/packs/${pack}: pack names are kebab-case`); continue; }
|
|
538
|
+
await checkPackManifest(assetsDir, pack, version, errors);
|
|
539
|
+
const packDir = join(assetsDir, SCAN_ROOT_RELATIVE_PATHS.packs, pack);
|
|
540
|
+
await scanAgents(join(packDir, 'agents'), { pack, outPrefix: `packs/${pack}/`, whereBase: `claude/packs/${pack}/agents` });
|
|
541
|
+
await scanSkills(join(packDir, 'skills'), { pack, outPrefix: `packs/${pack}/`, whereBase: `claude/packs/${pack}/skills` });
|
|
542
|
+
for (const child of await listChildren(packDir, 'dir')) {
|
|
543
|
+
if (!['agents', 'skills'].includes(child)) errors.push(`claude/packs/${pack}/${child}: a pack holds only agents/ and skills/ (plus .claude-plugin/)`);
|
|
544
|
+
}
|
|
545
|
+
counts.packs += 1;
|
|
546
|
+
}
|
|
547
|
+
await checkMarketplace(assetsDir, packs, errors);
|
|
548
|
+
|
|
549
|
+
// Shared skills: every pack copy must be byte-identical to the core (run the generator to sync).
|
|
550
|
+
for (const [rel, content] of await expectedSharedPackSkillFiles({ assetsDir })) {
|
|
551
|
+
let current = null;
|
|
552
|
+
try { current = await readFile(join(assetsDir, 'claude', ...rel.split('/'))); } catch { current = null; }
|
|
553
|
+
if (!current || !current.equals(content)) {
|
|
554
|
+
errors.push(`claude/${rel}: ${current ? 'differs from' : 'missing —'} the core copy in claude/skills/ (run node scripts/generate-claude-assets.js to sync the shared pack skills)`);
|
|
555
|
+
}
|
|
556
|
+
}
|
|
557
|
+
for (const pack of packs) {
|
|
558
|
+
for (const skill of SHARED_PACK_SKILLS) {
|
|
559
|
+
if (!existsSync(join(assetsDir, SCAN_ROOT_RELATIVE_PATHS.packs, pack, 'skills', skill))) {
|
|
560
|
+
errors.push(`claude/packs/${pack}/skills/${skill}: missing — every pack carries a copy of the shared skill (run the generator to sync)`);
|
|
561
|
+
}
|
|
562
|
+
}
|
|
563
|
+
}
|
|
575
564
|
|
|
576
|
-
|
|
577
|
-
|
|
578
|
-
|
|
579
|
-
|
|
565
|
+
// 3. Committed skills → maintenance prompts. Every committed skill MUST be one.
|
|
566
|
+
const committedDir = join(assetsDir, SCAN_ROOT_RELATIVE_PATHS.committedSkills);
|
|
567
|
+
const prompts = [];
|
|
568
|
+
for (const name of await listChildren(committedDir, 'dir')) {
|
|
569
|
+
const where = `claude-committed/skills/${name}`;
|
|
580
570
|
try {
|
|
581
|
-
const content = await readFile(
|
|
582
|
-
const
|
|
583
|
-
|
|
584
|
-
|
|
585
|
-
|
|
586
|
-
|
|
571
|
+
const content = await readFile(join(committedDir, name, 'SKILL.md'), 'utf-8');
|
|
572
|
+
const { frontmatter } = splitFrontmatter(content);
|
|
573
|
+
if (!frontmatter) throw new Error('SKILL.md has no frontmatter');
|
|
574
|
+
if (!isCommittedMaintenanceSkill(`${SCAN_ROOT_RELATIVE_PATHS.committedSkills}/${name}`, frontmatter)) {
|
|
575
|
+
throw new Error('committed skill lacks disable-model-invocation: true — it would be silently dropped from the Copilot catalog');
|
|
576
|
+
}
|
|
577
|
+
checkDescriptionYaml(frontmatter, `${where}/SKILL.md`, errors);
|
|
578
|
+
put(`prompts/${name}.prompt.md`, convertMaintenanceSkillToPrompt(content));
|
|
579
|
+
prompts.push(name);
|
|
580
|
+
counts.prompts += 1;
|
|
587
581
|
} catch (error) {
|
|
588
|
-
|
|
582
|
+
errors.push(`${where}: ${error.message}`);
|
|
589
583
|
}
|
|
590
584
|
}
|
|
591
|
-
return count;
|
|
592
|
-
}
|
|
593
585
|
|
|
594
|
-
|
|
595
|
-
|
|
586
|
+
// 4. Mapping gaps recorded by the pure converters are errors here.
|
|
587
|
+
errors.push(...getDiagnosticMessages());
|
|
596
588
|
|
|
597
|
-
|
|
598
|
-
|
|
589
|
+
// 5. Residue over the WHOLE generated tree — except upstream's own text (third-party skills).
|
|
590
|
+
for (const [rel, { content }] of files) {
|
|
591
|
+
if (!rel.endsWith('.md') || thirdPartyFiles.has(rel)) continue;
|
|
592
|
+
errors.push(...findCopilotResidue(rel, content.toString('utf-8')));
|
|
593
|
+
}
|
|
599
594
|
|
|
600
|
-
const
|
|
601
|
-
|
|
595
|
+
const agents = Object.keys(assetPacks.agents).sort();
|
|
596
|
+
const skills = Object.keys(assetPacks.skills).sort();
|
|
597
|
+
const sortedRecord = (rec) => Object.fromEntries(Object.keys(rec).sort().map((k) => [k, rec[k]]));
|
|
598
|
+
const manifest = {
|
|
599
|
+
version: '1.0.0',
|
|
600
|
+
description: 'Available Vesper assets. Use with: vespercli add agents|prompts|instructions|skills <name>; packs with: vespercli packs list|enable|disable|sync',
|
|
601
|
+
packs,
|
|
602
|
+
agents,
|
|
603
|
+
prompts: prompts.sort(),
|
|
604
|
+
coreInstructions: coreInstructions.sort(),
|
|
605
|
+
instructions: extendedInstructions.sort(),
|
|
606
|
+
skills,
|
|
607
|
+
assetPacks: { agents: sortedRecord(assetPacks.agents), skills: sortedRecord(assetPacks.skills) },
|
|
608
|
+
};
|
|
602
609
|
|
|
603
|
-
|
|
604
|
-
|
|
610
|
+
return { files, manifest, errors, counts };
|
|
611
|
+
}
|
|
605
612
|
|
|
606
|
-
const instructionSkillCount = await generateSkillsFromInstructions();
|
|
607
|
-
console.log(`✓ instructions: ${instructionSkillCount} converted to skills -> assets/claude/skills/`);
|
|
608
613
|
|
|
609
|
-
|
|
614
|
+
/** Serialize the global manifest (no timestamp: parallel worktrees must merge cleanly). */
|
|
615
|
+
export function serializeManifest(manifest) {
|
|
616
|
+
return `${JSON.stringify(manifest, null, 2)}\n`;
|
|
617
|
+
}
|
|
610
618
|
|
|
611
|
-
|
|
612
|
-
|
|
613
|
-
|
|
614
|
-
|
|
615
|
-
|
|
616
|
-
|
|
619
|
+
/**
|
|
620
|
+
* Write the tree atomically: temp sibling dir → rename swap → drop the old tree.
|
|
621
|
+
* @param {Map<string, {content: Buffer, mode: number}>} files
|
|
622
|
+
* @param {string} [outDir=COPILOT_DIR]
|
|
623
|
+
*/
|
|
624
|
+
export async function writeTreeAtomically(files, outDir = COPILOT_DIR) {
|
|
625
|
+
const parent = dirname(outDir);
|
|
626
|
+
const stamp = `${process.pid}-${Date.now()}`;
|
|
627
|
+
const tmp = join(parent, `.copilot.tmp-${stamp}`);
|
|
628
|
+
const old = join(parent, `.copilot.old-${stamp}`);
|
|
629
|
+
try {
|
|
630
|
+
for (const [rel, { content, mode }] of files) {
|
|
631
|
+
const dest = join(tmp, ...rel.split('/'));
|
|
632
|
+
await mkdir(dirname(dest), { recursive: true });
|
|
633
|
+
await writeFile(dest, content);
|
|
634
|
+
await chmod(dest, mode);
|
|
635
|
+
}
|
|
636
|
+
if (existsSync(outDir)) await rename(outDir, old);
|
|
637
|
+
await rename(tmp, outDir);
|
|
638
|
+
} catch (error) {
|
|
639
|
+
await rm(tmp, { recursive: true, force: true });
|
|
640
|
+
if (!existsSync(outDir) && existsSync(old)) await rename(old, outDir); // restore
|
|
641
|
+
throw error;
|
|
617
642
|
}
|
|
618
|
-
|
|
619
|
-
|
|
643
|
+
await rm(old, { recursive: true, force: true });
|
|
644
|
+
}
|
|
645
|
+
|
|
646
|
+
async function main() {
|
|
647
|
+
console.log('Generating Copilot target assets from the canonical Claude sources...\n');
|
|
648
|
+
// The one canonical-tree write: refresh each pack's copy of the shared skills from the core.
|
|
649
|
+
const synced = await syncSharedPackSkills();
|
|
650
|
+
if (synced.length) console.log(`✓ shared pack skills synced from the core: ${synced.length} file(s)\n`);
|
|
651
|
+
const { files, manifest, errors, counts } = await buildCopilotTree();
|
|
652
|
+
if (errors.length > 0) {
|
|
653
|
+
console.error(`✗ ${errors.length} error(s) — nothing was written:\n`);
|
|
654
|
+
for (const e of errors) console.error(` - ${e}`);
|
|
620
655
|
process.exitCode = 1;
|
|
656
|
+
return;
|
|
621
657
|
}
|
|
658
|
+
await writeTreeAtomically(files);
|
|
659
|
+
await writeFile(join(ASSETS_DIR, 'manifest.json'), serializeManifest(manifest), 'utf-8');
|
|
660
|
+
|
|
661
|
+
console.log(`✓ agents: ${counts.agents} -> assets/copilot/agents/ + packs/<pack>/agents/ (all user-invocable: false)`);
|
|
662
|
+
console.log(`✓ skills: ${counts.skills} -> assets/copilot/skills/ + packs/<pack>/skills/ (every .md rendered; ${counts.thirdParty} third-party copied verbatim)`);
|
|
663
|
+
console.log(`✓ packs: ${counts.packs} (${manifest.packs.join(', ') || 'none'}) -> assets/copilot/packs/<pack>/`);
|
|
664
|
+
console.log(`✓ instructions: ${counts.coreInstructions} core -> assets/copilot/instructions/, ${counts.extendedInstructions} extended -> assets/copilot/instructions-extended/<name>/`);
|
|
665
|
+
console.log(`✓ prompts: ${counts.prompts} -> assets/copilot/prompts/`);
|
|
666
|
+
console.log('✓ manifest: assets/manifest.json');
|
|
667
|
+
console.log('\nDone. Canonical sources (assets/claude/, assets/claude-committed/) are read-only to this script.');
|
|
622
668
|
}
|
|
623
669
|
|
|
624
|
-
// Only
|
|
625
|
-
// (e.g. from vitest) must NOT trigger a full catalog regeneration. Guard on
|
|
626
|
-
// `process.argv[1]` first: when unset (e.g. `node --input-type=module -e`),
|
|
627
|
-
// `pathToFileURL(undefined)` throws ERR_INVALID_ARG_TYPE, so the import-safety
|
|
628
|
-
// guarantee must not depend on argv[1] being populated.
|
|
670
|
+
// Only generate when executed directly — importing the module must NOT regenerate.
|
|
629
671
|
if (process.argv[1] && import.meta.url === pathToFileURL(process.argv[1]).href) {
|
|
630
672
|
main().catch((error) => {
|
|
631
673
|
console.error('Generation failed:', error);
|
|
632
674
|
process.exit(1);
|
|
633
675
|
});
|
|
634
676
|
}
|
|
635
|
-
|
|
636
|
-
export { extractToolTokens, mapToolTokens, convertAgent, describeApplyTo, convertInstructionToSkill };
|