@baselane/packs 0.1.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/LICENSE +191 -0
- package/NOTICE +6 -0
- package/README.md +15 -0
- package/dist/ai-merge.d.ts +26 -0
- package/dist/ai-merge.js +165 -0
- package/dist/aliases.d.ts +7 -0
- package/dist/aliases.js +9 -0
- package/dist/compose-draft.d.ts +19 -0
- package/dist/compose-draft.js +170 -0
- package/dist/drift-detect.d.ts +8 -0
- package/dist/drift-detect.js +21 -0
- package/dist/index.d.ts +40 -0
- package/dist/index.js +21 -0
- package/dist/ingest.d.ts +25 -0
- package/dist/ingest.js +262 -0
- package/dist/load.d.ts +7 -0
- package/dist/load.js +29 -0
- package/dist/manifest.d.ts +71 -0
- package/dist/manifest.js +208 -0
- package/dist/materialize-harness.d.ts +15 -0
- package/dist/materialize-harness.js +48 -0
- package/dist/merge-region.d.ts +60 -0
- package/dist/merge-region.js +166 -0
- package/dist/overlap.d.ts +32 -0
- package/dist/overlap.js +49 -0
- package/dist/pack-from-fileset.d.ts +13 -0
- package/dist/pack-from-fileset.js +133 -0
- package/dist/render/adapters.d.ts +6 -0
- package/dist/render/adapters.js +43 -0
- package/dist/render/agents-md.d.ts +3 -0
- package/dist/render/agents-md.js +49 -0
- package/dist/render/bundle-union.d.ts +10 -0
- package/dist/render/bundle-union.js +87 -0
- package/dist/render/bundle.d.ts +3 -0
- package/dist/render/bundle.js +51 -0
- package/dist/render/capabilities.d.ts +19 -0
- package/dist/render/capabilities.js +86 -0
- package/dist/render/claude.d.ts +3 -0
- package/dist/render/claude.js +92 -0
- package/dist/render/design.d.ts +27 -0
- package/dist/render/design.js +443 -0
- package/dist/render/graph.d.ts +11 -0
- package/dist/render/graph.js +245 -0
- package/dist/render/memory.d.ts +35 -0
- package/dist/render/memory.js +353 -0
- package/dist/render/render-pack.d.ts +3 -0
- package/dist/render/render-pack.js +43 -0
- package/dist/render/repo-union.d.ts +14 -0
- package/dist/render/repo-union.js +94 -0
- package/dist/render/rollout-files.d.ts +18 -0
- package/dist/render/rollout-files.js +39 -0
- package/dist/render/system-map.d.ts +8 -0
- package/dist/render/system-map.js +73 -0
- package/dist/render/tasks.d.ts +32 -0
- package/dist/render/tasks.js +327 -0
- package/dist/render/wiki.d.ts +30 -0
- package/dist/render/wiki.js +288 -0
- package/dist/seed/graph-seed.d.ts +17 -0
- package/dist/seed/graph-seed.js +18 -0
- package/dist/seed/wiki-seed.d.ts +23 -0
- package/dist/seed/wiki-seed.js +133 -0
- package/dist/seed-skills.d.ts +18 -0
- package/dist/seed-skills.js +134 -0
- package/dist/types.d.ts +122 -0
- package/dist/types.js +1 -0
- package/dist/validate.d.ts +30 -0
- package/dist/validate.js +397 -0
- package/package.json +38 -0
- package/packs/database-review/pack.json +44 -0
- package/packs/database-review/rendered/.baselane/capabilities.json +10 -0
- package/packs/database-review/rendered/.baselane/system-map/README.md +18 -0
- package/packs/database-review/rendered/.claude/agents/database-reviewer.md +8 -0
- package/packs/database-review/rendered/.claude/commands/db-review.md +6 -0
- package/packs/database-review/rendered/.claude/commands/map.md +6 -0
- package/packs/database-review/rendered/.claude/settings.json +26 -0
- package/packs/database-review/rendered/.github/copilot-instructions.md +48 -0
- package/packs/database-review/rendered/AGENTS.md +66 -0
- package/packs/database-review/rendered/CLAUDE.md +9 -0
- package/packs/database-review/rendered/GEMINI.md +3 -0
- package/packs/disciplined-workflow/pack.json +63 -0
- package/packs/disciplined-workflow/rendered/.baselane/capabilities.json +10 -0
- package/packs/disciplined-workflow/rendered/.baselane/tasks/README.md +36 -0
- package/packs/disciplined-workflow/rendered/.claude/agents/plan-reviewer.md +8 -0
- package/packs/disciplined-workflow/rendered/.claude/agents/task-reviewer.md +8 -0
- package/packs/disciplined-workflow/rendered/.claude/commands/brainstorm.md +6 -0
- package/packs/disciplined-workflow/rendered/.claude/commands/execute-plan.md +6 -0
- package/packs/disciplined-workflow/rendered/.claude/commands/plan-work.md +6 -0
- package/packs/disciplined-workflow/rendered/.claude/commands/write-plan.md +6 -0
- package/packs/disciplined-workflow/rendered/.claude/settings.json +24 -0
- package/packs/disciplined-workflow/rendered/.github/copilot-instructions.md +24 -0
- package/packs/disciplined-workflow/rendered/AGENTS.md +43 -0
- package/packs/disciplined-workflow/rendered/CLAUDE.md +12 -0
- package/packs/disciplined-workflow/rendered/GEMINI.md +3 -0
- package/packs/frontend-design/pack.json +129 -0
- package/packs/frontend-design/rendered/.claude/skills/clone/SKILL.md +39 -0
- package/packs/frontend-design/rendered/.claude/skills/functional-ui/SKILL.md +78 -0
- package/packs/frontend-design/rendered/.claude/skills/gsap/SKILL.md +36 -0
- package/packs/frontend-design/rendered/.claude/skills/gsap/gsap-core.md +254 -0
- package/packs/frontend-design/rendered/.claude/skills/gsap/gsap-frameworks.md +266 -0
- package/packs/frontend-design/rendered/.claude/skills/gsap/gsap-performance.md +79 -0
- package/packs/frontend-design/rendered/.claude/skills/gsap/gsap-plugins.md +433 -0
- package/packs/frontend-design/rendered/.claude/skills/gsap/gsap-react.md +136 -0
- package/packs/frontend-design/rendered/.claude/skills/gsap/gsap-scrolltrigger.md +296 -0
- package/packs/frontend-design/rendered/.claude/skills/gsap/gsap-timeline.md +107 -0
- package/packs/frontend-design/rendered/.claude/skills/gsap/gsap-utils.md +284 -0
- package/packs/frontend-design/rendered/.claude/skills/marketing-ui/SKILL.md +36 -0
- package/packs/frontend-design/rendered/.claude/skills/shadcn/SKILL.md +267 -0
- package/packs/frontend-design/rendered/.claude/skills/shadcn/base-vs-radix.md +306 -0
- package/packs/frontend-design/rendered/.claude/skills/shadcn/cli.md +290 -0
- package/packs/frontend-design/rendered/.claude/skills/shadcn/composition.md +195 -0
- package/packs/frontend-design/rendered/.claude/skills/shadcn/customization.md +209 -0
- package/packs/frontend-design/rendered/.claude/skills/shadcn/forms.md +192 -0
- package/packs/frontend-design/rendered/.claude/skills/shadcn/icons.md +101 -0
- package/packs/frontend-design/rendered/.claude/skills/shadcn/mcp.md +105 -0
- package/packs/frontend-design/rendered/.claude/skills/shadcn/registry.md +277 -0
- package/packs/frontend-design/rendered/.claude/skills/shadcn/styling.md +162 -0
- package/packs/frontend-design/rendered/.github/copilot-instructions.md +474 -0
- package/packs/frontend-design/rendered/AGENTS.md +33 -0
- package/packs/frontend-design/rendered/CLAUDE.md +10 -0
- package/packs/frontend-design/rendered/GEMINI.md +456 -0
- package/packs/frontend-taste/pack.json +43 -0
- package/packs/frontend-taste/rendered/.baselane/capabilities.json +16 -0
- package/packs/frontend-taste/rendered/.claude/agents/taste-reviewer.md +8 -0
- package/packs/frontend-taste/rendered/.claude/commands/design-review.md +6 -0
- package/packs/frontend-taste/rendered/.claude/settings.json +15 -0
- package/packs/frontend-taste/rendered/.github/copilot-instructions.md +51 -0
- package/packs/frontend-taste/rendered/AGENTS.md +68 -0
- package/packs/frontend-taste/rendered/CLAUDE.md +8 -0
- package/packs/frontend-taste/rendered/DESIGN.md +72 -0
- package/packs/frontend-taste/rendered/GEMINI.md +3 -0
- package/packs/go-rules/pack.json +38 -0
- package/packs/go-rules/rendered/.claude/agents/go-reviewer.md +8 -0
- package/packs/go-rules/rendered/.claude/commands/go-review.md +6 -0
- package/packs/go-rules/rendered/.claude/settings.json +15 -0
- package/packs/go-rules/rendered/.github/copilot-instructions.md +44 -0
- package/packs/go-rules/rendered/AGENTS.md +54 -0
- package/packs/go-rules/rendered/CLAUDE.md +8 -0
- package/packs/go-rules/rendered/GEMINI.md +3 -0
- package/packs/python-rules/pack.json +38 -0
- package/packs/python-rules/rendered/.claude/agents/python-reviewer.md +8 -0
- package/packs/python-rules/rendered/.claude/commands/python-review.md +6 -0
- package/packs/python-rules/rendered/.claude/settings.json +15 -0
- package/packs/python-rules/rendered/.github/copilot-instructions.md +43 -0
- package/packs/python-rules/rendered/AGENTS.md +53 -0
- package/packs/python-rules/rendered/CLAUDE.md +8 -0
- package/packs/python-rules/rendered/GEMINI.md +3 -0
- package/packs/second-brain/pack.json +36 -0
- package/packs/second-brain/rendered/.baselane/capabilities.json +25 -0
- package/packs/second-brain/rendered/.baselane/memory/README.md +34 -0
- package/packs/second-brain/rendered/.baselane/wiki/README.md +62 -0
- package/packs/second-brain/rendered/.claude/agents/librarian.md +14 -0
- package/packs/second-brain/rendered/.claude/commands/remember.md +6 -0
- package/packs/second-brain/rendered/.claude/commands/wiki.md +6 -0
- package/packs/second-brain/rendered/.claude/settings.json +35 -0
- package/packs/second-brain/rendered/.github/copilot-instructions.md +24 -0
- package/packs/second-brain/rendered/AGENTS.md +41 -0
- package/packs/second-brain/rendered/CLAUDE.md +9 -0
- package/packs/second-brain/rendered/GEMINI.md +3 -0
- package/packs/security-review/pack.json +72 -0
- package/packs/security-review/rendered/.claude/agents/security-reviewer.md +8 -0
- package/packs/security-review/rendered/.claude/commands/security-audit.md +6 -0
- package/packs/security-review/rendered/.claude/commands/security-scan.md +6 -0
- package/packs/security-review/rendered/.claude/settings.json +35 -0
- package/packs/security-review/rendered/.claude/skills/security-audit/SKILL.md +44 -0
- package/packs/security-review/rendered/.claude/skills/validate-at-boundaries/SKILL.md +41 -0
- package/packs/security-review/rendered/.github/copilot-instructions.md +137 -0
- package/packs/security-review/rendered/AGENTS.md +66 -0
- package/packs/security-review/rendered/CLAUDE.md +11 -0
- package/packs/security-review/rendered/GEMINI.md +90 -0
- package/packs/software-engineer-harness/pack.json +98 -0
- package/packs/software-engineer-harness/rendered/.baselane/capabilities.json +15 -0
- package/packs/software-engineer-harness/rendered/.baselane/system-map/README.md +18 -0
- package/packs/software-engineer-harness/rendered/.baselane/tasks/README.md +36 -0
- package/packs/software-engineer-harness/rendered/.claude/agents/architect.md +8 -0
- package/packs/software-engineer-harness/rendered/.claude/agents/checker.md +8 -0
- package/packs/software-engineer-harness/rendered/.claude/agents/code-reviewer.md +8 -0
- package/packs/software-engineer-harness/rendered/.claude/agents/code-simplifier.md +8 -0
- package/packs/software-engineer-harness/rendered/.claude/agents/planner.md +8 -0
- package/packs/software-engineer-harness/rendered/.claude/agents/reviewer.md +8 -0
- package/packs/software-engineer-harness/rendered/.claude/commands/build-and-check.md +6 -0
- package/packs/software-engineer-harness/rendered/.claude/commands/map.md +6 -0
- package/packs/software-engineer-harness/rendered/.claude/commands/plan-change.md +6 -0
- package/packs/software-engineer-harness/rendered/.claude/commands/plan-work.md +6 -0
- package/packs/software-engineer-harness/rendered/.claude/commands/review-change.md +6 -0
- package/packs/software-engineer-harness/rendered/.claude/commands/tdd-task.md +6 -0
- package/packs/software-engineer-harness/rendered/.claude/settings.json +35 -0
- package/packs/software-engineer-harness/rendered/.github/copilot-instructions.md +37 -0
- package/packs/software-engineer-harness/rendered/AGENTS.md +58 -0
- package/packs/software-engineer-harness/rendered/CLAUDE.md +18 -0
- package/packs/software-engineer-harness/rendered/GEMINI.md +3 -0
- package/packs/systematic-debugging/pack.json +44 -0
- package/packs/systematic-debugging/rendered/.claude/agents/debugger.md +8 -0
- package/packs/systematic-debugging/rendered/.claude/commands/debug.md +6 -0
- package/packs/systematic-debugging/rendered/.claude/commands/root-cause.md +6 -0
- package/packs/systematic-debugging/rendered/.claude/settings.json +15 -0
- package/packs/systematic-debugging/rendered/.github/copilot-instructions.md +20 -0
- package/packs/systematic-debugging/rendered/AGENTS.md +31 -0
- package/packs/systematic-debugging/rendered/CLAUDE.md +9 -0
- package/packs/systematic-debugging/rendered/GEMINI.md +3 -0
- package/packs/token-efficiency-harness/pack.json +49 -0
- package/packs/token-efficiency-harness/rendered/.baselane/capabilities.json +10 -0
- package/packs/token-efficiency-harness/rendered/.baselane/memory/README.md +34 -0
- package/packs/token-efficiency-harness/rendered/.claude/agents/scout.md +8 -0
- package/packs/token-efficiency-harness/rendered/.claude/commands/handoff.md +6 -0
- package/packs/token-efficiency-harness/rendered/.claude/commands/remember.md +6 -0
- package/packs/token-efficiency-harness/rendered/.claude/commands/usage-audit.md +6 -0
- package/packs/token-efficiency-harness/rendered/.claude/settings.json +26 -0
- package/packs/token-efficiency-harness/rendered/.github/copilot-instructions.md +26 -0
- package/packs/token-efficiency-harness/rendered/AGENTS.md +44 -0
- package/packs/token-efficiency-harness/rendered/CLAUDE.md +10 -0
- package/packs/token-efficiency-harness/rendered/GEMINI.md +3 -0
- package/packs/typescript-rules/pack.json +46 -0
- package/packs/typescript-rules/rendered/.claude/agents/typescript-reviewer.md +8 -0
- package/packs/typescript-rules/rendered/.claude/commands/typescript-review.md +6 -0
- package/packs/typescript-rules/rendered/.claude/settings.json +15 -0
- package/packs/typescript-rules/rendered/.claude/skills/immutable-updates/SKILL.md +46 -0
- package/packs/typescript-rules/rendered/.github/copilot-instructions.md +89 -0
- package/packs/typescript-rules/rendered/AGENTS.md +55 -0
- package/packs/typescript-rules/rendered/CLAUDE.md +9 -0
- package/packs/typescript-rules/rendered/GEMINI.md +51 -0
- package/skills/algorithmic-art/LICENSE +202 -0
- package/skills/algorithmic-art/LICENSE.txt +202 -0
- package/skills/algorithmic-art/SKILL.md +405 -0
- package/skills/algorithmic-art/templates/generator_template.js +223 -0
- package/skills/algorithmic-art/templates/viewer.html +599 -0
- package/skills/brainstorming/LICENSE +21 -0
- package/skills/brainstorming/SKILL.md +159 -0
- package/skills/brainstorming/scripts/frame-template.html +213 -0
- package/skills/brainstorming/scripts/helper.js +167 -0
- package/skills/brainstorming/scripts/server.cjs +723 -0
- package/skills/brainstorming/scripts/start-server.sh +209 -0
- package/skills/brainstorming/scripts/stop-server.sh +120 -0
- package/skills/brainstorming/spec-document-reviewer-prompt.md +49 -0
- package/skills/brainstorming/visual-companion.md +291 -0
- package/skills/brand-guidelines/LICENSE +202 -0
- package/skills/brand-guidelines/LICENSE.txt +202 -0
- package/skills/brand-guidelines/SKILL.md +73 -0
- package/skills/canvas-design/LICENSE +202 -0
- package/skills/canvas-design/LICENSE.txt +202 -0
- package/skills/canvas-design/SKILL.md +130 -0
- package/skills/canvas-design/canvas-fonts/ArsenalSC-OFL.txt +93 -0
- package/skills/canvas-design/canvas-fonts/ArsenalSC-Regular.ttf +0 -0
- package/skills/canvas-design/canvas-fonts/BigShoulders-Bold.ttf +0 -0
- package/skills/canvas-design/canvas-fonts/BigShoulders-OFL.txt +93 -0
- package/skills/canvas-design/canvas-fonts/BigShoulders-Regular.ttf +0 -0
- package/skills/canvas-design/canvas-fonts/Boldonse-OFL.txt +93 -0
- package/skills/canvas-design/canvas-fonts/Boldonse-Regular.ttf +0 -0
- package/skills/canvas-design/canvas-fonts/BricolageGrotesque-Bold.ttf +0 -0
- package/skills/canvas-design/canvas-fonts/BricolageGrotesque-OFL.txt +93 -0
- package/skills/canvas-design/canvas-fonts/BricolageGrotesque-Regular.ttf +0 -0
- package/skills/canvas-design/canvas-fonts/CrimsonPro-Bold.ttf +0 -0
- package/skills/canvas-design/canvas-fonts/CrimsonPro-Italic.ttf +0 -0
- package/skills/canvas-design/canvas-fonts/CrimsonPro-OFL.txt +93 -0
- package/skills/canvas-design/canvas-fonts/CrimsonPro-Regular.ttf +0 -0
- package/skills/canvas-design/canvas-fonts/DMMono-OFL.txt +93 -0
- package/skills/canvas-design/canvas-fonts/DMMono-Regular.ttf +0 -0
- package/skills/canvas-design/canvas-fonts/EricaOne-OFL.txt +94 -0
- package/skills/canvas-design/canvas-fonts/EricaOne-Regular.ttf +0 -0
- package/skills/canvas-design/canvas-fonts/GeistMono-Bold.ttf +0 -0
- package/skills/canvas-design/canvas-fonts/GeistMono-OFL.txt +93 -0
- package/skills/canvas-design/canvas-fonts/GeistMono-Regular.ttf +0 -0
- package/skills/canvas-design/canvas-fonts/Gloock-OFL.txt +93 -0
- package/skills/canvas-design/canvas-fonts/Gloock-Regular.ttf +0 -0
- package/skills/canvas-design/canvas-fonts/IBMPlexMono-Bold.ttf +0 -0
- package/skills/canvas-design/canvas-fonts/IBMPlexMono-OFL.txt +93 -0
- package/skills/canvas-design/canvas-fonts/IBMPlexMono-Regular.ttf +0 -0
- package/skills/canvas-design/canvas-fonts/IBMPlexSerif-Bold.ttf +0 -0
- package/skills/canvas-design/canvas-fonts/IBMPlexSerif-BoldItalic.ttf +0 -0
- package/skills/canvas-design/canvas-fonts/IBMPlexSerif-Italic.ttf +0 -0
- package/skills/canvas-design/canvas-fonts/IBMPlexSerif-Regular.ttf +0 -0
- package/skills/canvas-design/canvas-fonts/InstrumentSans-Bold.ttf +0 -0
- package/skills/canvas-design/canvas-fonts/InstrumentSans-BoldItalic.ttf +0 -0
- package/skills/canvas-design/canvas-fonts/InstrumentSans-Italic.ttf +0 -0
- package/skills/canvas-design/canvas-fonts/InstrumentSans-OFL.txt +93 -0
- package/skills/canvas-design/canvas-fonts/InstrumentSans-Regular.ttf +0 -0
- package/skills/canvas-design/canvas-fonts/InstrumentSerif-Italic.ttf +0 -0
- package/skills/canvas-design/canvas-fonts/InstrumentSerif-Regular.ttf +0 -0
- package/skills/canvas-design/canvas-fonts/Italiana-OFL.txt +93 -0
- package/skills/canvas-design/canvas-fonts/Italiana-Regular.ttf +0 -0
- package/skills/canvas-design/canvas-fonts/JetBrainsMono-Bold.ttf +0 -0
- package/skills/canvas-design/canvas-fonts/JetBrainsMono-OFL.txt +93 -0
- package/skills/canvas-design/canvas-fonts/JetBrainsMono-Regular.ttf +0 -0
- package/skills/canvas-design/canvas-fonts/Jura-Light.ttf +0 -0
- package/skills/canvas-design/canvas-fonts/Jura-Medium.ttf +0 -0
- package/skills/canvas-design/canvas-fonts/Jura-OFL.txt +93 -0
- package/skills/canvas-design/canvas-fonts/LibreBaskerville-OFL.txt +93 -0
- package/skills/canvas-design/canvas-fonts/LibreBaskerville-Regular.ttf +0 -0
- package/skills/canvas-design/canvas-fonts/Lora-Bold.ttf +0 -0
- package/skills/canvas-design/canvas-fonts/Lora-BoldItalic.ttf +0 -0
- package/skills/canvas-design/canvas-fonts/Lora-Italic.ttf +0 -0
- package/skills/canvas-design/canvas-fonts/Lora-OFL.txt +93 -0
- package/skills/canvas-design/canvas-fonts/Lora-Regular.ttf +0 -0
- package/skills/canvas-design/canvas-fonts/NationalPark-Bold.ttf +0 -0
- package/skills/canvas-design/canvas-fonts/NationalPark-OFL.txt +93 -0
- package/skills/canvas-design/canvas-fonts/NationalPark-Regular.ttf +0 -0
- package/skills/canvas-design/canvas-fonts/NothingYouCouldDo-OFL.txt +93 -0
- package/skills/canvas-design/canvas-fonts/NothingYouCouldDo-Regular.ttf +0 -0
- package/skills/canvas-design/canvas-fonts/Outfit-Bold.ttf +0 -0
- package/skills/canvas-design/canvas-fonts/Outfit-OFL.txt +93 -0
- package/skills/canvas-design/canvas-fonts/Outfit-Regular.ttf +0 -0
- package/skills/canvas-design/canvas-fonts/PixelifySans-Medium.ttf +0 -0
- package/skills/canvas-design/canvas-fonts/PixelifySans-OFL.txt +93 -0
- package/skills/canvas-design/canvas-fonts/PoiretOne-OFL.txt +93 -0
- package/skills/canvas-design/canvas-fonts/PoiretOne-Regular.ttf +0 -0
- package/skills/canvas-design/canvas-fonts/RedHatMono-Bold.ttf +0 -0
- package/skills/canvas-design/canvas-fonts/RedHatMono-OFL.txt +93 -0
- package/skills/canvas-design/canvas-fonts/RedHatMono-Regular.ttf +0 -0
- package/skills/canvas-design/canvas-fonts/Silkscreen-OFL.txt +93 -0
- package/skills/canvas-design/canvas-fonts/Silkscreen-Regular.ttf +0 -0
- package/skills/canvas-design/canvas-fonts/SmoochSans-Medium.ttf +0 -0
- package/skills/canvas-design/canvas-fonts/SmoochSans-OFL.txt +93 -0
- package/skills/canvas-design/canvas-fonts/Tektur-Medium.ttf +0 -0
- package/skills/canvas-design/canvas-fonts/Tektur-OFL.txt +93 -0
- package/skills/canvas-design/canvas-fonts/Tektur-Regular.ttf +0 -0
- package/skills/canvas-design/canvas-fonts/WorkSans-Bold.ttf +0 -0
- package/skills/canvas-design/canvas-fonts/WorkSans-BoldItalic.ttf +0 -0
- package/skills/canvas-design/canvas-fonts/WorkSans-Italic.ttf +0 -0
- package/skills/canvas-design/canvas-fonts/WorkSans-OFL.txt +93 -0
- package/skills/canvas-design/canvas-fonts/WorkSans-Regular.ttf +0 -0
- package/skills/canvas-design/canvas-fonts/YoungSerif-OFL.txt +93 -0
- package/skills/canvas-design/canvas-fonts/YoungSerif-Regular.ttf +0 -0
- package/skills/dispatching-parallel-agents/LICENSE +21 -0
- package/skills/dispatching-parallel-agents/SKILL.md +185 -0
- package/skills/executing-plans/LICENSE +21 -0
- package/skills/executing-plans/SKILL.md +70 -0
- package/skills/finishing-a-development-branch/LICENSE +21 -0
- package/skills/finishing-a-development-branch/SKILL.md +241 -0
- package/skills/first-party/README.md +32 -0
- package/skills/first-party/append-only-jsonl-stores/SKILL.md +50 -0
- package/skills/first-party/golden-snapshot-discipline/SKILL.md +45 -0
- package/skills/first-party/immutable-updates/SKILL.md +46 -0
- package/skills/first-party/manifest.json +10 -0
- package/skills/first-party/ts-extension-imports/SKILL.md +49 -0
- package/skills/first-party/validate-at-boundaries/SKILL.md +41 -0
- package/skills/first-party/zero-dependency-discipline/SKILL.md +41 -0
- package/skills/frontend-design/LICENSE +177 -0
- package/skills/frontend-design/LICENSE.txt +177 -0
- package/skills/frontend-design/SKILL.md +55 -0
- package/skills/internal-comms/LICENSE +202 -0
- package/skills/internal-comms/LICENSE.txt +202 -0
- package/skills/internal-comms/SKILL.md +32 -0
- package/skills/internal-comms/examples/3p-updates.md +47 -0
- package/skills/internal-comms/examples/company-newsletter.md +65 -0
- package/skills/internal-comms/examples/faq-answers.md +30 -0
- package/skills/internal-comms/examples/general-comms.md +16 -0
- package/skills/mcp-builder/LICENSE +202 -0
- package/skills/mcp-builder/LICENSE.txt +202 -0
- package/skills/mcp-builder/SKILL.md +236 -0
- package/skills/mcp-builder/reference/evaluation.md +602 -0
- package/skills/mcp-builder/reference/mcp_best_practices.md +249 -0
- package/skills/mcp-builder/reference/node_mcp_server.md +970 -0
- package/skills/mcp-builder/reference/python_mcp_server.md +719 -0
- package/skills/mcp-builder/scripts/connections.py +151 -0
- package/skills/mcp-builder/scripts/evaluation.py +373 -0
- package/skills/mcp-builder/scripts/example_evaluation.xml +22 -0
- package/skills/mcp-builder/scripts/requirements.txt +2 -0
- package/skills/receiving-code-review/LICENSE +21 -0
- package/skills/receiving-code-review/SKILL.md +213 -0
- package/skills/requesting-code-review/LICENSE +21 -0
- package/skills/requesting-code-review/SKILL.md +103 -0
- package/skills/requesting-code-review/code-reviewer.md +172 -0
- package/skills/seed-manifest.json +185 -0
- package/skills/skill-creator/LICENSE +202 -0
- package/skills/skill-creator/LICENSE.txt +202 -0
- package/skills/skill-creator/SKILL.md +485 -0
- package/skills/skill-creator/agents/analyzer.md +274 -0
- package/skills/skill-creator/agents/comparator.md +202 -0
- package/skills/skill-creator/agents/grader.md +223 -0
- package/skills/skill-creator/assets/eval_review.html +146 -0
- package/skills/skill-creator/eval-viewer/generate_review.py +471 -0
- package/skills/skill-creator/eval-viewer/viewer.html +1325 -0
- package/skills/skill-creator/references/schemas.md +430 -0
- package/skills/skill-creator/scripts/__init__.py +0 -0
- package/skills/skill-creator/scripts/aggregate_benchmark.py +401 -0
- package/skills/skill-creator/scripts/generate_report.py +326 -0
- package/skills/skill-creator/scripts/improve_description.py +247 -0
- package/skills/skill-creator/scripts/package_skill.py +136 -0
- package/skills/skill-creator/scripts/quick_validate.py +103 -0
- package/skills/skill-creator/scripts/run_eval.py +310 -0
- package/skills/skill-creator/scripts/run_loop.py +328 -0
- package/skills/skill-creator/scripts/utils.py +47 -0
- package/skills/slack-gif-creator/LICENSE +202 -0
- package/skills/slack-gif-creator/LICENSE.txt +202 -0
- package/skills/slack-gif-creator/SKILL.md +254 -0
- package/skills/slack-gif-creator/core/easing.py +234 -0
- package/skills/slack-gif-creator/core/frame_composer.py +176 -0
- package/skills/slack-gif-creator/core/gif_builder.py +269 -0
- package/skills/slack-gif-creator/core/validators.py +136 -0
- package/skills/slack-gif-creator/requirements.txt +4 -0
- package/skills/subagent-driven-development/LICENSE +21 -0
- package/skills/subagent-driven-development/SKILL.md +418 -0
- package/skills/subagent-driven-development/implementer-prompt.md +139 -0
- package/skills/subagent-driven-development/scripts/review-package +44 -0
- package/skills/subagent-driven-development/scripts/sdd-workspace +22 -0
- package/skills/subagent-driven-development/scripts/task-brief +40 -0
- package/skills/subagent-driven-development/task-reviewer-prompt.md +188 -0
- package/skills/systematic-debugging/CREATION-LOG.md +119 -0
- package/skills/systematic-debugging/LICENSE +21 -0
- package/skills/systematic-debugging/SKILL.md +296 -0
- package/skills/systematic-debugging/condition-based-waiting-example.ts +158 -0
- package/skills/systematic-debugging/condition-based-waiting.md +115 -0
- package/skills/systematic-debugging/defense-in-depth.md +122 -0
- package/skills/systematic-debugging/find-polluter.sh +63 -0
- package/skills/systematic-debugging/root-cause-tracing.md +169 -0
- package/skills/systematic-debugging/test-academic.md +14 -0
- package/skills/systematic-debugging/test-pressure-1.md +58 -0
- package/skills/systematic-debugging/test-pressure-2.md +68 -0
- package/skills/systematic-debugging/test-pressure-3.md +69 -0
- package/skills/test-driven-development/LICENSE +21 -0
- package/skills/test-driven-development/SKILL.md +371 -0
- package/skills/test-driven-development/testing-anti-patterns.md +299 -0
- package/skills/theme-factory/LICENSE +202 -0
- package/skills/theme-factory/LICENSE.txt +202 -0
- package/skills/theme-factory/SKILL.md +59 -0
- package/skills/theme-factory/theme-showcase.pdf +0 -0
- package/skills/theme-factory/themes/arctic-frost.md +19 -0
- package/skills/theme-factory/themes/botanical-garden.md +19 -0
- package/skills/theme-factory/themes/desert-rose.md +19 -0
- package/skills/theme-factory/themes/forest-canopy.md +19 -0
- package/skills/theme-factory/themes/golden-hour.md +19 -0
- package/skills/theme-factory/themes/midnight-galaxy.md +19 -0
- package/skills/theme-factory/themes/modern-minimalist.md +19 -0
- package/skills/theme-factory/themes/ocean-depths.md +19 -0
- package/skills/theme-factory/themes/sunset-boulevard.md +19 -0
- package/skills/theme-factory/themes/tech-innovation.md +19 -0
- package/skills/using-git-worktrees/LICENSE +21 -0
- package/skills/using-git-worktrees/SKILL.md +202 -0
- package/skills/using-superpowers/LICENSE +21 -0
- package/skills/using-superpowers/SKILL.md +62 -0
- package/skills/using-superpowers/references/antigravity-tools.md +23 -0
- package/skills/using-superpowers/references/codex-tools.md +39 -0
- package/skills/using-superpowers/references/pi-tools.md +16 -0
- package/skills/verification-before-completion/LICENSE +21 -0
- package/skills/verification-before-completion/SKILL.md +139 -0
- package/skills/web-artifacts-builder/LICENSE +202 -0
- package/skills/web-artifacts-builder/LICENSE.txt +202 -0
- package/skills/web-artifacts-builder/SKILL.md +74 -0
- package/skills/web-artifacts-builder/scripts/bundle-artifact.sh +54 -0
- package/skills/web-artifacts-builder/scripts/init-artifact.sh +322 -0
- package/skills/web-artifacts-builder/scripts/shadcn-components.tar.gz +0 -0
- package/skills/webapp-testing/LICENSE +202 -0
- package/skills/webapp-testing/LICENSE.txt +202 -0
- package/skills/webapp-testing/SKILL.md +96 -0
- package/skills/webapp-testing/examples/console_logging.py +35 -0
- package/skills/webapp-testing/examples/element_discovery.py +40 -0
- package/skills/webapp-testing/examples/static_html_automation.py +33 -0
- package/skills/webapp-testing/scripts/with_server.py +106 -0
- package/skills/writing-plans/LICENSE +21 -0
- package/skills/writing-plans/SKILL.md +174 -0
- package/skills/writing-plans/plan-document-reviewer-prompt.md +49 -0
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
import { renderBundleFiles } from "./bundle.js";
|
|
2
|
+
const SETTINGS_KEY = "settings.json";
|
|
3
|
+
const MANIFEST_KEY = ".baselane/capabilities.json";
|
|
4
|
+
/** Concatenate every rendered pack's hook entries per event, raw (unprefixed). The agent applies its
|
|
5
|
+
* BASELANE_MANAGED prefix later when merging into the developer's real settings — this is a
|
|
6
|
+
* different, earlier operation, so it must NOT prefix. For a single input this rebuilds the exact
|
|
7
|
+
* bytes render/claude.ts's settingsJson produced. */
|
|
8
|
+
function mergeRenderedSettings(jsons) {
|
|
9
|
+
const byEvent = {};
|
|
10
|
+
for (const json of jsons) {
|
|
11
|
+
let parsed;
|
|
12
|
+
try {
|
|
13
|
+
parsed = JSON.parse(json);
|
|
14
|
+
}
|
|
15
|
+
catch {
|
|
16
|
+
continue;
|
|
17
|
+
}
|
|
18
|
+
const hooks = parsed.hooks;
|
|
19
|
+
if (!hooks || typeof hooks !== "object")
|
|
20
|
+
continue;
|
|
21
|
+
for (const [event, entries] of Object.entries(hooks)) {
|
|
22
|
+
if (!Array.isArray(entries))
|
|
23
|
+
continue;
|
|
24
|
+
(byEvent[event] ??= []).push(...entries);
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
return JSON.stringify({ hooks: byEvent }, null, 2) + "\n";
|
|
28
|
+
}
|
|
29
|
+
/** Union each manifest's capabilities, dedup by exact JSON identity, first occurrence wins. For a
|
|
30
|
+
* single input this rebuilds the exact bytes render/capabilities.ts's manifest produced. */
|
|
31
|
+
function mergeCapabilityManifests(jsons) {
|
|
32
|
+
const capabilities = [];
|
|
33
|
+
const seen = new Set();
|
|
34
|
+
for (const json of jsons) {
|
|
35
|
+
let parsed;
|
|
36
|
+
try {
|
|
37
|
+
parsed = JSON.parse(json);
|
|
38
|
+
}
|
|
39
|
+
catch {
|
|
40
|
+
continue;
|
|
41
|
+
}
|
|
42
|
+
const list = parsed.capabilities;
|
|
43
|
+
if (!Array.isArray(list))
|
|
44
|
+
continue;
|
|
45
|
+
for (const c of list) {
|
|
46
|
+
const key = JSON.stringify(c);
|
|
47
|
+
if (!seen.has(key)) {
|
|
48
|
+
seen.add(key);
|
|
49
|
+
capabilities.push(c);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
return JSON.stringify({ version: 1, capabilities }, null, 2) + "\n";
|
|
54
|
+
}
|
|
55
|
+
/** Unions the machine-level bundle files of an ordered (most-specific-first) effective pack set.
|
|
56
|
+
* settings.json hooks concatenate per event; capabilities manifests dedup; every other path is
|
|
57
|
+
* first-writer-wins with a collisions note on a differing later write. `renderBundleUnion([p])`
|
|
58
|
+
* byte-equals `renderBundleFiles(p)`. */
|
|
59
|
+
export function renderBundleUnion(packs) {
|
|
60
|
+
const files = {};
|
|
61
|
+
const collisions = [];
|
|
62
|
+
const settings = [];
|
|
63
|
+
const manifests = [];
|
|
64
|
+
for (const pack of packs) {
|
|
65
|
+
for (const [path, content] of Object.entries(renderBundleFiles(pack))) {
|
|
66
|
+
if (path === SETTINGS_KEY) {
|
|
67
|
+
settings.push(content);
|
|
68
|
+
continue;
|
|
69
|
+
}
|
|
70
|
+
if (path === MANIFEST_KEY) {
|
|
71
|
+
manifests.push(content);
|
|
72
|
+
continue;
|
|
73
|
+
}
|
|
74
|
+
if (!(path in files)) {
|
|
75
|
+
files[path] = content;
|
|
76
|
+
}
|
|
77
|
+
else if (files[path] !== content && !collisions.includes(path)) {
|
|
78
|
+
collisions.push(path);
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
if (settings.length > 0)
|
|
83
|
+
files[SETTINGS_KEY] = mergeRenderedSettings(settings);
|
|
84
|
+
if (manifests.length > 0)
|
|
85
|
+
files[MANIFEST_KEY] = mergeCapabilityManifests(manifests);
|
|
86
|
+
return { files, collisions };
|
|
87
|
+
}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { renderCapabilities } from "./capabilities.js";
|
|
2
|
+
import { renderClaudeFiles } from "./claude.js";
|
|
3
|
+
import { hasOrgMemoryFiles, renderBundleMemoryFiles, withMemoryScaffolding } from "./memory.js";
|
|
4
|
+
import { hasOrgDesignAnalyze, renderBundleDesignFiles, withDesignAnalyzeScaffolding } from "./design.js";
|
|
5
|
+
import { hasOrgTasksLedger, renderBundleTasksFiles, withTasksScaffolding } from "./tasks.js";
|
|
6
|
+
import { hasOrgWikiBaselane, renderBundleWikiFiles, withWikiScaffolding } from "./wiki.js";
|
|
7
|
+
import { hasOrgGraphCapability, renderBundleGraphFiles, withGraphScaffolding } from "./graph.js";
|
|
8
|
+
import { hasOrgSystemMapCapability, renderBundleSystemMapFiles, withSystemMapScaffolding } from "./system-map.js";
|
|
9
|
+
/** Machine-level bundle for the laptop agent: same artifact bodies, whitelist-rooted paths. */
|
|
10
|
+
export function renderBundleFiles(pack) {
|
|
11
|
+
// An org-store memory+files (or tasks+ledger, wiki+baselane, or graph) capability is
|
|
12
|
+
// agent-managed on the laptop, not committed to the repo, so its command and Stop-hook
|
|
13
|
+
// reminder are added here instead of in render/render-pack.ts.
|
|
14
|
+
let claudePack = pack;
|
|
15
|
+
if (hasOrgMemoryFiles(pack))
|
|
16
|
+
claudePack = withMemoryScaffolding(claudePack, "org");
|
|
17
|
+
if (hasOrgTasksLedger(pack))
|
|
18
|
+
claudePack = withTasksScaffolding(claudePack, "org");
|
|
19
|
+
if (hasOrgWikiBaselane(pack))
|
|
20
|
+
claudePack = withWikiScaffolding(claudePack, "org");
|
|
21
|
+
if (hasOrgDesignAnalyze(pack))
|
|
22
|
+
claudePack = withDesignAnalyzeScaffolding(claudePack, "org");
|
|
23
|
+
if (hasOrgGraphCapability(pack))
|
|
24
|
+
claudePack = withGraphScaffolding(claudePack);
|
|
25
|
+
if (hasOrgSystemMapCapability(pack))
|
|
26
|
+
claudePack = withSystemMapScaffolding(claudePack);
|
|
27
|
+
const claude = renderClaudeFiles(claudePack);
|
|
28
|
+
// The capabilities manifest ships at the same `.baselane/capabilities.json` path as the repo
|
|
29
|
+
// render, so the laptop agent finds it in one known location — machine-readable regardless of
|
|
30
|
+
// which surface (repo or bundle) provisioned the capability.
|
|
31
|
+
const { manifest } = renderCapabilities(pack);
|
|
32
|
+
const bundle = {
|
|
33
|
+
...renderBundleMemoryFiles(pack),
|
|
34
|
+
...renderBundleDesignFiles(pack),
|
|
35
|
+
...renderBundleTasksFiles(pack),
|
|
36
|
+
...renderBundleWikiFiles(pack),
|
|
37
|
+
...renderBundleGraphFiles(pack),
|
|
38
|
+
...renderBundleSystemMapFiles(pack),
|
|
39
|
+
...(manifest ? { ".baselane/capabilities.json": manifest } : {}),
|
|
40
|
+
};
|
|
41
|
+
for (const [path, content] of Object.entries(claude)) {
|
|
42
|
+
if (path === ".claude/settings.json") {
|
|
43
|
+
bundle["settings.json"] = content;
|
|
44
|
+
continue;
|
|
45
|
+
}
|
|
46
|
+
const m = /^\.claude\/(agents|commands|skills)\/(.+)$/.exec(path);
|
|
47
|
+
if (m)
|
|
48
|
+
bundle[`${m[1]}/${m[2]}`] = content;
|
|
49
|
+
}
|
|
50
|
+
return bundle;
|
|
51
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { WorkflowPack } from "../types.ts";
|
|
2
|
+
/**
|
|
3
|
+
* AGENTS.md "## Harness capabilities" section + `.baselane/capabilities.json` manifest, or both
|
|
4
|
+
* null if the pack declares none.
|
|
5
|
+
*
|
|
6
|
+
* Bug #37.1 fix: AGENTS.md is a repo-only artifact (only `render-pack.ts`'s `renderAgentsMd`
|
|
7
|
+
* calls this for its `section`; `bundle.ts` only reads `manifest`) — so the longer explanatory
|
|
8
|
+
* note for a capability must only appear when the corresponding `hasRepoX` helper (the SAME
|
|
9
|
+
* store-aware gate that decides whether `render-pack.ts` actually scaffolds real files into the
|
|
10
|
+
* repo) is true. Before this fix, an org-store capability — real, but scaffolded only into the
|
|
11
|
+
* laptop bundle, never into this repo — still got its note rendered here, pointing a reader of
|
|
12
|
+
* this repo's AGENTS.md at a `.baselane/...` path that doesn't exist in this repo (a silent
|
|
13
|
+
* no-op from the repo's point of view, the inverse of "coming soon" honesty). The one-line
|
|
14
|
+
* `status()` entries above are left store-agnostic deliberately (see the comment on `status`).
|
|
15
|
+
*/
|
|
16
|
+
export declare function renderCapabilities(pack: WorkflowPack): {
|
|
17
|
+
section: string | null;
|
|
18
|
+
manifest: string | null;
|
|
19
|
+
};
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
import { MEMORY_AGENTS_NOTE, MEMORY_CLAUDE_MEM_AGENTS_NOTE, MEMORY_LETTA_AGENTS_NOTE, MEMORY_NATIVE_AGENTS_NOTE, MEMORY_VECTOR_AGENTS_NOTE, hasRepoMemoryClaudeMemMethod, hasRepoMemoryFilesMethod, hasRepoMemoryLettaMethod, hasRepoMemoryNativeMethod, hasRepoMemoryVectorMethod, } from "./memory.js";
|
|
2
|
+
import { DESIGN_AGENTS_NOTE, hasRepoDesignCapability } from "./design.js";
|
|
3
|
+
import { TASKS_AGENTS_NOTE, TASKS_BEADS_AGENTS_NOTE, TASKS_SPECKIT_AGENTS_NOTE, TASKS_TASKMASTER_AGENTS_NOTE, hasRepoTasksBeadsMethod, hasRepoTasksLedgerMethod, hasRepoTasksSpeckitMethod, hasRepoTasksTaskmasterMethod, } from "./tasks.js";
|
|
4
|
+
import { WIKI_AGENTS_NOTE, WIKI_DEEPWIKI_AGENTS_NOTE, WIKI_DOCS_AGENTS_NOTE, hasRepoWikiBaselaneMethod, hasRepoWikiDeepwikiMethod, hasRepoWikiDocsMethod, } from "./wiki.js";
|
|
5
|
+
import { GRAPH_AGENTS_NOTE, hasRepoGraphCapability } from "./graph.js";
|
|
6
|
+
import { SYSTEM_MAP_AGENTS_NOTE, hasRepoSystemMapCapability } from "./system-map.js";
|
|
7
|
+
const PROVISIONED_METHODS = {
|
|
8
|
+
memory: new Set(["files", "native", "claude-mem", "vector", "letta"]),
|
|
9
|
+
design: new Set(["author", "import", "analyze"]),
|
|
10
|
+
tasks: new Set(["ledger", "speckit", "taskmaster", "beads"]),
|
|
11
|
+
wiki: new Set(["baselane", "deepwiki", "docs"]),
|
|
12
|
+
graph: new Set(["imports", "graphify", "aider", "lsp", "sourcegraph"]),
|
|
13
|
+
"system-map": new Set(["analyze", "analyze+llm"]),
|
|
14
|
+
};
|
|
15
|
+
/** This status is store-agnostic on purpose: it feeds `.baselane/capabilities.json`, which ships
|
|
16
|
+
* identically to the repo and the laptop bundle, and a method that's genuinely implemented is
|
|
17
|
+
* "provisioned" regardless of which surface (repo file or agent-managed laptop bundle) ends up
|
|
18
|
+
* holding its scaffolding — see the bug-#37.1 note below for the part of this file that DOES
|
|
19
|
+
* need to be store-aware. */
|
|
20
|
+
function status(capability) {
|
|
21
|
+
return PROVISIONED_METHODS[capability.type]?.has(capability.method) ? "provisioned" : "coming soon";
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* AGENTS.md "## Harness capabilities" section + `.baselane/capabilities.json` manifest, or both
|
|
25
|
+
* null if the pack declares none.
|
|
26
|
+
*
|
|
27
|
+
* Bug #37.1 fix: AGENTS.md is a repo-only artifact (only `render-pack.ts`'s `renderAgentsMd`
|
|
28
|
+
* calls this for its `section`; `bundle.ts` only reads `manifest`) — so the longer explanatory
|
|
29
|
+
* note for a capability must only appear when the corresponding `hasRepoX` helper (the SAME
|
|
30
|
+
* store-aware gate that decides whether `render-pack.ts` actually scaffolds real files into the
|
|
31
|
+
* repo) is true. Before this fix, an org-store capability — real, but scaffolded only into the
|
|
32
|
+
* laptop bundle, never into this repo — still got its note rendered here, pointing a reader of
|
|
33
|
+
* this repo's AGENTS.md at a `.baselane/...` path that doesn't exist in this repo (a silent
|
|
34
|
+
* no-op from the repo's point of view, the inverse of "coming soon" honesty). The one-line
|
|
35
|
+
* `status()` entries above are left store-agnostic deliberately (see the comment on `status`).
|
|
36
|
+
*/
|
|
37
|
+
export function renderCapabilities(pack) {
|
|
38
|
+
const capabilities = pack.capabilities;
|
|
39
|
+
if (!capabilities || capabilities.length === 0)
|
|
40
|
+
return { section: null, manifest: null };
|
|
41
|
+
const lines = ["## Harness capabilities", ""];
|
|
42
|
+
for (const c of capabilities)
|
|
43
|
+
lines.push(`- ${c.type} · ${c.store} · ${c.method} — ${status(c)}`);
|
|
44
|
+
// #9: each note is method-specific — gate it on the method it actually describes, not on "any
|
|
45
|
+
// method of this type", so a native/deepwiki/speckit pack is never handed a note that points at a
|
|
46
|
+
// path or command that method never scaffolds. (design's note is method-agnostic: every design
|
|
47
|
+
// method produces the same DESIGN.md, so it stays gated on "any design capability".)
|
|
48
|
+
if (hasRepoMemoryFilesMethod(pack))
|
|
49
|
+
lines.push("", MEMORY_AGENTS_NOTE);
|
|
50
|
+
if (hasRepoMemoryNativeMethod(pack))
|
|
51
|
+
lines.push("", MEMORY_NATIVE_AGENTS_NOTE);
|
|
52
|
+
if (hasRepoMemoryClaudeMemMethod(pack))
|
|
53
|
+
lines.push("", MEMORY_CLAUDE_MEM_AGENTS_NOTE);
|
|
54
|
+
if (hasRepoMemoryVectorMethod(pack))
|
|
55
|
+
lines.push("", MEMORY_VECTOR_AGENTS_NOTE);
|
|
56
|
+
if (hasRepoMemoryLettaMethod(pack))
|
|
57
|
+
lines.push("", MEMORY_LETTA_AGENTS_NOTE);
|
|
58
|
+
if (hasRepoDesignCapability(pack))
|
|
59
|
+
lines.push("", DESIGN_AGENTS_NOTE);
|
|
60
|
+
if (hasRepoTasksLedgerMethod(pack))
|
|
61
|
+
lines.push("", TASKS_AGENTS_NOTE);
|
|
62
|
+
if (hasRepoTasksSpeckitMethod(pack))
|
|
63
|
+
lines.push("", TASKS_SPECKIT_AGENTS_NOTE);
|
|
64
|
+
if (hasRepoTasksTaskmasterMethod(pack))
|
|
65
|
+
lines.push("", TASKS_TASKMASTER_AGENTS_NOTE);
|
|
66
|
+
if (hasRepoTasksBeadsMethod(pack))
|
|
67
|
+
lines.push("", TASKS_BEADS_AGENTS_NOTE);
|
|
68
|
+
if (hasRepoWikiBaselaneMethod(pack))
|
|
69
|
+
lines.push("", WIKI_AGENTS_NOTE);
|
|
70
|
+
if (hasRepoWikiDeepwikiMethod(pack))
|
|
71
|
+
lines.push("", WIKI_DEEPWIKI_AGENTS_NOTE);
|
|
72
|
+
if (hasRepoWikiDocsMethod(pack))
|
|
73
|
+
lines.push("", WIKI_DOCS_AGENTS_NOTE);
|
|
74
|
+
if (hasRepoGraphCapability(pack))
|
|
75
|
+
lines.push("", GRAPH_AGENTS_NOTE);
|
|
76
|
+
if (hasRepoSystemMapCapability(pack))
|
|
77
|
+
lines.push("", SYSTEM_MAP_AGENTS_NOTE);
|
|
78
|
+
const section = lines.join("\n");
|
|
79
|
+
// Provenance is builder/library metadata (increment 26) — never shipped into a rendered file.
|
|
80
|
+
// This manifest is the ONLY renderer that serializes whole block objects, so it drops the key
|
|
81
|
+
// here (rest-destructuring siblings are exempt from noUnusedLocals). No-op for provenance-free
|
|
82
|
+
// packs: the emitted JSON is byte-identical, so every golden stays untouched.
|
|
83
|
+
const manifestCapabilities = capabilities.map(({ provenance: _prov, ...c }) => c);
|
|
84
|
+
const manifest = JSON.stringify({ version: 1, capabilities: manifestCapabilities }, null, 2) + "\n";
|
|
85
|
+
return { section, manifest };
|
|
86
|
+
}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
/** One native SKILL.md: required name+description frontmatter, optional governance keys
|
|
2
|
+
* (user-invocable / disable-model-invocation / allowed-tools), optional license key + attribution
|
|
3
|
+
* comment (retained import notice), then the body verbatim. category/provenance are baselane-side
|
|
4
|
+
* and never written here. Governance keys sit after description and before license, so a skill with
|
|
5
|
+
* none of them renders byte-identically to before. */
|
|
6
|
+
function skillMd(s) {
|
|
7
|
+
const fm = [`name: ${s.name}`, `description: ${s.description}`];
|
|
8
|
+
if (s.userInvocable !== undefined)
|
|
9
|
+
fm.push(`user-invocable: ${s.userInvocable}`);
|
|
10
|
+
if (s.disableModelInvocation !== undefined)
|
|
11
|
+
fm.push(`disable-model-invocation: ${s.disableModelInvocation}`);
|
|
12
|
+
if (s.allowedTools !== undefined && s.allowedTools.length > 0)
|
|
13
|
+
fm.push(`allowed-tools: ${s.allowedTools.join(", ")}`);
|
|
14
|
+
if (s.attribution)
|
|
15
|
+
fm.push(`license: ${s.attribution.license}`);
|
|
16
|
+
const notice = s.attribution
|
|
17
|
+
? `<!-- adapted from ${s.attribution.source} (${s.attribution.license}) — ${s.attribution.url} -->\n\n`
|
|
18
|
+
: "";
|
|
19
|
+
const body = s.body.endsWith("\n") ? s.body : `${s.body}\n`;
|
|
20
|
+
return `---\n${fm.join("\n")}\n---\n\n${notice}${body}`;
|
|
21
|
+
}
|
|
22
|
+
function claudeMd(pack) {
|
|
23
|
+
const lines = ["# CLAUDE.md", "", "@AGENTS.md", ""];
|
|
24
|
+
const artifacts = [];
|
|
25
|
+
for (const a of pack.agents)
|
|
26
|
+
artifacts.push(`- Subagent: \`.claude/agents/${a.name}.md\``);
|
|
27
|
+
for (const c of pack.commands)
|
|
28
|
+
artifacts.push(`- Command: \`.claude/commands/${c.name}.md\``);
|
|
29
|
+
if (pack.hooks.length > 0)
|
|
30
|
+
artifacts.push("- Hooks: see `.claude/settings.json`");
|
|
31
|
+
for (const s of pack.skills ?? []) {
|
|
32
|
+
artifacts.push(`- Skill: \`.claude/skills/${s.name}/SKILL.md\` — ${s.description}`);
|
|
33
|
+
}
|
|
34
|
+
// #34: a zero-artifact pack has no native Claude Code implementation to announce. Emitting the
|
|
35
|
+
// preamble followed by an empty list is a false identity — render only the @AGENTS.md importer.
|
|
36
|
+
if (artifacts.length > 0) {
|
|
37
|
+
lines.push("This project defines a native Claude Code implementation of this workflow pack:");
|
|
38
|
+
lines.push(...artifacts, "");
|
|
39
|
+
}
|
|
40
|
+
return lines.join("\n");
|
|
41
|
+
}
|
|
42
|
+
function settingsJson(pack) {
|
|
43
|
+
const byEvent = {};
|
|
44
|
+
for (const h of pack.hooks) {
|
|
45
|
+
const command = h.action === "run-command" ? h.command : `echo ${JSON.stringify(h.message)}`;
|
|
46
|
+
const entry = {
|
|
47
|
+
matcher: h.matcher,
|
|
48
|
+
hooks: [{ type: "command", command }],
|
|
49
|
+
};
|
|
50
|
+
(byEvent[h.event] ??= []).push(entry);
|
|
51
|
+
}
|
|
52
|
+
return JSON.stringify({ hooks: byEvent }, null, 2) + "\n";
|
|
53
|
+
}
|
|
54
|
+
/** Nested-YAML `mcpServers:` block for an agent's frontmatter (server name → command/args). Emitted
|
|
55
|
+
* only when present, so an agent without MCP servers renders exactly as before. Values are quoted
|
|
56
|
+
* with JSON.stringify — valid YAML and byte-matching the harness bundles' quoted args. */
|
|
57
|
+
function mcpServersYaml(servers) {
|
|
58
|
+
const lines = ["mcpServers:"];
|
|
59
|
+
for (const [name, cfg] of Object.entries(servers)) {
|
|
60
|
+
lines.push(` ${name}:`, ` command: ${cfg.command}`);
|
|
61
|
+
if (cfg.args && cfg.args.length > 0) {
|
|
62
|
+
lines.push(" args:");
|
|
63
|
+
for (const a of cfg.args)
|
|
64
|
+
lines.push(` - ${JSON.stringify(a)}`);
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
return lines.join("\n");
|
|
68
|
+
}
|
|
69
|
+
function agentMd(a) {
|
|
70
|
+
const mcp = a.mcpServers && Object.keys(a.mcpServers).length > 0 ? `\n${mcpServersYaml(a.mcpServers)}` : "";
|
|
71
|
+
return `---\nname: ${a.name}\ndescription: ${a.description}\ntools: ${a.tools.join(", ")}\nmodel: ${a.model}${mcp}\n---\n\n${a.prompt}\n`;
|
|
72
|
+
}
|
|
73
|
+
/** Claude Code output: thin CLAUDE.md importer + native agent/command/hook artifacts. */
|
|
74
|
+
export function renderClaudeFiles(pack) {
|
|
75
|
+
const files = { "CLAUDE.md": claudeMd(pack) };
|
|
76
|
+
for (const a of pack.agents) {
|
|
77
|
+
files[`.claude/agents/${a.name}.md`] = agentMd(a);
|
|
78
|
+
}
|
|
79
|
+
for (const c of pack.commands) {
|
|
80
|
+
files[`.claude/commands/${c.name}.md`] =
|
|
81
|
+
`---\ndescription: ${c.description}\nargument-hint: ${c.argument_hint}\n---\n\n${c.prompt}\n`;
|
|
82
|
+
}
|
|
83
|
+
for (const s of pack.skills ?? []) {
|
|
84
|
+
files[`.claude/skills/${s.name}/SKILL.md`] = skillMd(s);
|
|
85
|
+
for (const r of s.references ?? []) {
|
|
86
|
+
files[`.claude/skills/${s.name}/${r.name}.md`] = r.body.endsWith("\n") ? r.body : `${r.body}\n`;
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
if (pack.hooks.length > 0)
|
|
90
|
+
files[".claude/settings.json"] = settingsJson(pack);
|
|
91
|
+
return files;
|
|
92
|
+
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import type { Capability, FileMap, WorkflowPack } from "../types.ts";
|
|
2
|
+
/** Google-Stitch-standard DESIGN.md, built from the design capability's config tokens (all optional). */
|
|
3
|
+
export declare function renderDesignMd(capability: Capability): string;
|
|
4
|
+
/** The AGENTS.md capabilities-section note for a design+author capability, regardless of store. */
|
|
5
|
+
export declare const DESIGN_AGENTS_NOTE: string;
|
|
6
|
+
/** DESIGN.md for the `import` method: parses `capability.config.tokens`, then reuses the exact
|
|
7
|
+
* same 9-section builder `author` uses. A parse failure falls back to `author`'s own defaults,
|
|
8
|
+
* with a visible note rather than crashing. */
|
|
9
|
+
export declare function renderImportDesignMd(capability: Capability): string;
|
|
10
|
+
/** DESIGN.md skeleton for the `analyze` method — same 9 headings as the real document, each
|
|
11
|
+
* still holding a TODO marker naming what to extract and from where. */
|
|
12
|
+
export declare function renderAnalyzeDesignSkeleton(capability: Capability): string;
|
|
13
|
+
/** True if this store has a real (non-"coming soon") design capability that would actually
|
|
14
|
+
* scaffold a DESIGN.md — used by capabilities.ts to gate the AGENTS.md note (bug #37.1). */
|
|
15
|
+
export declare function hasRepoDesignCapability(pack: WorkflowPack): boolean;
|
|
16
|
+
export declare function hasOrgDesignCapability(pack: WorkflowPack): boolean;
|
|
17
|
+
/** `DESIGN.md` at the repo root, for a repo-store design capability using `author`, `import`,
|
|
18
|
+
* or `analyze` — whichever is present. */
|
|
19
|
+
export declare function renderRepoDesignFiles(pack: WorkflowPack): FileMap;
|
|
20
|
+
/** `DESIGN.md` in the laptop bundle, for an org-store design capability using `author`,
|
|
21
|
+
* `import`, or `analyze` — whichever is present. */
|
|
22
|
+
export declare function renderBundleDesignFiles(pack: WorkflowPack): FileMap;
|
|
23
|
+
export declare function hasRepoDesignAnalyze(pack: WorkflowPack): boolean;
|
|
24
|
+
export declare function hasOrgDesignAnalyze(pack: WorkflowPack): boolean;
|
|
25
|
+
/** Adds the /design-analyze command to a pack, without disturbing what it already declares.
|
|
26
|
+
* Only called when a design+analyze capability is present for the given store. */
|
|
27
|
+
export declare function withDesignAnalyzeScaffolding(pack: WorkflowPack, store: "org" | "repo"): WorkflowPack;
|