@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,68 @@
|
|
|
1
|
+
# AGENTS.md
|
|
2
|
+
|
|
3
|
+
<!-- generated from workflow-pack frontend-taste v1.2.0 -->
|
|
4
|
+
|
|
5
|
+
## Frontend taste discipline
|
|
6
|
+
|
|
7
|
+
Adopt these as fixed defaults, not options to tune per project — their whole value is removing the per-page style debate, the way a formatter removes the whitespace debate. Brand color and corner radius are the only inputs; everything below is settled.
|
|
8
|
+
|
|
9
|
+
### The three locks
|
|
10
|
+
|
|
11
|
+
Decide these once per page and hold them for the whole page — mixing them is the single biggest tell of unreviewed AI output:
|
|
12
|
+
|
|
13
|
+
1. **One accent color.** Pick a single accent for interactive/emphasis elements. Everything else is neutrals.
|
|
14
|
+
2. **One corner-radius system.** Pick a radius scale (e.g. sm/md/lg mapped to fixed px values) and use it everywhere — no ad-hoc `rounded-[7px]` next to `rounded-2xl`.
|
|
15
|
+
3. **One theme mode, decided at the page level.** Don't let individual components guess light/dark independently.
|
|
16
|
+
|
|
17
|
+
### Hero discipline
|
|
18
|
+
|
|
19
|
+
- Headline is 2 lines or fewer. If it doesn't fit, the message is too long, not the font too small.
|
|
20
|
+
- Subtext is roughly 20 words or fewer — one sentence, not a paragraph.
|
|
21
|
+
- Nav height is capped (~64px); it should never compete with the hero for vertical space.
|
|
22
|
+
|
|
23
|
+
### Anti-slop bans
|
|
24
|
+
|
|
25
|
+
These patterns are default outputs of ungrounded AI generation. Treat every one as a defect, not a style choice:
|
|
26
|
+
|
|
27
|
+
- No three-equal-width feature card rows. Use asymmetric layouts — different widths, different emphasis — so the page doesn't read as a template.
|
|
28
|
+
- No AI-purple/mesh-blob gradients unless the brand explicitly calls for them.
|
|
29
|
+
- No section-number eyebrows like "001 · Features" — they signal filler, not information.
|
|
30
|
+
- No `window.addEventListener('scroll')` for reveal/parallax effects — use `IntersectionObserver`, it's cheaper and doesn't jank.
|
|
31
|
+
- No emoji as section markers or bullet icons.
|
|
32
|
+
- Neutrals get a deliberate hue bias (warm or cool grey); never pure mid-grey (`#808080`-style), which reads as unstyled.
|
|
33
|
+
|
|
34
|
+
### Type
|
|
35
|
+
|
|
36
|
+
- Pair a display face and a body face deliberately — don't ship the framework default pairing unreviewed.
|
|
37
|
+
- Set a type scale (a small fixed set of sizes) and hold it; don't invent one-off sizes per component.
|
|
38
|
+
|
|
39
|
+
### Both themes
|
|
40
|
+
|
|
41
|
+
Design light and dark as two considered modes, not one inverted into the other — check contrast and accent legibility in both.
|
|
42
|
+
|
|
43
|
+
## Harness capabilities
|
|
44
|
+
|
|
45
|
+
- design · repo · author — provisioned
|
|
46
|
+
|
|
47
|
+
### Design
|
|
48
|
+
|
|
49
|
+
Follow `DESIGN.md` for all UI and visual work — it is the source of truth for color, type, spacing, and component conventions in this project.
|
|
50
|
+
|
|
51
|
+
## Workflow pack: Frontend taste
|
|
52
|
+
|
|
53
|
+
Ends the per-component style debate with fixed, non-configurable defaults: three hard locks per page, disciplined heroes, and a banned-AI-slop checklist enforced before merge.
|
|
54
|
+
|
|
55
|
+
### Roles
|
|
56
|
+
|
|
57
|
+
- **taste-reviewer** — Reviews a built UI against the three locks and anti-slop bans, reporting concrete violations with file:line. Use after building or changing any landing/marketing UI, before calling it done.
|
|
58
|
+
|
|
59
|
+
### Commands
|
|
60
|
+
|
|
61
|
+
- **/design-review** `[optional: path or component name]` — Run the taste-reviewer over the current changes and summarize violations and fixes.
|
|
62
|
+
- How it runs: Invoke the taste-reviewer subagent over the current diff (or $ARGUMENTS if given). Present its findings grouped by rule (locks, hero discipline, anti-slop bans), each with file:line and fix. If it finds nothing, report a clean pass.
|
|
63
|
+
|
|
64
|
+
### Guardrails
|
|
65
|
+
|
|
66
|
+
- Nudge the three locks whenever UI files are touched.
|
|
67
|
+
|
|
68
|
+
Tool-specific implementations live alongside this file (see `CLAUDE.md` for the Claude Code implementation). Tools without a native subagent/command surface should treat the sections above as operating instructions.
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
## Visual theme & atmosphere
|
|
2
|
+
|
|
3
|
+
Mood: distinctive, non-generic, considered. The brand color (#4F46E5) is the single accent — everything else in the interface is neutral, so the accent stays legible and the page never competes with itself.
|
|
4
|
+
|
|
5
|
+
Design light and dark as two considered modes, not one inverted into the other.
|
|
6
|
+
|
|
7
|
+
## Color palette & roles
|
|
8
|
+
|
|
9
|
+
| Token | Value | Role |
|
|
10
|
+
| --- | --- | --- |
|
|
11
|
+
| `--color-brand` | #4F46E5 | Accent — interactive elements, emphasis, focus rings |
|
|
12
|
+
| `--color-neutral-50` | #F9F9FA | Background / surface |
|
|
13
|
+
| `--color-neutral-100` | #EEEEF1 | Background / surface |
|
|
14
|
+
| `--color-neutral-300` | #CDCDD6 | Border / muted |
|
|
15
|
+
| `--color-neutral-500` | #8A899F | Border / muted |
|
|
16
|
+
| `--color-neutral-700` | #4A495A | Text |
|
|
17
|
+
| `--color-neutral-900` | #212027 | Text |
|
|
18
|
+
| `--color-ok` | #16A34A | Success / positive state |
|
|
19
|
+
| `--color-warn` | #D97706 | Warning / caution state |
|
|
20
|
+
|
|
21
|
+
Exactly one accent color exists in this palette. Do not introduce a second accent for "variety" — differentiate with weight, size, and spacing instead.
|
|
22
|
+
|
|
23
|
+
## Typography
|
|
24
|
+
|
|
25
|
+
- Display face: **Inter** — headings, hero copy, anything meant to lead the eye.
|
|
26
|
+
- Body face: **Inter** — paragraph text, labels, UI chrome.
|
|
27
|
+
- Type scale (px): 12 / 14 / 16 / 20 / 24 / 32 / 48. Pick from this set; don't invent one-off sizes.
|
|
28
|
+
- Line height: 1.2 for display sizes (20px+), 1.5 for body sizes (12-16px).
|
|
29
|
+
|
|
30
|
+
## Component stylings
|
|
31
|
+
|
|
32
|
+
- Radius scale (px): sm 4 · md 8 · lg 16 · full 9999. One scale, used everywhere — no ad-hoc radii next to the standard ones.
|
|
33
|
+
- Buttons: `md` radius, brand-colored fill for primary, neutral border for secondary, no gradient fills.
|
|
34
|
+
- Inputs: `sm` radius, neutral-300 border at rest, brand-colored border + ring on focus.
|
|
35
|
+
- Cards: `lg` radius, neutral-100 background, neutral-300 border (prefer a border over a shadow in light mode).
|
|
36
|
+
|
|
37
|
+
## Layout & spacing
|
|
38
|
+
|
|
39
|
+
- Spacing scale (px, 4px base grid): 4 / 8 / 12 / 16 / 24 / 32 / 48 / 64.
|
|
40
|
+
- Container max-width: 1200px, centered, with 24px gutters on mobile.
|
|
41
|
+
- Prefer asymmetric layouts — mixed widths, deliberate emphasis — over evenly divided grids; a row of three equal-width cards is the single biggest tell of an unreviewed template.
|
|
42
|
+
|
|
43
|
+
## Depth & elevation
|
|
44
|
+
|
|
45
|
+
- Shadow scale: `sm` for hover states, `md` for popovers/dropdowns, `lg` for modals only.
|
|
46
|
+
- Elevate sparingly — most surfaces should read as flat with a border, not lifted with a shadow.
|
|
47
|
+
- z-index layers: base 0, sticky 10, dropdown 20, modal 30, toast 40. Don't invent values outside this set.
|
|
48
|
+
|
|
49
|
+
## Do's and don'ts
|
|
50
|
+
|
|
51
|
+
**Do**
|
|
52
|
+
- Hold one accent color for the whole page.
|
|
53
|
+
- Hold one radius system for the whole page.
|
|
54
|
+
- Give neutrals a deliberate hue bias.
|
|
55
|
+
- Decide light/dark at the page level, not per component.
|
|
56
|
+
|
|
57
|
+
**Don't**
|
|
58
|
+
- No second accent color, however small the use.
|
|
59
|
+
- No three-equal-width card rows — it's the default output of ungrounded generation.
|
|
60
|
+
- No AI-purple/mesh-blob gradients unless the brand explicitly calls for them.
|
|
61
|
+
- No pure mid-grey (`#808080`-style) neutrals — always hue-biased.
|
|
62
|
+
- No section-number eyebrows ("001 · Features") — they signal filler, not information.
|
|
63
|
+
|
|
64
|
+
## Responsive behavior
|
|
65
|
+
|
|
66
|
+
- Breakpoints (px): 640 / 768 / 1024 / 1280. Design mobile-first; add complexity as width increases.
|
|
67
|
+
- Minimum touch target: 44x44px on any interactive element below the 768px breakpoint.
|
|
68
|
+
- Nav collapses to a single control below 768px; it never competes with the hero for vertical space.
|
|
69
|
+
|
|
70
|
+
## Agent prompt guide
|
|
71
|
+
|
|
72
|
+
Any AI tool generating or modifying UI in this repository must follow this file as the source of truth for color, type, spacing, radius, and elevation. When a decision isn't covered here, match the closest existing pattern rather than inventing a new one — and if a new durable decision gets made, update this file so the next session inherits it too.
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://baselane.dev/schema/workflow-pack-v1.json",
|
|
3
|
+
"id": "go-rules",
|
|
4
|
+
"version": "1.3.0",
|
|
5
|
+
"title": "Go rules",
|
|
6
|
+
"summary": "Go conventions a linter can't check — interfaces accepted not returned, errors wrapped with context, functional options, owned shared state — with a reviewer and a gofmt guard; formatting, vet, and races belong in CI.",
|
|
7
|
+
"scope": "repo",
|
|
8
|
+
"attribution": { "source": "affaan-m/ECC", "url": "https://github.com/affaan-m/ECC", "license": "MIT" },
|
|
9
|
+
"context": {
|
|
10
|
+
"markdown": "## Go conventions (beyond what the linter enforces)\n\n`gofmt`, `goimports`, and `go vet` already catch formatting and the obvious mistakes — this pack is the judgment they can't encode. Keep the mechanical checks in CI (`gofmt -l .`, `go vet ./...`, `go test -race ./...`, `gosec ./...`); the reviewer covers the rest.\n\n### API shape\n\n- Accept interfaces, return structs. Define an interface where it is consumed (1-3 methods), never next to the implementation.\n- Use functional options (`type Option func(*Server)`) for constructors with many optional parameters, not a giant config struct or a long positional list.\n- Inject dependencies through constructors (`NewUserService(repo, logger)`), never package-level globals.\n\n### Errors\n\n- Wrap every propagated error with context and `%w` (`fmt.Errorf(\"create user: %w\", err)`). A bare returned `err` with no origin is a defect, not a shortcut.\n\n### Concurrency\n\n- Thread `context.Context` through call chains for cancellation and timeout (`ctx, cancel := context.WithTimeout(ctx, 5*time.Second)`; `defer cancel()`).\n- Every piece of shared state has an explicit owner — a mutex or a channel — or a comment proving why it is safe. \"Probably fine\" is a race.\n\n### Boundaries\n\n- Validate external input at the boundary before it reaches business logic; fail fast with a clear message.\n- Read required secrets from the environment and `log.Fatal` on an empty value at startup — never a silent zero value.\n\n### Flag in review (a linter won't)\n\n- A propagated error with no `%w` and no context string.\n- An interface defined beside its implementation instead of its consumer.\n- Shared state touched by multiple goroutines with no mutex/channel and no safety comment.\n- A required env var read without an empty-check before use.\n"
|
|
11
|
+
},
|
|
12
|
+
"agents": [
|
|
13
|
+
{
|
|
14
|
+
"name": "go-reviewer",
|
|
15
|
+
"description": "Reviews changed Go against the Go standards: interfaces, wrapped errors, context threading, race safety, and env-var secrets. Reports file:line + severity. Use after any Go change.",
|
|
16
|
+
"tools": ["Read", "Grep", "Glob", "Bash"],
|
|
17
|
+
"model": "sonnet",
|
|
18
|
+
"prompt": "You are a Go reviewer. Read the changed Go files and check them against the conventions in context: small consumer-defined interfaces, errors wrapped with `%w` and context, functional options, dependency injection through constructors, context threading, explicitly owned shared state, boundary input validation, and env-var secrets that fail fast. Formatting, `go vet`, and races are the linter/CI's job — don't re-litigate them. Cite the exact file:line for each finding, name the concrete failure mode, and give severity. If the change is sound, say so plainly rather than inventing findings."
|
|
19
|
+
}
|
|
20
|
+
],
|
|
21
|
+
"commands": [
|
|
22
|
+
{
|
|
23
|
+
"name": "go-review",
|
|
24
|
+
"description": "Run the Go reviewer over the current change against this pack's Go standards.",
|
|
25
|
+
"argument_hint": "[base ref]",
|
|
26
|
+
"prompt": "Invoke the go-reviewer subagent on the changed Go files (the diff since $ARGUMENTS, or the working tree if no ref is given). It checks this pack's conventions — consumer-defined interfaces, errors wrapped with %w and context, functional options, context threading, explicitly owned shared state, boundary validation, and fail-fast env-var secrets — and reports file:line + severity. Formatting, go vet, and races are CI's job; don't re-litigate them. Fix any Critical or Important findings before merging."
|
|
27
|
+
}
|
|
28
|
+
],
|
|
29
|
+
"hooks": [
|
|
30
|
+
{
|
|
31
|
+
"event": "PostToolUse",
|
|
32
|
+
"matcher": "Edit|Write",
|
|
33
|
+
"description": "After an edit, check Go formatting with gofmt when it is installed.",
|
|
34
|
+
"action": "run-command",
|
|
35
|
+
"command": "if command -v gofmt >/dev/null 2>&1; then gofmt -l .; else echo \"gofmt not found — install the Go toolchain to check formatting (go-rules)\"; fi"
|
|
36
|
+
}
|
|
37
|
+
]
|
|
38
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: go-reviewer
|
|
3
|
+
description: Reviews changed Go against the Go standards: interfaces, wrapped errors, context threading, race safety, and env-var secrets. Reports file:line + severity. Use after any Go change.
|
|
4
|
+
tools: Read, Grep, Glob, Bash
|
|
5
|
+
model: sonnet
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
You are a Go reviewer. Read the changed Go files and check them against the conventions in context: small consumer-defined interfaces, errors wrapped with `%w` and context, functional options, dependency injection through constructors, context threading, explicitly owned shared state, boundary input validation, and env-var secrets that fail fast. Formatting, `go vet`, and races are the linter/CI's job — don't re-litigate them. Cite the exact file:line for each finding, name the concrete failure mode, and give severity. If the change is sound, say so plainly rather than inventing findings.
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Run the Go reviewer over the current change against this pack's Go standards.
|
|
3
|
+
argument-hint: [base ref]
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
Invoke the go-reviewer subagent on the changed Go files (the diff since $ARGUMENTS, or the working tree if no ref is given). It checks this pack's conventions — consumer-defined interfaces, errors wrapped with %w and context, functional options, context threading, explicitly owned shared state, boundary validation, and fail-fast env-var secrets — and reports file:line + severity. Formatting, go vet, and races are CI's job; don't re-litigate them. Fix any Critical or Important findings before merging.
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
{
|
|
2
|
+
"hooks": {
|
|
3
|
+
"PostToolUse": [
|
|
4
|
+
{
|
|
5
|
+
"matcher": "Edit|Write",
|
|
6
|
+
"hooks": [
|
|
7
|
+
{
|
|
8
|
+
"type": "command",
|
|
9
|
+
"command": "if command -v gofmt >/dev/null 2>&1; then gofmt -l .; else echo \"gofmt not found — install the Go toolchain to check formatting (go-rules)\"; fi"
|
|
10
|
+
}
|
|
11
|
+
]
|
|
12
|
+
}
|
|
13
|
+
]
|
|
14
|
+
}
|
|
15
|
+
}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
# Copilot instructions
|
|
2
|
+
|
|
3
|
+
## Go conventions (beyond what the linter enforces)
|
|
4
|
+
|
|
5
|
+
`gofmt`, `goimports`, and `go vet` already catch formatting and the obvious mistakes — this pack is the judgment they can't encode. Keep the mechanical checks in CI (`gofmt -l .`, `go vet ./...`, `go test -race ./...`, `gosec ./...`); the reviewer covers the rest.
|
|
6
|
+
|
|
7
|
+
### API shape
|
|
8
|
+
|
|
9
|
+
- Accept interfaces, return structs. Define an interface where it is consumed (1-3 methods), never next to the implementation.
|
|
10
|
+
- Use functional options (`type Option func(*Server)`) for constructors with many optional parameters, not a giant config struct or a long positional list.
|
|
11
|
+
- Inject dependencies through constructors (`NewUserService(repo, logger)`), never package-level globals.
|
|
12
|
+
|
|
13
|
+
### Errors
|
|
14
|
+
|
|
15
|
+
- Wrap every propagated error with context and `%w` (`fmt.Errorf("create user: %w", err)`). A bare returned `err` with no origin is a defect, not a shortcut.
|
|
16
|
+
|
|
17
|
+
### Concurrency
|
|
18
|
+
|
|
19
|
+
- Thread `context.Context` through call chains for cancellation and timeout (`ctx, cancel := context.WithTimeout(ctx, 5*time.Second)`; `defer cancel()`).
|
|
20
|
+
- Every piece of shared state has an explicit owner — a mutex or a channel — or a comment proving why it is safe. "Probably fine" is a race.
|
|
21
|
+
|
|
22
|
+
### Boundaries
|
|
23
|
+
|
|
24
|
+
- Validate external input at the boundary before it reaches business logic; fail fast with a clear message.
|
|
25
|
+
- Read required secrets from the environment and `log.Fatal` on an empty value at startup — never a silent zero value.
|
|
26
|
+
|
|
27
|
+
### Flag in review (a linter won't)
|
|
28
|
+
|
|
29
|
+
- A propagated error with no `%w` and no context string.
|
|
30
|
+
- An interface defined beside its implementation instead of its consumer.
|
|
31
|
+
- Shared state touched by multiple goroutines with no mutex/channel and no safety comment.
|
|
32
|
+
- A required env var read without an empty-check before use.
|
|
33
|
+
|
|
34
|
+
## Workflow pack: Go rules
|
|
35
|
+
|
|
36
|
+
Go conventions a linter can't check — interfaces accepted not returned, errors wrapped with context, functional options, owned shared state — with a reviewer and a gofmt guard; formatting, vet, and races belong in CI.
|
|
37
|
+
|
|
38
|
+
When acting as the go-reviewer role: You are a Go reviewer. Read the changed Go files and check them against the conventions in context: small consumer-defined interfaces, errors wrapped with `%w` and context, functional options, dependency injection through constructors, context threading, explicitly owned shared state, boundary input validation, and env-var secrets that fail fast. Formatting, `go vet`, and races are the linter/CI's job — don't re-litigate them. Cite the exact file:line for each finding, name the concrete failure mode, and give severity. If the change is sound, say so plainly rather than inventing findings.
|
|
39
|
+
|
|
40
|
+
Workflow steps:
|
|
41
|
+
|
|
42
|
+
- go-review: Invoke the go-reviewer subagent on the changed Go files (the diff since $ARGUMENTS, or the working tree if no ref is given). It checks this pack's conventions — consumer-defined interfaces, errors wrapped with %w and context, functional options, context threading, explicitly owned shared state, boundary validation, and fail-fast env-var secrets — and reports file:line + severity. Formatting, go vet, and races are CI's job; don't re-litigate them. Fix any Critical or Important findings before merging.
|
|
43
|
+
|
|
44
|
+
- After an edit, check Go formatting with gofmt when it is installed.
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
# AGENTS.md
|
|
2
|
+
|
|
3
|
+
<!-- generated from workflow-pack go-rules v1.3.0 -->
|
|
4
|
+
<!-- adapted from affaan-m/ECC (MIT) — https://github.com/affaan-m/ECC -->
|
|
5
|
+
|
|
6
|
+
## Go conventions (beyond what the linter enforces)
|
|
7
|
+
|
|
8
|
+
`gofmt`, `goimports`, and `go vet` already catch formatting and the obvious mistakes — this pack is the judgment they can't encode. Keep the mechanical checks in CI (`gofmt -l .`, `go vet ./...`, `go test -race ./...`, `gosec ./...`); the reviewer covers the rest.
|
|
9
|
+
|
|
10
|
+
### API shape
|
|
11
|
+
|
|
12
|
+
- Accept interfaces, return structs. Define an interface where it is consumed (1-3 methods), never next to the implementation.
|
|
13
|
+
- Use functional options (`type Option func(*Server)`) for constructors with many optional parameters, not a giant config struct or a long positional list.
|
|
14
|
+
- Inject dependencies through constructors (`NewUserService(repo, logger)`), never package-level globals.
|
|
15
|
+
|
|
16
|
+
### Errors
|
|
17
|
+
|
|
18
|
+
- Wrap every propagated error with context and `%w` (`fmt.Errorf("create user: %w", err)`). A bare returned `err` with no origin is a defect, not a shortcut.
|
|
19
|
+
|
|
20
|
+
### Concurrency
|
|
21
|
+
|
|
22
|
+
- Thread `context.Context` through call chains for cancellation and timeout (`ctx, cancel := context.WithTimeout(ctx, 5*time.Second)`; `defer cancel()`).
|
|
23
|
+
- Every piece of shared state has an explicit owner — a mutex or a channel — or a comment proving why it is safe. "Probably fine" is a race.
|
|
24
|
+
|
|
25
|
+
### Boundaries
|
|
26
|
+
|
|
27
|
+
- Validate external input at the boundary before it reaches business logic; fail fast with a clear message.
|
|
28
|
+
- Read required secrets from the environment and `log.Fatal` on an empty value at startup — never a silent zero value.
|
|
29
|
+
|
|
30
|
+
### Flag in review (a linter won't)
|
|
31
|
+
|
|
32
|
+
- A propagated error with no `%w` and no context string.
|
|
33
|
+
- An interface defined beside its implementation instead of its consumer.
|
|
34
|
+
- Shared state touched by multiple goroutines with no mutex/channel and no safety comment.
|
|
35
|
+
- A required env var read without an empty-check before use.
|
|
36
|
+
|
|
37
|
+
## Workflow pack: Go rules
|
|
38
|
+
|
|
39
|
+
Go conventions a linter can't check — interfaces accepted not returned, errors wrapped with context, functional options, owned shared state — with a reviewer and a gofmt guard; formatting, vet, and races belong in CI.
|
|
40
|
+
|
|
41
|
+
### Roles
|
|
42
|
+
|
|
43
|
+
- **go-reviewer** — Reviews changed Go against the Go standards: interfaces, wrapped errors, context threading, race safety, and env-var secrets. Reports file:line + severity. Use after any Go change.
|
|
44
|
+
|
|
45
|
+
### Commands
|
|
46
|
+
|
|
47
|
+
- **/go-review** `[base ref]` — Run the Go reviewer over the current change against this pack's Go standards.
|
|
48
|
+
- How it runs: Invoke the go-reviewer subagent on the changed Go files (the diff since $ARGUMENTS, or the working tree if no ref is given). It checks this pack's conventions — consumer-defined interfaces, errors wrapped with %w and context, functional options, context threading, explicitly owned shared state, boundary validation, and fail-fast env-var secrets — and reports file:line + severity. Formatting, go vet, and races are CI's job; don't re-litigate them. Fix any Critical or Important findings before merging.
|
|
49
|
+
|
|
50
|
+
### Guardrails
|
|
51
|
+
|
|
52
|
+
- After an edit, check Go formatting with gofmt when it is installed.
|
|
53
|
+
|
|
54
|
+
Tool-specific implementations live alongside this file (see `CLAUDE.md` for the Claude Code implementation). Tools without a native subagent/command surface should treat the sections above as operating instructions.
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://baselane.dev/schema/workflow-pack-v1.json",
|
|
3
|
+
"id": "python-rules",
|
|
4
|
+
"version": "1.3.0",
|
|
5
|
+
"title": "Python rules",
|
|
6
|
+
"summary": "Python conventions a linter can't check — frozen dataclasses for value objects, Protocols for structural typing, raise ... from, os.environ[] over silent .get() fallbacks — with a reviewer and a ruff guard; style and coverage belong in CI.",
|
|
7
|
+
"scope": "repo",
|
|
8
|
+
"attribution": { "source": "affaan-m/ECC", "url": "https://github.com/affaan-m/ECC", "license": "MIT" },
|
|
9
|
+
"context": {
|
|
10
|
+
"markdown": "## Python conventions (beyond what the linter enforces)\n\n`ruff` and `black` already enforce PEP 8, import order, bare `except`, and mutable default arguments — this pack is the judgment they can't encode. Keep the mechanical checks in CI (`ruff check .`, `bandit -r src/`, `pytest --cov`); the reviewer covers the rest.\n\n### Data shapes\n\n- Model value objects as `@dataclass(frozen=True)` or `NamedTuple`, not a mutable class with public attributes.\n- Use a `Protocol` when a caller needs only an interface, not a concrete base class; use plain `@dataclass` for request/DTO shapes at API and service boundaries.\n- Acquire every resource (files, locks, connections) through a context manager (`with`); use generators for lazy, memory-efficient iteration.\n\n### Types\n\n- Annotate every function signature, including internal helpers — not just the public API a type checker would force.\n\n### Errors\n\n- Catch specific exception types and preserve the chain when wrapping (`raise NewError(...) from err`); never swallow into a bare `except` or drop the cause.\n\n### Boundaries\n\n- Validate external input at the boundary before it reaches business logic; fail fast with a clear message (Pydantic or an explicit check).\n- Read required secrets with `os.environ[\"KEY\"]` so a missing value raises at startup — never `os.environ.get(...)` with a fallback that lets a misconfigured app boot.\n\n### Flag in review (a linter won't)\n\n- A mutable class used where a frozen value object belongs.\n- A concrete base class used where a `Protocol` would decouple the caller.\n- A wrapped exception that drops `from err` and loses the cause.\n- A required secret read via `.get()` with a silent fallback default.\n"
|
|
11
|
+
},
|
|
12
|
+
"agents": [
|
|
13
|
+
{
|
|
14
|
+
"name": "python-reviewer",
|
|
15
|
+
"description": "Reviews changed Python against the Python standards: type hints, immutability, specific exceptions, boundary validation, and env-var secrets. Reports file:line + severity. Use after any Python change.",
|
|
16
|
+
"tools": ["Read", "Grep", "Glob", "Bash"],
|
|
17
|
+
"model": "sonnet",
|
|
18
|
+
"prompt": "You are a Python reviewer. Read the changed Python files and check them against the conventions in context: frozen dataclasses/NamedTuples for value objects, Protocols for structural typing, context managers for resources, full signature annotations, specific-exception handling with `raise ... from`, boundary input validation, and `os.environ[...]` secrets that fail fast. PEP 8, import order, and coverage are the linter/CI's job — don't re-litigate them. Cite the exact file:line for each finding, name the concrete failure mode, and give severity. If the change is sound, say so plainly rather than inventing findings."
|
|
19
|
+
}
|
|
20
|
+
],
|
|
21
|
+
"commands": [
|
|
22
|
+
{
|
|
23
|
+
"name": "python-review",
|
|
24
|
+
"description": "Run the Python reviewer over the current change against this pack's Python standards.",
|
|
25
|
+
"argument_hint": "[base ref]",
|
|
26
|
+
"prompt": "Invoke the python-reviewer subagent on the changed Python files (the diff since $ARGUMENTS, or the working tree if no ref is given). It checks this pack's conventions — frozen dataclasses for value objects, Protocols for structural typing, `raise ... from`, and os.environ[] over silent .get() fallbacks — and reports file:line + severity. Style and coverage are CI's job; don't re-litigate them. Fix any Critical or Important findings before merging."
|
|
27
|
+
}
|
|
28
|
+
],
|
|
29
|
+
"hooks": [
|
|
30
|
+
{
|
|
31
|
+
"event": "PostToolUse",
|
|
32
|
+
"matcher": "Edit|Write",
|
|
33
|
+
"description": "After an edit, lint with ruff when it is installed.",
|
|
34
|
+
"action": "run-command",
|
|
35
|
+
"command": "if command -v ruff >/dev/null 2>&1; then ruff check .; else echo \"ruff not found — pip install ruff to lint (python-rules)\"; fi"
|
|
36
|
+
}
|
|
37
|
+
]
|
|
38
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: python-reviewer
|
|
3
|
+
description: Reviews changed Python against the Python standards: type hints, immutability, specific exceptions, boundary validation, and env-var secrets. Reports file:line + severity. Use after any Python change.
|
|
4
|
+
tools: Read, Grep, Glob, Bash
|
|
5
|
+
model: sonnet
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
You are a Python reviewer. Read the changed Python files and check them against the conventions in context: frozen dataclasses/NamedTuples for value objects, Protocols for structural typing, context managers for resources, full signature annotations, specific-exception handling with `raise ... from`, boundary input validation, and `os.environ[...]` secrets that fail fast. PEP 8, import order, and coverage are the linter/CI's job — don't re-litigate them. Cite the exact file:line for each finding, name the concrete failure mode, and give severity. If the change is sound, say so plainly rather than inventing findings.
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Run the Python reviewer over the current change against this pack's Python standards.
|
|
3
|
+
argument-hint: [base ref]
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
Invoke the python-reviewer subagent on the changed Python files (the diff since $ARGUMENTS, or the working tree if no ref is given). It checks this pack's conventions — frozen dataclasses for value objects, Protocols for structural typing, `raise ... from`, and os.environ[] over silent .get() fallbacks — and reports file:line + severity. Style and coverage are CI's job; don't re-litigate them. Fix any Critical or Important findings before merging.
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
{
|
|
2
|
+
"hooks": {
|
|
3
|
+
"PostToolUse": [
|
|
4
|
+
{
|
|
5
|
+
"matcher": "Edit|Write",
|
|
6
|
+
"hooks": [
|
|
7
|
+
{
|
|
8
|
+
"type": "command",
|
|
9
|
+
"command": "if command -v ruff >/dev/null 2>&1; then ruff check .; else echo \"ruff not found — pip install ruff to lint (python-rules)\"; fi"
|
|
10
|
+
}
|
|
11
|
+
]
|
|
12
|
+
}
|
|
13
|
+
]
|
|
14
|
+
}
|
|
15
|
+
}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
# Copilot instructions
|
|
2
|
+
|
|
3
|
+
## Python conventions (beyond what the linter enforces)
|
|
4
|
+
|
|
5
|
+
`ruff` and `black` already enforce PEP 8, import order, bare `except`, and mutable default arguments — this pack is the judgment they can't encode. Keep the mechanical checks in CI (`ruff check .`, `bandit -r src/`, `pytest --cov`); the reviewer covers the rest.
|
|
6
|
+
|
|
7
|
+
### Data shapes
|
|
8
|
+
|
|
9
|
+
- Model value objects as `@dataclass(frozen=True)` or `NamedTuple`, not a mutable class with public attributes.
|
|
10
|
+
- Use a `Protocol` when a caller needs only an interface, not a concrete base class; use plain `@dataclass` for request/DTO shapes at API and service boundaries.
|
|
11
|
+
- Acquire every resource (files, locks, connections) through a context manager (`with`); use generators for lazy, memory-efficient iteration.
|
|
12
|
+
|
|
13
|
+
### Types
|
|
14
|
+
|
|
15
|
+
- Annotate every function signature, including internal helpers — not just the public API a type checker would force.
|
|
16
|
+
|
|
17
|
+
### Errors
|
|
18
|
+
|
|
19
|
+
- Catch specific exception types and preserve the chain when wrapping (`raise NewError(...) from err`); never swallow into a bare `except` or drop the cause.
|
|
20
|
+
|
|
21
|
+
### Boundaries
|
|
22
|
+
|
|
23
|
+
- Validate external input at the boundary before it reaches business logic; fail fast with a clear message (Pydantic or an explicit check).
|
|
24
|
+
- Read required secrets with `os.environ["KEY"]` so a missing value raises at startup — never `os.environ.get(...)` with a fallback that lets a misconfigured app boot.
|
|
25
|
+
|
|
26
|
+
### Flag in review (a linter won't)
|
|
27
|
+
|
|
28
|
+
- A mutable class used where a frozen value object belongs.
|
|
29
|
+
- A concrete base class used where a `Protocol` would decouple the caller.
|
|
30
|
+
- A wrapped exception that drops `from err` and loses the cause.
|
|
31
|
+
- A required secret read via `.get()` with a silent fallback default.
|
|
32
|
+
|
|
33
|
+
## Workflow pack: Python rules
|
|
34
|
+
|
|
35
|
+
Python conventions a linter can't check — frozen dataclasses for value objects, Protocols for structural typing, raise ... from, os.environ[] over silent .get() fallbacks — with a reviewer and a ruff guard; style and coverage belong in CI.
|
|
36
|
+
|
|
37
|
+
When acting as the python-reviewer role: You are a Python reviewer. Read the changed Python files and check them against the conventions in context: frozen dataclasses/NamedTuples for value objects, Protocols for structural typing, context managers for resources, full signature annotations, specific-exception handling with `raise ... from`, boundary input validation, and `os.environ[...]` secrets that fail fast. PEP 8, import order, and coverage are the linter/CI's job — don't re-litigate them. Cite the exact file:line for each finding, name the concrete failure mode, and give severity. If the change is sound, say so plainly rather than inventing findings.
|
|
38
|
+
|
|
39
|
+
Workflow steps:
|
|
40
|
+
|
|
41
|
+
- python-review: Invoke the python-reviewer subagent on the changed Python files (the diff since $ARGUMENTS, or the working tree if no ref is given). It checks this pack's conventions — frozen dataclasses for value objects, Protocols for structural typing, `raise ... from`, and os.environ[] over silent .get() fallbacks — and reports file:line + severity. Style and coverage are CI's job; don't re-litigate them. Fix any Critical or Important findings before merging.
|
|
42
|
+
|
|
43
|
+
- After an edit, lint with ruff when it is installed.
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
# AGENTS.md
|
|
2
|
+
|
|
3
|
+
<!-- generated from workflow-pack python-rules v1.3.0 -->
|
|
4
|
+
<!-- adapted from affaan-m/ECC (MIT) — https://github.com/affaan-m/ECC -->
|
|
5
|
+
|
|
6
|
+
## Python conventions (beyond what the linter enforces)
|
|
7
|
+
|
|
8
|
+
`ruff` and `black` already enforce PEP 8, import order, bare `except`, and mutable default arguments — this pack is the judgment they can't encode. Keep the mechanical checks in CI (`ruff check .`, `bandit -r src/`, `pytest --cov`); the reviewer covers the rest.
|
|
9
|
+
|
|
10
|
+
### Data shapes
|
|
11
|
+
|
|
12
|
+
- Model value objects as `@dataclass(frozen=True)` or `NamedTuple`, not a mutable class with public attributes.
|
|
13
|
+
- Use a `Protocol` when a caller needs only an interface, not a concrete base class; use plain `@dataclass` for request/DTO shapes at API and service boundaries.
|
|
14
|
+
- Acquire every resource (files, locks, connections) through a context manager (`with`); use generators for lazy, memory-efficient iteration.
|
|
15
|
+
|
|
16
|
+
### Types
|
|
17
|
+
|
|
18
|
+
- Annotate every function signature, including internal helpers — not just the public API a type checker would force.
|
|
19
|
+
|
|
20
|
+
### Errors
|
|
21
|
+
|
|
22
|
+
- Catch specific exception types and preserve the chain when wrapping (`raise NewError(...) from err`); never swallow into a bare `except` or drop the cause.
|
|
23
|
+
|
|
24
|
+
### Boundaries
|
|
25
|
+
|
|
26
|
+
- Validate external input at the boundary before it reaches business logic; fail fast with a clear message (Pydantic or an explicit check).
|
|
27
|
+
- Read required secrets with `os.environ["KEY"]` so a missing value raises at startup — never `os.environ.get(...)` with a fallback that lets a misconfigured app boot.
|
|
28
|
+
|
|
29
|
+
### Flag in review (a linter won't)
|
|
30
|
+
|
|
31
|
+
- A mutable class used where a frozen value object belongs.
|
|
32
|
+
- A concrete base class used where a `Protocol` would decouple the caller.
|
|
33
|
+
- A wrapped exception that drops `from err` and loses the cause.
|
|
34
|
+
- A required secret read via `.get()` with a silent fallback default.
|
|
35
|
+
|
|
36
|
+
## Workflow pack: Python rules
|
|
37
|
+
|
|
38
|
+
Python conventions a linter can't check — frozen dataclasses for value objects, Protocols for structural typing, raise ... from, os.environ[] over silent .get() fallbacks — with a reviewer and a ruff guard; style and coverage belong in CI.
|
|
39
|
+
|
|
40
|
+
### Roles
|
|
41
|
+
|
|
42
|
+
- **python-reviewer** — Reviews changed Python against the Python standards: type hints, immutability, specific exceptions, boundary validation, and env-var secrets. Reports file:line + severity. Use after any Python change.
|
|
43
|
+
|
|
44
|
+
### Commands
|
|
45
|
+
|
|
46
|
+
- **/python-review** `[base ref]` — Run the Python reviewer over the current change against this pack's Python standards.
|
|
47
|
+
- How it runs: Invoke the python-reviewer subagent on the changed Python files (the diff since $ARGUMENTS, or the working tree if no ref is given). It checks this pack's conventions — frozen dataclasses for value objects, Protocols for structural typing, `raise ... from`, and os.environ[] over silent .get() fallbacks — and reports file:line + severity. Style and coverage are CI's job; don't re-litigate them. Fix any Critical or Important findings before merging.
|
|
48
|
+
|
|
49
|
+
### Guardrails
|
|
50
|
+
|
|
51
|
+
- After an edit, lint with ruff when it is installed.
|
|
52
|
+
|
|
53
|
+
Tool-specific implementations live alongside this file (see `CLAUDE.md` for the Claude Code implementation). Tools without a native subagent/command surface should treat the sections above as operating instructions.
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://baselane.dev/schema/workflow-pack-v1.json",
|
|
3
|
+
"id": "second-brain",
|
|
4
|
+
"version": "1.0.0",
|
|
5
|
+
"title": "Second Brain (OKF)",
|
|
6
|
+
"summary": "A durable second brain for every repo and laptop: an Open Knowledge Format (OKF) wiki for project knowledge — architecture, decisions, gotchas, runbooks — plus a memory store of durable one-line facts, maintained by a librarian subagent that ingests what the team learns and lints for contradictions. The discipline is read-before-acting and write-after-learning, and the AI keeps the bookkeeping, not you. Built on the Karpathy \"LLM Wiki\" ingest/query/lint loop and Google's Open Knowledge Format. It ships the format and the habit, not pre-filled content — the brain accumulates as the team works.",
|
|
7
|
+
"scope": "both",
|
|
8
|
+
"context": {
|
|
9
|
+
"markdown": "## Second brain (OKF wiki + memory)\n\nThis project keeps a durable second brain the AI reads before acting and writes after learning:\n\n- `.baselane/wiki/` — an Open Knowledge Format (OKF) knowledge base for project knowledge: architecture, decisions, gotchas, runbooks. One concept per file (with a `type` frontmatter field), plus an `index.md` and an append-only `log.md`.\n- `.baselane/memory/` — durable one-line facts (decisions, corrections, non-obvious constraints), indexed by `MEMORY.md`.\n\nRead `index.md` and `MEMORY.md` before acting — recall what's already known rather than re-deriving it. After learning something durable, ingest it (a wiki page or a memory fact) together with its index and log lines. Corrections beat additions: reconcile contradictions rather than letting them pile up. Use `/wiki` and `/remember` for one-step capture; the `librarian` subagent handles the bookkeeping and periodic lint.\n"
|
|
10
|
+
},
|
|
11
|
+
"capabilities": [
|
|
12
|
+
{ "type": "wiki", "store": "repo", "method": "baselane" },
|
|
13
|
+
{ "type": "wiki", "store": "org", "method": "baselane" },
|
|
14
|
+
{ "type": "memory", "store": "repo", "method": "files" },
|
|
15
|
+
{ "type": "memory", "store": "org", "method": "files" }
|
|
16
|
+
],
|
|
17
|
+
"agents": [
|
|
18
|
+
{
|
|
19
|
+
"name": "librarian",
|
|
20
|
+
"description": "Knowledge-base keeper: ingests durable knowledge into the OKF wiki and memory, and lints them for contradictions, stale claims, orphan pages, and broken cross-links.",
|
|
21
|
+
"tools": ["Read", "Grep", "Glob", "Edit", "Write"],
|
|
22
|
+
"model": "sonnet",
|
|
23
|
+
"prompt": "You are the librarian for this project's second brain (`.baselane/wiki/` and `.baselane/memory/`). You have two jobs.\n\n(1) Ingest. When the session learned something durable — an architectural fact, a decision, a gotcha, a correction — record it. Project knowledge goes in the OKF wiki (`.baselane/wiki/`: one concept per file with a `type` frontmatter field, plus its `index.md` line and a `log.md` entry). A durable one-line fact goes in memory (`.baselane/memory/`, with its `MEMORY.md` line). Follow the protocol in each directory's README.\n\n(2) Lint. On request (or via `/wiki lint`), scan every wiki page and memory fact for contradictions between pages, stale claims, pages missing from the index, and broken cross-links. Reconcile contradictions rather than letting them coexist — corrections beat additions.\n\nAlways read `index.md` and `MEMORY.md` before acting. Never fabricate a page or a fact; only record what the work actually established. Keep the bookkeeping — the index and log lines — current; that is your job, not the human's."
|
|
24
|
+
}
|
|
25
|
+
],
|
|
26
|
+
"commands": [],
|
|
27
|
+
"hooks": [
|
|
28
|
+
{
|
|
29
|
+
"event": "SessionStart",
|
|
30
|
+
"matcher": "",
|
|
31
|
+
"description": "At session start, recall the second brain before acting.",
|
|
32
|
+
"action": "print-reminder",
|
|
33
|
+
"message": "Recall the second brain before acting: read .baselane/wiki/index.md and .baselane/memory/MEMORY.md first — the answer may already be written down."
|
|
34
|
+
}
|
|
35
|
+
]
|
|
36
|
+
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 1,
|
|
3
|
+
"capabilities": [
|
|
4
|
+
{
|
|
5
|
+
"type": "wiki",
|
|
6
|
+
"store": "repo",
|
|
7
|
+
"method": "baselane"
|
|
8
|
+
},
|
|
9
|
+
{
|
|
10
|
+
"type": "wiki",
|
|
11
|
+
"store": "org",
|
|
12
|
+
"method": "baselane"
|
|
13
|
+
},
|
|
14
|
+
{
|
|
15
|
+
"type": "memory",
|
|
16
|
+
"store": "repo",
|
|
17
|
+
"method": "files"
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
"type": "memory",
|
|
21
|
+
"store": "org",
|
|
22
|
+
"method": "files"
|
|
23
|
+
}
|
|
24
|
+
]
|
|
25
|
+
}
|