@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,30 @@
|
|
|
1
|
+
import type { FileMap, WorkflowPack } from "../types.ts";
|
|
2
|
+
/** The AGENTS.md capabilities-section note for a wiki+baselane capability, regardless of store. */
|
|
3
|
+
export declare const WIKI_AGENTS_NOTE: string;
|
|
4
|
+
export declare const WIKI_DEEPWIKI_AGENTS_NOTE: string;
|
|
5
|
+
export declare const WIKI_DOCS_AGENTS_NOTE: string;
|
|
6
|
+
/** Despite the name — kept for compatibility with the existing gate call sites in
|
|
7
|
+
* render-pack.ts/bundle.ts/capabilities.ts — this now guards `withWikiScaffolding` for every
|
|
8
|
+
* wired-up wiki method in the repo store, not baselane alone. */
|
|
9
|
+
export declare function hasRepoWikiBaselane(pack: WorkflowPack): boolean;
|
|
10
|
+
/** Org-store counterpart of {@link hasRepoWikiBaselane}. */
|
|
11
|
+
export declare function hasOrgWikiBaselane(pack: WorkflowPack): boolean;
|
|
12
|
+
/** #9: `WIKI_AGENTS_NOTE` describes the `baselane` method (`.baselane/wiki/` OKF store, `/wiki`).
|
|
13
|
+
* Unlike {@link hasRepoWikiBaselane} (which gates scaffolding for ANY wiki method), this gates only
|
|
14
|
+
* that note — so a deepwiki/docs pack isn't told to use `/wiki` + a `.baselane/wiki/index.md` that
|
|
15
|
+
* was never created (deepwiki scaffolds `/deepwiki`, docs scaffolds `/docs-lookup`). */
|
|
16
|
+
export declare function hasRepoWikiBaselaneMethod(pack: WorkflowPack): boolean;
|
|
17
|
+
/** #9: narrow, note-only gates for the sibling methods — same rationale as
|
|
18
|
+
* {@link hasRepoWikiBaselaneMethod} above. */
|
|
19
|
+
export declare function hasRepoWikiDeepwikiMethod(pack: WorkflowPack): boolean;
|
|
20
|
+
export declare function hasRepoWikiDocsMethod(pack: WorkflowPack): boolean;
|
|
21
|
+
/** Adds the present wiki method(s)' command(s) for one store (+ baselane's Stop-hook reminder)
|
|
22
|
+
* to a pack, without disturbing what it already declares. `store` defaults to "repo" for
|
|
23
|
+
* compatibility with pre-multi-method call sites; render-pack.ts passes "repo" and bundle.ts
|
|
24
|
+
* passes "org" explicitly so a method declared in one store never leaks a command into the
|
|
25
|
+
* other's file map. */
|
|
26
|
+
export declare function withWikiScaffolding(pack: WorkflowPack, store?: "org" | "repo"): WorkflowPack;
|
|
27
|
+
/** `.baselane/wiki/README.md` etc., for whichever wiki methods are present in the repo store. */
|
|
28
|
+
export declare function renderRepoWikiFiles(pack: WorkflowPack): FileMap;
|
|
29
|
+
/** `wiki/README.md` etc. in the laptop bundle, for whichever wiki methods are present in the org store. */
|
|
30
|
+
export declare function renderBundleWikiFiles(pack: WorkflowPack): FileMap;
|
|
@@ -0,0 +1,288 @@
|
|
|
1
|
+
/** `.baselane/wiki/README.md` (repo) / `wiki/README.md` (bundle) — same body either way. */
|
|
2
|
+
const WIKI_README = `# Wiki protocol
|
|
3
|
+
|
|
4
|
+
This directory is a durable knowledge base the AI reads before acting and writes after
|
|
5
|
+
learning — one concept per file, plus an index and a change log, following the Karpathy
|
|
6
|
+
"LLM Wiki" pattern of ingest/query/lint.
|
|
7
|
+
|
|
8
|
+
This wiki is Open Knowledge Format (OKF) compliant — any OKF-reading agent can consume it.
|
|
9
|
+
|
|
10
|
+
## Format (OKF)
|
|
11
|
+
|
|
12
|
+
Each page is a single markdown file with YAML frontmatter, one concept per file:
|
|
13
|
+
|
|
14
|
+
\`\`\`markdown
|
|
15
|
+
---
|
|
16
|
+
type: How-it-works
|
|
17
|
+
title: <optional title>
|
|
18
|
+
description: <optional one-line summary>
|
|
19
|
+
resource: <optional URI to an external system>
|
|
20
|
+
tags: [optional, list, of, tags]
|
|
21
|
+
timestamp: <optional ISO 8601 timestamp>
|
|
22
|
+
---
|
|
23
|
+
|
|
24
|
+
<free-form markdown body>
|
|
25
|
+
\`\`\`
|
|
26
|
+
|
|
27
|
+
\`type\` is the only required frontmatter field — a free-form string naming what kind of
|
|
28
|
+
page this is (e.g. \`How-it-works\`, \`Runbook\`, \`Decision\`, \`Gotcha\`). Everything else in
|
|
29
|
+
the frontmatter is optional; the body below it is unconstrained markdown.
|
|
30
|
+
|
|
31
|
+
## Reserved files
|
|
32
|
+
|
|
33
|
+
- \`index.md\` — navigation. One line per page, link plus a one-line summary:
|
|
34
|
+
|
|
35
|
+
\`\`\`markdown
|
|
36
|
+
- [Title](page.md) — one-line summary of what this page covers
|
|
37
|
+
\`\`\`
|
|
38
|
+
|
|
39
|
+
- \`log.md\` — append-only change log. One entry per change, parseable prefix:
|
|
40
|
+
|
|
41
|
+
\`\`\`markdown
|
|
42
|
+
## [YYYY-MM-DD] <operation> | <subject>
|
|
43
|
+
\`\`\`
|
|
44
|
+
|
|
45
|
+
where \`<operation>\` is one of \`ingest\`, \`query\`, \`lint\`, and \`<subject>\` names the
|
|
46
|
+
page(s) touched. Never rewrite a line once it's appended — only add new ones.
|
|
47
|
+
|
|
48
|
+
## Operations
|
|
49
|
+
|
|
50
|
+
- **Ingest** — when you learn something durable, create or update the relevant page(s):
|
|
51
|
+
update cross-links in related pages, add or update its \`index.md\` line, and append a
|
|
52
|
+
\`log.md\` entry.
|
|
53
|
+
- **Query** — read \`index.md\` first, then the relevant pages, BEFORE acting. When
|
|
54
|
+
answering required real synthesis rather than a lookup, save the result as a new page —
|
|
55
|
+
explorations compound instead of being redone.
|
|
56
|
+
- **Lint** — periodically, and via \`/wiki lint\`, check for: contradictions between pages,
|
|
57
|
+
stale claims, orphan pages missing from \`index.md\`, and broken cross-links. Reconcile
|
|
58
|
+
contradictions rather than letting them coexist — corrections beat additions.
|
|
59
|
+
|
|
60
|
+
## The loop rule
|
|
61
|
+
|
|
62
|
+
Read before acting. Write after learning. The tedious part is the bookkeeping — that's
|
|
63
|
+
your job, not the human's.
|
|
64
|
+
`;
|
|
65
|
+
const WIKI_COMMAND = {
|
|
66
|
+
name: "wiki",
|
|
67
|
+
description: "Look up a topic, record or update one, or run a lint pass over the wiki.",
|
|
68
|
+
argument_hint: "<topic to look up | fact to record | \"lint\">",
|
|
69
|
+
prompt: "Follow the wiki protocol in `.baselane/wiki/README.md` (or `wiki/README.md`) for " +
|
|
70
|
+
'$ARGUMENTS. If this is a lookup, read `index.md` first, then the relevant page(s), ' +
|
|
71
|
+
"before answering — if the answer required real synthesis, save it as a new page. If " +
|
|
72
|
+
"this is new or changed durable knowledge, create or update the relevant page (OKF " +
|
|
73
|
+
"frontmatter with at least `type`), update cross-links, add or update its `index.md` " +
|
|
74
|
+
'line, and append a `log.md` entry. If $ARGUMENTS is "lint" (or empty), scan every ' +
|
|
75
|
+
"page for contradictions, stale claims, orphan pages missing from the index, and " +
|
|
76
|
+
"broken cross-links — reconcile contradictions rather than leaving them, since " +
|
|
77
|
+
"corrections beat additions.",
|
|
78
|
+
};
|
|
79
|
+
const WIKI_STOP_HOOK = {
|
|
80
|
+
event: "Stop",
|
|
81
|
+
matcher: "",
|
|
82
|
+
description: "Reminds the agent to update the wiki entry after changing how something works.",
|
|
83
|
+
action: "print-reminder",
|
|
84
|
+
message: "Before finishing, if you changed how something works, update the wiki entry " +
|
|
85
|
+
"(and its index.md/log.md lines) — see .baselane/wiki/README.md.",
|
|
86
|
+
};
|
|
87
|
+
/**
|
|
88
|
+
* `.baselane/mcp/deepwiki.json` (repo) / `mcp/deepwiki.json` (bundle) — a ready-to-merge
|
|
89
|
+
* snippet for this repo's `.mcp.json`. Never write `.mcp.json` itself: an existing one may
|
|
90
|
+
* already declare other servers, so the README instructs a manual merge instead of a clobber.
|
|
91
|
+
*/
|
|
92
|
+
const DEEPWIKI_MCP_JSON = JSON.stringify({ mcpServers: { deepwiki: { type: "sse", url: "https://mcp.deepwiki.com/sse" } } }, null, 2) + "\n";
|
|
93
|
+
/** `.baselane/deepwiki/README.md` (repo) / `deepwiki/README.md` (bundle) — same body either way. */
|
|
94
|
+
const DEEPWIKI_README = `# Wiki adapter: deepwiki
|
|
95
|
+
|
|
96
|
+
[DeepWiki](https://deepwiki.com) (\`mcp.deepwiki.com\`) is a free, no-auth remote MCP server
|
|
97
|
+
that auto-generates an architecture wiki for any indexed GitHub repository and answers
|
|
98
|
+
questions about it — read-only, nothing to install.
|
|
99
|
+
|
|
100
|
+
## Setup
|
|
101
|
+
|
|
102
|
+
1. A ready-to-merge snippet lives at \`.baselane/mcp/deepwiki.json\`. Open it and merge its
|
|
103
|
+
\`mcpServers.deepwiki\` entry into this repo's \`.mcp.json\` — **never overwrite an existing
|
|
104
|
+
\`.mcp.json\`**; add the \`deepwiki\` key alongside whatever servers are already configured.
|
|
105
|
+
2. If \`.mcp.json\` doesn't exist yet, \`.baselane/mcp/deepwiki.json\` is already in the right
|
|
106
|
+
shape to copy in as-is.
|
|
107
|
+
3. Restart Claude Code (or run \`/mcp\`) so it picks up the new server.
|
|
108
|
+
|
|
109
|
+
## Usage
|
|
110
|
+
|
|
111
|
+
Once configured, three MCP tools become available:
|
|
112
|
+
|
|
113
|
+
- \`read_wiki_structure\` — list the documentation topics DeepWiki has generated for a repo.
|
|
114
|
+
- \`read_wiki_contents\` — read the generated architecture wiki for a repo.
|
|
115
|
+
- \`ask_question\` — ask a natural-language question about a repo's codebase.
|
|
116
|
+
|
|
117
|
+
Use \`/deepwiki <question>\` for guidance on which tool to reach for.
|
|
118
|
+
|
|
119
|
+
## How this maps to the baselane protocol
|
|
120
|
+
|
|
121
|
+
DeepWiki is **read side only** — it answers "how does this work" questions against an
|
|
122
|
+
auto-generated wiki you don't maintain, and has no write/ingest path of its own. Pair it with
|
|
123
|
+
the \`baselane\` wiki method (\`.baselane/wiki/\`) for the write loop: when DeepWiki (or your own
|
|
124
|
+
exploration) surfaces a durable fact worth keeping, ingest it into \`.baselane/wiki/\` the
|
|
125
|
+
normal way — DeepWiki won't remember it for you.
|
|
126
|
+
`;
|
|
127
|
+
const DEEPWIKI_COMMAND = {
|
|
128
|
+
name: "deepwiki",
|
|
129
|
+
description: "Query DeepWiki's auto-generated architecture wiki for this repo via MCP.",
|
|
130
|
+
argument_hint: "<question about this repo>",
|
|
131
|
+
prompt: "Use the DeepWiki MCP tools (`read_wiki_structure`, `read_wiki_contents`, `ask_question`), " +
|
|
132
|
+
"configured per `.baselane/deepwiki/README.md` (or `deepwiki/README.md`), to answer " +
|
|
133
|
+
"$ARGUMENTS. Start with `read_wiki_structure` to see what's documented, `read_wiki_contents` " +
|
|
134
|
+
"to read a topic in full, or go straight to `ask_question` for a direct natural-language " +
|
|
135
|
+
"question. If nothing is indexed yet for this repo, say so and suggest visiting " +
|
|
136
|
+
"https://deepwiki.com to request indexing. DeepWiki is read-only — if you learn something " +
|
|
137
|
+
"durable that should persist, ingest it into `.baselane/wiki/` (if present) via the normal " +
|
|
138
|
+
"wiki protocol instead; DeepWiki has no write path of its own.",
|
|
139
|
+
};
|
|
140
|
+
/** Availability-guarded reminder: fires only while `.mcp.json` doesn't yet declare the
|
|
141
|
+
* `deepwiki` server, so it goes silent the moment setup is actually done. */
|
|
142
|
+
const DEEPWIKI_SETUP_HOOK = {
|
|
143
|
+
event: "SessionStart",
|
|
144
|
+
matcher: "",
|
|
145
|
+
description: "Reminds the agent to merge the DeepWiki MCP snippet into .mcp.json if it hasn't been yet.",
|
|
146
|
+
action: "run-command",
|
|
147
|
+
command: 'grep -q "\\"deepwiki\\"" .mcp.json 2>/dev/null || ' +
|
|
148
|
+
'echo "baselane: DeepWiki MCP not configured yet — merge .baselane/mcp/deepwiki.json (or mcp/deepwiki.json) into .mcp.json, see .baselane/deepwiki/README.md"',
|
|
149
|
+
};
|
|
150
|
+
/**
|
|
151
|
+
* `.baselane/docs-as-context/README.md` (repo) / `docs-as-context/README.md` (bundle) — same
|
|
152
|
+
* body either way. No wiki state directory (no `index.md`/`log.md`) is created for this method:
|
|
153
|
+
* the repo's own docs are the knowledge base.
|
|
154
|
+
*/
|
|
155
|
+
const DOCS_README = `# Wiki adapter: docs (docs-as-context)
|
|
156
|
+
|
|
157
|
+
This project's own existing docs (\`docs/\`, \`ARCHITECTURE.md\`, \`README.md\`, or wherever this
|
|
158
|
+
repo keeps them) are the knowledge base — read them before acting, and propose changes to them
|
|
159
|
+
the same way you'd propose any other code change. No separate wiki state is created; this
|
|
160
|
+
file just names the protocol.
|
|
161
|
+
|
|
162
|
+
## Setup
|
|
163
|
+
|
|
164
|
+
Nothing to install or scaffold. This method has no state directory of its own — it points at
|
|
165
|
+
docs the repo already owns.
|
|
166
|
+
|
|
167
|
+
## Usage
|
|
168
|
+
|
|
169
|
+
- **Before acting**, skim the repo's existing docs for anything relevant to the task at hand.
|
|
170
|
+
- **When you learn something that belongs in the docs** — a decision, a correction, an
|
|
171
|
+
architectural note — propose the update as a normal PR/commit to those same files. Docs
|
|
172
|
+
changes go through the same review as code; there's no separate ingest step.
|
|
173
|
+
- Use \`/docs-lookup <topic>\` to find and read the relevant existing doc(s) before starting work.
|
|
174
|
+
|
|
175
|
+
## How this maps to the baselane protocol
|
|
176
|
+
|
|
177
|
+
Where \`baselane\` maintains its own read/write knowledge base under \`.baselane/wiki/\`, \`docs\`
|
|
178
|
+
treats the repo's pre-existing documentation as that knowledge base directly — read-only from
|
|
179
|
+
the harness's point of view, writable only through the normal commit/PR path a human reviews.
|
|
180
|
+
`;
|
|
181
|
+
const DOCS_COMMAND = {
|
|
182
|
+
name: "docs-lookup",
|
|
183
|
+
description: "Find and read the repo's existing docs relevant to a topic before acting.",
|
|
184
|
+
argument_hint: "<topic to look up>",
|
|
185
|
+
prompt: "Locate and read the existing documentation relevant to $ARGUMENTS — check `docs/`, " +
|
|
186
|
+
"`ARCHITECTURE.md`, `README.md`, and any other doc files this repo already maintains (see " +
|
|
187
|
+
"`.baselane/docs-as-context/README.md`, or `docs-as-context/README.md`, for the protocol). " +
|
|
188
|
+
"Read before acting. If the docs are missing or wrong for $ARGUMENTS, propose the fix as a " +
|
|
189
|
+
"normal edit to those files, not a separate wiki entry — docs changes go through the same " +
|
|
190
|
+
"review as code.",
|
|
191
|
+
};
|
|
192
|
+
/** The AGENTS.md capabilities-section note for a wiki+baselane capability, regardless of store. */
|
|
193
|
+
export const WIKI_AGENTS_NOTE = "### Wiki\n\n" +
|
|
194
|
+
"`.baselane/wiki/` is an OKF-compliant knowledge base: read `index.md` and the relevant " +
|
|
195
|
+
"pages before acting, and ingest new durable knowledge into a page (with its index and " +
|
|
196
|
+
"log lines) after learning it. Use `/wiki` to look up, record, or lint.";
|
|
197
|
+
// #9: each sibling method gets its own note naming the path/command it actually scaffolds,
|
|
198
|
+
// instead of wiki+baselane's note being handed to every method (see hasRepoWikiBaselaneMethod).
|
|
199
|
+
export const WIKI_DEEPWIKI_AGENTS_NOTE = "### Wiki (deepwiki)\n\n" +
|
|
200
|
+
"This project queries DeepWiki's auto-generated architecture wiki via MCP — merge " +
|
|
201
|
+
"`.baselane/mcp/deepwiki.json` into `.mcp.json` (see `.baselane/deepwiki/README.md`), then use " +
|
|
202
|
+
"`/deepwiki <question>`. DeepWiki is read-only; ingest anything durable you learn into " +
|
|
203
|
+
"`.baselane/wiki/` (if present) the normal way instead.";
|
|
204
|
+
export const WIKI_DOCS_AGENTS_NOTE = "### Wiki (docs)\n\n" +
|
|
205
|
+
"This project treats its own existing docs as the knowledge base (see " +
|
|
206
|
+
"`.baselane/docs-as-context/README.md`) — read them before acting, and propose changes the " +
|
|
207
|
+
"normal way. Use `/docs-lookup <topic>` to find the relevant doc before starting work.";
|
|
208
|
+
function wikiCapabilitiesFor(pack, store) {
|
|
209
|
+
return (pack.capabilities ?? []).filter((c) => c.type === "wiki" && c.store === store);
|
|
210
|
+
}
|
|
211
|
+
function hasWikiMethod(pack, store, method) {
|
|
212
|
+
return wikiCapabilitiesFor(pack, store).some((c) => c.method === method);
|
|
213
|
+
}
|
|
214
|
+
/** True if this store has any wired-up wiki capability (baselane, deepwiki, or docs) that needs
|
|
215
|
+
* its command (and, for baselane, its Stop hook) spliced into the pack via `withWikiScaffolding`. */
|
|
216
|
+
function hasWikiScaffoldingNeed(pack, store) {
|
|
217
|
+
return (hasWikiMethod(pack, store, "baselane") || hasWikiMethod(pack, store, "deepwiki") || hasWikiMethod(pack, store, "docs"));
|
|
218
|
+
}
|
|
219
|
+
/** Despite the name — kept for compatibility with the existing gate call sites in
|
|
220
|
+
* render-pack.ts/bundle.ts/capabilities.ts — this now guards `withWikiScaffolding` for every
|
|
221
|
+
* wired-up wiki method in the repo store, not baselane alone. */
|
|
222
|
+
export function hasRepoWikiBaselane(pack) {
|
|
223
|
+
return hasWikiScaffoldingNeed(pack, "repo");
|
|
224
|
+
}
|
|
225
|
+
/** Org-store counterpart of {@link hasRepoWikiBaselane}. */
|
|
226
|
+
export function hasOrgWikiBaselane(pack) {
|
|
227
|
+
return hasWikiScaffoldingNeed(pack, "org");
|
|
228
|
+
}
|
|
229
|
+
/** #9: `WIKI_AGENTS_NOTE` describes the `baselane` method (`.baselane/wiki/` OKF store, `/wiki`).
|
|
230
|
+
* Unlike {@link hasRepoWikiBaselane} (which gates scaffolding for ANY wiki method), this gates only
|
|
231
|
+
* that note — so a deepwiki/docs pack isn't told to use `/wiki` + a `.baselane/wiki/index.md` that
|
|
232
|
+
* was never created (deepwiki scaffolds `/deepwiki`, docs scaffolds `/docs-lookup`). */
|
|
233
|
+
export function hasRepoWikiBaselaneMethod(pack) {
|
|
234
|
+
return hasWikiMethod(pack, "repo", "baselane");
|
|
235
|
+
}
|
|
236
|
+
/** #9: narrow, note-only gates for the sibling methods — same rationale as
|
|
237
|
+
* {@link hasRepoWikiBaselaneMethod} above. */
|
|
238
|
+
export function hasRepoWikiDeepwikiMethod(pack) {
|
|
239
|
+
return hasWikiMethod(pack, "repo", "deepwiki");
|
|
240
|
+
}
|
|
241
|
+
export function hasRepoWikiDocsMethod(pack) {
|
|
242
|
+
return hasWikiMethod(pack, "repo", "docs");
|
|
243
|
+
}
|
|
244
|
+
/** Adds the present wiki method(s)' command(s) for one store (+ baselane's Stop-hook reminder)
|
|
245
|
+
* to a pack, without disturbing what it already declares. `store` defaults to "repo" for
|
|
246
|
+
* compatibility with pre-multi-method call sites; render-pack.ts passes "repo" and bundle.ts
|
|
247
|
+
* passes "org" explicitly so a method declared in one store never leaks a command into the
|
|
248
|
+
* other's file map. */
|
|
249
|
+
export function withWikiScaffolding(pack, store = "repo") {
|
|
250
|
+
const methods = new Set(wikiCapabilitiesFor(pack, store).map((c) => c.method));
|
|
251
|
+
const commands = [...pack.commands];
|
|
252
|
+
const hooks = [...pack.hooks];
|
|
253
|
+
if (methods.has("baselane")) {
|
|
254
|
+
commands.push(WIKI_COMMAND);
|
|
255
|
+
hooks.push(WIKI_STOP_HOOK);
|
|
256
|
+
}
|
|
257
|
+
if (methods.has("deepwiki")) {
|
|
258
|
+
commands.push(DEEPWIKI_COMMAND);
|
|
259
|
+
hooks.push(DEEPWIKI_SETUP_HOOK);
|
|
260
|
+
}
|
|
261
|
+
if (methods.has("docs"))
|
|
262
|
+
commands.push(DOCS_COMMAND);
|
|
263
|
+
return { ...pack, commands, hooks };
|
|
264
|
+
}
|
|
265
|
+
/** File map for one store's wiki capabilities — baselane's README, deepwiki's MCP snippet +
|
|
266
|
+
* README, and/or docs' README, whichever methods are present. `pathFor` picks repo vs bundle
|
|
267
|
+
* path shape for a given leaf filename. */
|
|
268
|
+
function wikiFilesFor(pack, store, pathFor) {
|
|
269
|
+
const methods = new Set(wikiCapabilitiesFor(pack, store).map((c) => c.method));
|
|
270
|
+
const files = {};
|
|
271
|
+
if (methods.has("baselane"))
|
|
272
|
+
files[pathFor("wiki/README.md")] = WIKI_README;
|
|
273
|
+
if (methods.has("deepwiki")) {
|
|
274
|
+
files[pathFor("mcp/deepwiki.json")] = DEEPWIKI_MCP_JSON;
|
|
275
|
+
files[pathFor("deepwiki/README.md")] = DEEPWIKI_README;
|
|
276
|
+
}
|
|
277
|
+
if (methods.has("docs"))
|
|
278
|
+
files[pathFor("docs-as-context/README.md")] = DOCS_README;
|
|
279
|
+
return files;
|
|
280
|
+
}
|
|
281
|
+
/** `.baselane/wiki/README.md` etc., for whichever wiki methods are present in the repo store. */
|
|
282
|
+
export function renderRepoWikiFiles(pack) {
|
|
283
|
+
return wikiFilesFor(pack, "repo", (leaf) => `.baselane/${leaf}`);
|
|
284
|
+
}
|
|
285
|
+
/** `wiki/README.md` etc. in the laptop bundle, for whichever wiki methods are present in the org store. */
|
|
286
|
+
export function renderBundleWikiFiles(pack) {
|
|
287
|
+
return wikiFilesFor(pack, "org", (leaf) => leaf);
|
|
288
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { type RepoFileSource } from "@baselane/analyze";
|
|
2
|
+
import type { FileMap } from "../types.ts";
|
|
3
|
+
export interface GraphSeedOptions {
|
|
4
|
+
/** ISO timestamp stamped as the graph's `generated` field — injected so the seed is deterministic
|
|
5
|
+
* (buildImportGraph otherwise stamps `new Date().toISOString()`). */
|
|
6
|
+
generated: string;
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* A computed module-dependency graph for `.baselane/graph.json` (+ human-readable `graph/GRAPH.md`),
|
|
10
|
+
* the central compute the `graph` capability was missing (system-map/design/wiki already have theirs).
|
|
11
|
+
* `runSystemMapJob` already runs buildImportGraph but keeps only a summary; this renders and persists
|
|
12
|
+
* the full graph so it can ride the rollout fold as `file` artifacts — a mirror of buildWikiSeed.
|
|
13
|
+
*
|
|
14
|
+
* Pure + source-agnostic (RepoFileSource → runs centrally via GithubFileSource, no clone). Returns
|
|
15
|
+
* leaf paths (`graph.json`, `graph/GRAPH.md`); the caller prefixes `.baselane/` for the repo surface.
|
|
16
|
+
*/
|
|
17
|
+
export declare function buildGraphSeed(source: RepoFileSource, opts: GraphSeedOptions): Promise<FileMap>;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { buildImportGraph, renderGraphMd } from "@baselane/analyze";
|
|
2
|
+
/**
|
|
3
|
+
* A computed module-dependency graph for `.baselane/graph.json` (+ human-readable `graph/GRAPH.md`),
|
|
4
|
+
* the central compute the `graph` capability was missing (system-map/design/wiki already have theirs).
|
|
5
|
+
* `runSystemMapJob` already runs buildImportGraph but keeps only a summary; this renders and persists
|
|
6
|
+
* the full graph so it can ride the rollout fold as `file` artifacts — a mirror of buildWikiSeed.
|
|
7
|
+
*
|
|
8
|
+
* Pure + source-agnostic (RepoFileSource → runs centrally via GithubFileSource, no clone). Returns
|
|
9
|
+
* leaf paths (`graph.json`, `graph/GRAPH.md`); the caller prefixes `.baselane/` for the repo surface.
|
|
10
|
+
*/
|
|
11
|
+
export async function buildGraphSeed(source, opts) {
|
|
12
|
+
const raw = await buildImportGraph(source);
|
|
13
|
+
const graph = { ...raw, generated: opts.generated };
|
|
14
|
+
return {
|
|
15
|
+
"graph.json": JSON.stringify(graph, null, 2) + "\n",
|
|
16
|
+
"graph/GRAPH.md": renderGraphMd(graph),
|
|
17
|
+
};
|
|
18
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { type RepoFileSource } from "@baselane/analyze";
|
|
2
|
+
import type { FileMap } from "../types.ts";
|
|
3
|
+
export interface WikiSeedOptions {
|
|
4
|
+
/** ISO date (YYYY-MM-DD) stamped into the OKF change log — injected so the seed is deterministic. */
|
|
5
|
+
date: string;
|
|
6
|
+
/** When present, the architecture page gets an AI-narrated overview + hypothesized rules (via the
|
|
7
|
+
* same narrateArchitecture path the system map uses). Absent ⇒ the deterministic static seed only. */
|
|
8
|
+
ai?: {
|
|
9
|
+
apiKey: string;
|
|
10
|
+
fetchImpl?: typeof fetch;
|
|
11
|
+
};
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* A queryable, OKF-formatted seed for `.baselane/wiki/`, computed centrally from static analysis:
|
|
15
|
+
* an index, one architecture page grounded in the repo's real languages/commands/module hotspots,
|
|
16
|
+
* and a change log. This is the missing central compute for the `wiki` capability (system-map,
|
|
17
|
+
* graph, and design already have theirs) — the "narrateWiki" of the central-compute→push design.
|
|
18
|
+
*
|
|
19
|
+
* It is a *starting point* an agent (or the `second-brain` librarian) grows, never the whole
|
|
20
|
+
* knowledge base — everything here is derived from the code, nothing is fabricated. Returns leaf
|
|
21
|
+
* paths under `wiki/`; the caller prefixes `.baselane/` for the repo surface.
|
|
22
|
+
*/
|
|
23
|
+
export declare function buildWikiSeed(source: RepoFileSource, opts: WikiSeedOptions): Promise<FileMap>;
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
import { analyze, analyzeConventions, analyzeDesignTokens, buildImportGraph, narrateArchitecture, pickSamples, } from "@baselane/analyze";
|
|
2
|
+
const TOP_HUBS = 5;
|
|
3
|
+
/**
|
|
4
|
+
* A queryable, OKF-formatted seed for `.baselane/wiki/`, computed centrally from static analysis:
|
|
5
|
+
* an index, one architecture page grounded in the repo's real languages/commands/module hotspots,
|
|
6
|
+
* and a change log. This is the missing central compute for the `wiki` capability (system-map,
|
|
7
|
+
* graph, and design already have theirs) — the "narrateWiki" of the central-compute→push design.
|
|
8
|
+
*
|
|
9
|
+
* It is a *starting point* an agent (or the `second-brain` librarian) grows, never the whole
|
|
10
|
+
* knowledge base — everything here is derived from the code, nothing is fabricated. Returns leaf
|
|
11
|
+
* paths under `wiki/`; the caller prefixes `.baselane/` for the repo surface.
|
|
12
|
+
*/
|
|
13
|
+
export async function buildWikiSeed(source, opts) {
|
|
14
|
+
const [profile, graph, design] = await Promise.all([analyze(source), buildImportGraph(source), analyzeDesignTokens(source)]);
|
|
15
|
+
let narration = null;
|
|
16
|
+
if (opts.ai) {
|
|
17
|
+
const [conventions, samples] = await Promise.all([analyzeConventions(source), pickSamples(source)]);
|
|
18
|
+
narration = await narrateArchitecture({ profile, conventions, samples }, { apiKey: opts.ai.apiKey, fetchImpl: opts.ai.fetchImpl });
|
|
19
|
+
}
|
|
20
|
+
const files = {
|
|
21
|
+
"wiki/index.md": renderIndex(design.hasUiSurface),
|
|
22
|
+
"wiki/architecture.md": renderArchitecturePage(profile, graph, narration),
|
|
23
|
+
"wiki/log.md": renderLog(opts.date, design.hasUiSurface),
|
|
24
|
+
};
|
|
25
|
+
// OKF is one-concept-per-file: the design system gets its own page, only when there's a UI surface.
|
|
26
|
+
if (design.hasUiSurface)
|
|
27
|
+
files["wiki/design.md"] = renderDesignPage(design);
|
|
28
|
+
return files;
|
|
29
|
+
}
|
|
30
|
+
function renderIndex(hasDesign) {
|
|
31
|
+
const lines = [
|
|
32
|
+
"# Wiki index",
|
|
33
|
+
"",
|
|
34
|
+
"One line per page — scan this before opening any page. Add a line here whenever you create a page.",
|
|
35
|
+
"",
|
|
36
|
+
"- [Architecture overview](architecture.md) — languages, commands, and module hotspots (seeded from static analysis)",
|
|
37
|
+
];
|
|
38
|
+
if (hasDesign)
|
|
39
|
+
lines.push("- [Design](design.md) — UI frameworks and design tokens (colors, fonts, radii, spacing)");
|
|
40
|
+
lines.push("");
|
|
41
|
+
return lines.join("\n");
|
|
42
|
+
}
|
|
43
|
+
/** Modules ranked by in-degree (how many modules import them) — the architectural centers of gravity. */
|
|
44
|
+
function topHubs(graph) {
|
|
45
|
+
const moduleIds = new Set(graph.nodes.filter((n) => n.kind === "module").map((n) => n.id));
|
|
46
|
+
const inDegree = new Map();
|
|
47
|
+
for (const e of graph.edges) {
|
|
48
|
+
if (moduleIds.has(e.to))
|
|
49
|
+
inDegree.set(e.to, (inDegree.get(e.to) ?? 0) + 1);
|
|
50
|
+
}
|
|
51
|
+
return [...inDegree.entries()]
|
|
52
|
+
.map(([id, inDeg]) => ({ id, inDegree: inDeg }))
|
|
53
|
+
.sort((a, b) => b.inDegree - a.inDegree || a.id.localeCompare(b.id))
|
|
54
|
+
.slice(0, TOP_HUBS);
|
|
55
|
+
}
|
|
56
|
+
function renderArchitecturePage(profile, graph, narration) {
|
|
57
|
+
const frameworks = profile.frameworks.map((f) => (f.version ? `${f.name} ${f.version}` : f.name));
|
|
58
|
+
const hubs = topHubs(graph);
|
|
59
|
+
const lines = [
|
|
60
|
+
"---",
|
|
61
|
+
"type: How-it-works",
|
|
62
|
+
"title: Architecture overview",
|
|
63
|
+
"description: Seeded from static analysis — languages, commands, and module hotspots.",
|
|
64
|
+
"---",
|
|
65
|
+
"",
|
|
66
|
+
"This page was seeded from static analysis when the second brain was set up. Treat it as a",
|
|
67
|
+
"starting point: correct it and split out new pages as you learn how this project actually works.",
|
|
68
|
+
"",
|
|
69
|
+
];
|
|
70
|
+
if (narration) {
|
|
71
|
+
lines.push("## Overview", "", narration.overview, "");
|
|
72
|
+
if (narration.hypothesizedRules.length) {
|
|
73
|
+
lines.push("## Hypothesized conventions", "", "AI-suggested from the samples — verify before relying on them:", "");
|
|
74
|
+
for (const r of narration.hypothesizedRules)
|
|
75
|
+
lines.push(`- ${r}`);
|
|
76
|
+
lines.push("");
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
lines.push("## Stack", "", `- Languages: ${profile.languages.join(", ") || "(none detected)"}`, `- Package manager: ${profile.packageManager ?? "(none detected)"}`, `- Frameworks: ${frameworks.join(", ") || "(none detected)"}`, `- Layout: ${profile.layout}`, "", "## Commands", "", `- Build: ${profile.commands.build ?? "(not detected)"}`, `- Test: ${profile.commands.test ?? "(not detected)"}`, `- Lint: ${profile.commands.lint ?? "(not detected)"}`, "", "## Module hotspots", "");
|
|
80
|
+
if (hubs.length === 0) {
|
|
81
|
+
lines.push("No internal import edges detected — this repo has no resolvable module graph yet.");
|
|
82
|
+
}
|
|
83
|
+
else {
|
|
84
|
+
lines.push("The most-imported modules (by in-degree) — likely the architectural centers of gravity:");
|
|
85
|
+
lines.push("");
|
|
86
|
+
for (const h of hubs)
|
|
87
|
+
lines.push(`- \`${h.id}\` — imported by ${h.inDegree} module${h.inDegree === 1 ? "" : "s"}`);
|
|
88
|
+
}
|
|
89
|
+
lines.push("");
|
|
90
|
+
return lines.join("\n");
|
|
91
|
+
}
|
|
92
|
+
const MAX_LISTED = 8;
|
|
93
|
+
function renderDesignPage(design) {
|
|
94
|
+
const list = (label, items) => items.length ? `- ${label}: ${items.slice(0, MAX_LISTED).join(", ")}${items.length > MAX_LISTED ? ", …" : ""}` : `- ${label}: (none detected)`;
|
|
95
|
+
return [
|
|
96
|
+
"---",
|
|
97
|
+
"type: How-it-works",
|
|
98
|
+
"title: Design",
|
|
99
|
+
"description: Seeded from static analysis — UI frameworks and design tokens.",
|
|
100
|
+
"---",
|
|
101
|
+
"",
|
|
102
|
+
"This project has a UI surface. Seeded design facts below — correct and extend them as the design",
|
|
103
|
+
"system evolves; pair with the repo's DESIGN.md if the design capability is also enabled.",
|
|
104
|
+
"",
|
|
105
|
+
"## UI frameworks",
|
|
106
|
+
"",
|
|
107
|
+
design.frameworks.length ? design.frameworks.map((f) => `- ${f}`).join("\n") : "(none detected)",
|
|
108
|
+
"",
|
|
109
|
+
"## Tokens",
|
|
110
|
+
"",
|
|
111
|
+
list("Colors", design.colors.map((c) => `${c.name} ${c.value}`)),
|
|
112
|
+
list("Fonts", design.fonts),
|
|
113
|
+
list("Radii", design.radii),
|
|
114
|
+
list("Spacing", design.spacing),
|
|
115
|
+
`- Custom properties: ${design.customPropertyCount}`,
|
|
116
|
+
"",
|
|
117
|
+
].join("\n");
|
|
118
|
+
}
|
|
119
|
+
function renderLog(date, hasDesign) {
|
|
120
|
+
const subject = hasDesign ? "architecture.md, design.md" : "architecture.md";
|
|
121
|
+
const detail = hasDesign
|
|
122
|
+
? "Seeded the wiki from static analysis (languages, commands, module hotspots, design tokens)."
|
|
123
|
+
: "Seeded the wiki from static analysis (languages, commands, module hotspots).";
|
|
124
|
+
return [
|
|
125
|
+
"# Change log",
|
|
126
|
+
"",
|
|
127
|
+
"Append-only. One entry per change; never rewrite a line once added.",
|
|
128
|
+
"",
|
|
129
|
+
`## [${date}] ingest | ${subject}`,
|
|
130
|
+
detail,
|
|
131
|
+
"",
|
|
132
|
+
].join("\n");
|
|
133
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { SkillBlock } from "./types.ts";
|
|
2
|
+
export interface SeedSkill {
|
|
3
|
+
block: SkillBlock;
|
|
4
|
+
licenseText: string;
|
|
5
|
+
source: string;
|
|
6
|
+
url: string;
|
|
7
|
+
sha: string;
|
|
8
|
+
}
|
|
9
|
+
/** Source tag for baselane-authored first-party skills (#19). Distinguishes them from imported
|
|
10
|
+
* (third-party) seed skills and is the basis of the catalog's first-party/third-party filter.
|
|
11
|
+
* First-party skills carry no external licence notice and no `attribution`. */
|
|
12
|
+
export declare const FIRST_PARTY_SOURCE = "baselane";
|
|
13
|
+
/** Absolute path of the committed seed-skills directory shipped inside this package. */
|
|
14
|
+
export declare function seedSkillsDir(): string;
|
|
15
|
+
/** Reads and VALIDATES every committed seed skill (validateSkill is the sole authority). Throws if
|
|
16
|
+
* any seed no longer conforms — the seed must never ship an invalid skill. First-party skills are
|
|
17
|
+
* appended after the fetched (third-party) ones, so callers keying off index order are unaffected. */
|
|
18
|
+
export declare function loadSeedSkills(): Promise<SeedSkill[]>;
|