@g3nomaly/skills 1.0.0 → 1.0.2
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/dist/cli/adapter.d.ts +55 -18
- package/dist/cli/adapter.d.ts.map +1 -1
- package/dist/cli/adapter.js +70 -64
- package/dist/cli/adapter.js.map +1 -1
- package/dist/cli/commands/add.d.ts +16 -10
- package/dist/cli/commands/add.d.ts.map +1 -1
- package/dist/cli/commands/add.js +16 -98
- package/dist/cli/commands/add.js.map +1 -1
- package/dist/cli/commands/init.d.ts +25 -2
- package/dist/cli/commands/init.d.ts.map +1 -1
- package/dist/cli/commands/init.js +31 -1
- package/dist/cli/commands/init.js.map +1 -1
- package/dist/cli/commands/ls.d.ts +18 -2
- package/dist/cli/commands/ls.d.ts.map +1 -1
- package/dist/cli/commands/ls.js +26 -5
- package/dist/cli/commands/ls.js.map +1 -1
- package/dist/cli/commands/remove.d.ts +16 -7
- package/dist/cli/commands/remove.d.ts.map +1 -1
- package/dist/cli/commands/remove.js +15 -56
- package/dist/cli/commands/remove.js.map +1 -1
- package/dist/cli/commands/source.d.ts +58 -0
- package/dist/cli/commands/source.d.ts.map +1 -0
- package/dist/cli/commands/source.js +49 -0
- package/dist/cli/commands/source.js.map +1 -0
- package/dist/cli/commands/update.d.ts +15 -6
- package/dist/cli/commands/update.d.ts.map +1 -1
- package/dist/cli/commands/update.js +13 -43
- package/dist/cli/commands/update.js.map +1 -1
- package/dist/cli/index.js +84 -58
- package/dist/cli/index.js.map +1 -1
- package/dist/index.d.ts +2 -8
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -8
- package/dist/index.js.map +1 -1
- package/dist/packages/index.d.ts +3 -0
- package/dist/packages/index.d.ts.map +1 -0
- package/dist/packages/index.js +3 -0
- package/dist/packages/index.js.map +1 -0
- package/dist/packages/install.d.ts +29 -0
- package/dist/packages/install.d.ts.map +1 -0
- package/dist/packages/install.js +48 -0
- package/dist/packages/install.js.map +1 -0
- package/dist/registry/index.d.ts +4 -2
- package/dist/registry/index.d.ts.map +1 -1
- package/dist/registry/index.js +3 -2
- package/dist/registry/index.js.map +1 -1
- package/dist/registry/locate.d.ts +33 -0
- package/dist/registry/locate.d.ts.map +1 -0
- package/dist/registry/locate.js +88 -0
- package/dist/registry/locate.js.map +1 -0
- package/dist/registry/manifest.d.ts +10 -0
- package/dist/registry/manifest.d.ts.map +1 -0
- package/dist/registry/manifest.js +15 -0
- package/dist/registry/manifest.js.map +1 -0
- package/dist/registry/readSkillDir.d.ts +9 -6
- package/dist/registry/readSkillDir.d.ts.map +1 -1
- package/dist/registry/readSkillDir.js +24 -24
- package/dist/registry/readSkillDir.js.map +1 -1
- package/dist/registry/readSource.d.ts +12 -0
- package/dist/registry/readSource.d.ts.map +1 -0
- package/dist/registry/readSource.js +33 -0
- package/dist/registry/readSource.js.map +1 -0
- package/dist/registry/types.d.ts +27 -16
- package/dist/registry/types.d.ts.map +1 -1
- package/dist/registry/types.js +8 -23
- package/dist/registry/types.js.map +1 -1
- package/dist/sources/builtins.d.ts +4 -0
- package/dist/sources/builtins.d.ts.map +1 -0
- package/dist/sources/builtins.js +5 -0
- package/dist/sources/builtins.js.map +1 -0
- package/dist/sources/index.d.ts +2 -0
- package/dist/sources/index.d.ts.map +1 -0
- package/dist/sources/index.js +3 -0
- package/dist/sources/index.js.map +1 -0
- package/dist/utils/frontmatter.d.ts +9 -0
- package/dist/utils/frontmatter.d.ts.map +1 -0
- package/dist/utils/frontmatter.js +22 -0
- package/dist/utils/frontmatter.js.map +1 -0
- package/dist/utils/index.d.ts +2 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +3 -0
- package/dist/utils/index.js.map +1 -0
- package/package.json +8 -32
- package/dist/cli/commands/hook.d.ts +0 -6
- package/dist/cli/commands/hook.d.ts.map +0 -1
- package/dist/cli/commands/hook.js +0 -18
- package/dist/cli/commands/hook.js.map +0 -1
- package/dist/decisions/index.d.ts +0 -6
- package/dist/decisions/index.d.ts.map +0 -1
- package/dist/decisions/index.js +0 -5
- package/dist/decisions/index.js.map +0 -1
- package/dist/decisions/paths.d.ts +0 -4
- package/dist/decisions/paths.d.ts.map +0 -1
- package/dist/decisions/paths.js +0 -12
- package/dist/decisions/paths.js.map +0 -1
- package/dist/decisions/read.d.ts +0 -18
- package/dist/decisions/read.d.ts.map +0 -1
- package/dist/decisions/read.js +0 -45
- package/dist/decisions/read.js.map +0 -1
- package/dist/decisions/write.d.ts +0 -20
- package/dist/decisions/write.d.ts.map +0 -1
- package/dist/decisions/write.js +0 -48
- package/dist/decisions/write.js.map +0 -1
- package/dist/filetree/ensure.d.ts +0 -7
- package/dist/filetree/ensure.d.ts.map +0 -1
- package/dist/filetree/ensure.js +0 -36
- package/dist/filetree/ensure.js.map +0 -1
- package/dist/filetree/entries.d.ts +0 -9
- package/dist/filetree/entries.d.ts.map +0 -1
- package/dist/filetree/entries.js +0 -49
- package/dist/filetree/entries.js.map +0 -1
- package/dist/filetree/frontmatter.d.ts +0 -16
- package/dist/filetree/frontmatter.d.ts.map +0 -1
- package/dist/filetree/frontmatter.js +0 -43
- package/dist/filetree/frontmatter.js.map +0 -1
- package/dist/filetree/generate.d.ts +0 -16
- package/dist/filetree/generate.d.ts.map +0 -1
- package/dist/filetree/generate.js +0 -62
- package/dist/filetree/generate.js.map +0 -1
- package/dist/filetree/index.d.ts +0 -17
- package/dist/filetree/index.d.ts.map +0 -1
- package/dist/filetree/index.js +0 -13
- package/dist/filetree/index.js.map +0 -1
- package/dist/filetree/levels.d.ts +0 -25
- package/dist/filetree/levels.d.ts.map +0 -1
- package/dist/filetree/levels.js +0 -45
- package/dist/filetree/levels.js.map +0 -1
- package/dist/filetree/locate.d.ts +0 -44
- package/dist/filetree/locate.d.ts.map +0 -1
- package/dist/filetree/locate.js +0 -76
- package/dist/filetree/locate.js.map +0 -1
- package/dist/filetree/paths.d.ts +0 -15
- package/dist/filetree/paths.d.ts.map +0 -1
- package/dist/filetree/paths.js +0 -38
- package/dist/filetree/paths.js.map +0 -1
- package/dist/filetree/read.d.ts +0 -23
- package/dist/filetree/read.d.ts.map +0 -1
- package/dist/filetree/read.js +0 -36
- package/dist/filetree/read.js.map +0 -1
- package/dist/filetree/remove.d.ts +0 -9
- package/dist/filetree/remove.d.ts.map +0 -1
- package/dist/filetree/remove.js +0 -17
- package/dist/filetree/remove.js.map +0 -1
- package/dist/filetree/root.d.ts +0 -9
- package/dist/filetree/root.d.ts.map +0 -1
- package/dist/filetree/root.js +0 -15
- package/dist/filetree/root.js.map +0 -1
- package/dist/filetree/status.d.ts +0 -21
- package/dist/filetree/status.d.ts.map +0 -1
- package/dist/filetree/status.js +0 -55
- package/dist/filetree/status.js.map +0 -1
- package/dist/hooks/cli.d.ts +0 -29
- package/dist/hooks/cli.d.ts.map +0 -1
- package/dist/hooks/cli.js +0 -65
- package/dist/hooks/cli.js.map +0 -1
- package/dist/hooks/index.d.ts +0 -3
- package/dist/hooks/index.d.ts.map +0 -1
- package/dist/hooks/index.js +0 -3
- package/dist/hooks/index.js.map +0 -1
- package/dist/plugins/grilling/.claude-plugin/plugin.json +0 -7
- package/dist/plugins/grilling/skills/domain-modeling/ADR-FORMAT.md +0 -47
- package/dist/plugins/grilling/skills/domain-modeling/CONTEXT-FORMAT.md +0 -60
- package/dist/plugins/grilling/skills/domain-modeling/SKILL.md +0 -74
- package/dist/plugins/grilling/skills/domain-modeling/agents/openai.yaml +0 -3
- package/dist/plugins/grilling/skills/grill-me/SKILL.md +0 -7
- package/dist/plugins/grilling/skills/grill-me/agents/openai.yaml +0 -5
- package/dist/plugins/grilling/skills/grill-with-docs/SKILL.md +0 -7
- package/dist/plugins/grilling/skills/grill-with-docs/agents/openai.yaml +0 -5
- package/dist/plugins/grilling/skills/grilling/SKILL.md +0 -12
- package/dist/plugins/grilling/skills/grilling/agents/openai.yaml +0 -3
- package/dist/plugins/speech/.claude-plugin/plugin.json +0 -7
- package/dist/plugins/speech/skills/emphasise/SKILL.md +0 -49
- package/dist/plugins/speech/skills/emphasise/agents/openai.yaml +0 -5
- package/dist/plugins/speech/skills/unslop/SKILL.md +0 -80
- package/dist/plugins/task-manager/.claude-plugin/plugin.json +0 -11
- package/dist/plugins/task-manager/hooks/hooks.json +0 -19
- package/dist/plugins/task-manager/skills/decisions/SKILL.md +0 -39
- package/dist/plugins/task-manager/skills/decisions/agents/openai.yaml +0 -5
- package/dist/plugins/task-manager/skills/decisions/references/usage.md +0 -26
- package/dist/plugins/task-manager/skills/task-manager/SKILL.md +0 -99
- package/dist/plugins/task-manager/skills/vocabulary/SKILL.md +0 -42
- package/dist/plugins/task-manager/skills/vocabulary/agents/openai.yaml +0 -5
- package/dist/plugins/task-manager/skills/vocabulary/references/usage.md +0 -26
- package/dist/plugins/using-hooks/.claude-plugin/plugin.json +0 -7
- package/dist/plugins/using-hooks/skills/hook-post-tool-use/SKILL.md +0 -79
- package/dist/plugins/using-hooks/skills/hook-post-tool-use/agents/openai.yaml +0 -5
- package/dist/plugins/using-hooks/skills/hook-pre-tool-use/SKILL.md +0 -84
- package/dist/plugins/using-hooks/skills/hook-pre-tool-use/agents/openai.yaml +0 -5
- package/dist/plugins/using-hooks/skills/hook-stop/SKILL.md +0 -69
- package/dist/plugins/using-hooks/skills/hook-stop/agents/openai.yaml +0 -5
- package/dist/plugins/using-hooks/skills/hook-user-prompt-submit/SKILL.md +0 -64
- package/dist/plugins/using-hooks/skills/hook-user-prompt-submit/agents/openai.yaml +0 -5
- package/dist/plugins/workflow/.claude-plugin/plugin.json +0 -16
- package/dist/plugins/workflow/agents/reviewer.md +0 -9
- package/dist/plugins/workflow/skills/execute/SKILL.md +0 -21
- package/dist/plugins/workflow/skills/execute/agents/openai.yaml +0 -5
- package/dist/plugins/workflow/skills/orchestrator/SKILL.md +0 -27
- package/dist/plugins/workflow/skills/orchestrator/agents/openai.yaml +0 -5
- package/dist/plugins/workflow/skills/plan/SKILL.md +0 -18
- package/dist/plugins/workflow/skills/plan/agents/openai.yaml +0 -5
- package/dist/plugins/workflow/skills/plan/references/task-frontmatter.md +0 -33
- package/dist/plugins/workflow/skills/review/SKILL.md +0 -25
- package/dist/plugins/workflow/skills/review/agents/openai.yaml +0 -5
- package/dist/plugins/workflow/skills/run/SKILL.md +0 -33
- package/dist/plugins/workflow/skills/run/agents/openai.yaml +0 -5
- package/dist/plugins/workflow/skills/run/references/sub-agents.md +0 -46
- package/dist/plugins/workflow/skills/sync/SKILL.md +0 -18
- package/dist/plugins/workflow/skills/sync/agents/openai.yaml +0 -5
- package/dist/plugins/workflow/skills/worktree/SKILL.md +0 -38
- package/dist/plugins/workflow/skills/worktree/agents/openai.yaml +0 -5
- package/dist/plugins/workflow/skills/worktree/references/git-commands.md +0 -27
- package/dist/plugins/writing/.claude-plugin/plugin.json +0 -7
- package/dist/plugins/writing/skills/writing-great-hooks/SKILL.md +0 -192
- package/dist/plugins/writing/skills/writing-great-hooks/agents/openai.yaml +0 -5
- package/dist/plugins/writing/skills/writing-great-skills/GLOSSARY.md +0 -201
- package/dist/plugins/writing/skills/writing-great-skills/SKILL.md +0 -92
- package/dist/plugins/writing/skills/writing-great-skills/agents/openai.yaml +0 -5
- package/dist/plugins/writing/skills/writing-great-tasks/SKILL.md +0 -136
- package/dist/plugins/writing/skills/writing-great-tasks/agents/openai.yaml +0 -5
- package/dist/plugins/writing/skills/writing-great-tasks/templates/template_task.md +0 -108
- package/dist/registry/loadPackageRegistry.d.ts +0 -14
- package/dist/registry/loadPackageRegistry.d.ts.map +0 -1
- package/dist/registry/loadPackageRegistry.js +0 -59
- package/dist/registry/loadPackageRegistry.js.map +0 -1
- package/dist/registry/userManifest.d.ts +0 -7
- package/dist/registry/userManifest.d.ts.map +0 -1
- package/dist/registry/userManifest.js +0 -21
- package/dist/registry/userManifest.js.map +0 -1
- package/dist/remote/fetch.d.ts +0 -16
- package/dist/remote/fetch.d.ts.map +0 -1
- package/dist/remote/fetch.js +0 -41
- package/dist/remote/fetch.js.map +0 -1
- package/dist/remote/index.d.ts +0 -7
- package/dist/remote/index.d.ts.map +0 -1
- package/dist/remote/index.js +0 -5
- package/dist/remote/index.js.map +0 -1
- package/dist/remote/manifest.d.ts +0 -23
- package/dist/remote/manifest.d.ts.map +0 -1
- package/dist/remote/manifest.js +0 -116
- package/dist/remote/manifest.js.map +0 -1
- package/dist/remote/registry.d.ts +0 -18
- package/dist/remote/registry.d.ts.map +0 -1
- package/dist/remote/registry.js +0 -58
- package/dist/remote/registry.js.map +0 -1
- package/dist/schemas/config.d.ts +0 -3
- package/dist/schemas/config.d.ts.map +0 -1
- package/dist/schemas/config.js +0 -3
- package/dist/schemas/config.js.map +0 -1
- package/dist/schemas/decision.d.ts +0 -43
- package/dist/schemas/decision.d.ts.map +0 -1
- package/dist/schemas/decision.js +0 -24
- package/dist/schemas/decision.js.map +0 -1
- package/dist/schemas/index.d.ts +0 -17
- package/dist/schemas/index.d.ts.map +0 -1
- package/dist/schemas/index.js +0 -10
- package/dist/schemas/index.js.map +0 -1
- package/dist/schemas/phase.d.ts +0 -46
- package/dist/schemas/phase.d.ts.map +0 -1
- package/dist/schemas/phase.js +0 -16
- package/dist/schemas/phase.js.map +0 -1
- package/dist/schemas/plan.d.ts +0 -44
- package/dist/schemas/plan.d.ts.map +0 -1
- package/dist/schemas/plan.js +0 -15
- package/dist/schemas/plan.js.map +0 -1
- package/dist/schemas/primitives.d.ts +0 -38
- package/dist/schemas/primitives.d.ts.map +0 -1
- package/dist/schemas/primitives.js +0 -33
- package/dist/schemas/primitives.js.map +0 -1
- package/dist/schemas/task.d.ts +0 -70
- package/dist/schemas/task.d.ts.map +0 -1
- package/dist/schemas/task.js +0 -19
- package/dist/schemas/task.js.map +0 -1
- package/dist/schemas/term.d.ts +0 -17
- package/dist/schemas/term.d.ts.map +0 -1
- package/dist/schemas/term.js +0 -22
- package/dist/schemas/term.js.map +0 -1
- package/dist/schemas/validation.d.ts +0 -24
- package/dist/schemas/validation.d.ts.map +0 -1
- package/dist/schemas/validation.js +0 -39
- package/dist/schemas/validation.js.map +0 -1
- package/dist/task-manager/hooks/add-decision.d.ts +0 -2
- package/dist/task-manager/hooks/add-decision.d.ts.map +0 -1
- package/dist/task-manager/hooks/add-decision.js +0 -19
- package/dist/task-manager/hooks/add-decision.js.map +0 -1
- package/dist/task-manager/hooks/cleanup.d.ts +0 -2
- package/dist/task-manager/hooks/cleanup.d.ts.map +0 -1
- package/dist/task-manager/hooks/cleanup.js +0 -27
- package/dist/task-manager/hooks/cleanup.js.map +0 -1
- package/dist/task-manager/hooks/get-decision.d.ts +0 -2
- package/dist/task-manager/hooks/get-decision.d.ts.map +0 -1
- package/dist/task-manager/hooks/get-decision.js +0 -11
- package/dist/task-manager/hooks/get-decision.js.map +0 -1
- package/dist/task-manager/hooks/get-entry.d.ts +0 -2
- package/dist/task-manager/hooks/get-entry.d.ts.map +0 -1
- package/dist/task-manager/hooks/get-entry.js +0 -20
- package/dist/task-manager/hooks/get-entry.js.map +0 -1
- package/dist/task-manager/hooks/get-term.d.ts +0 -2
- package/dist/task-manager/hooks/get-term.d.ts.map +0 -1
- package/dist/task-manager/hooks/get-term.js +0 -13
- package/dist/task-manager/hooks/get-term.js.map +0 -1
- package/dist/task-manager/hooks/guard-tree.d.ts +0 -2
- package/dist/task-manager/hooks/guard-tree.d.ts.map +0 -1
- package/dist/task-manager/hooks/guard-tree.js +0 -63
- package/dist/task-manager/hooks/guard-tree.js.map +0 -1
- package/dist/task-manager/hooks/index.d.ts +0 -4
- package/dist/task-manager/hooks/index.d.ts.map +0 -1
- package/dist/task-manager/hooks/index.js +0 -32
- package/dist/task-manager/hooks/index.js.map +0 -1
- package/dist/task-manager/hooks/list-decisions.d.ts +0 -2
- package/dist/task-manager/hooks/list-decisions.d.ts.map +0 -1
- package/dist/task-manager/hooks/list-decisions.js +0 -20
- package/dist/task-manager/hooks/list-decisions.js.map +0 -1
- package/dist/task-manager/hooks/list-entries.d.ts +0 -2
- package/dist/task-manager/hooks/list-entries.d.ts.map +0 -1
- package/dist/task-manager/hooks/list-entries.js +0 -19
- package/dist/task-manager/hooks/list-entries.js.map +0 -1
- package/dist/task-manager/hooks/list-terms.d.ts +0 -2
- package/dist/task-manager/hooks/list-terms.d.ts.map +0 -1
- package/dist/task-manager/hooks/list-terms.js +0 -8
- package/dist/task-manager/hooks/list-terms.js.map +0 -1
- package/dist/task-manager/hooks/next-entry.d.ts +0 -2
- package/dist/task-manager/hooks/next-entry.d.ts.map +0 -1
- package/dist/task-manager/hooks/next-entry.js +0 -23
- package/dist/task-manager/hooks/next-entry.js.map +0 -1
- package/dist/task-manager/hooks/remove-term.d.ts +0 -2
- package/dist/task-manager/hooks/remove-term.d.ts.map +0 -1
- package/dist/task-manager/hooks/remove-term.js +0 -15
- package/dist/task-manager/hooks/remove-term.js.map +0 -1
- package/dist/task-manager/hooks/set-state.d.ts +0 -2
- package/dist/task-manager/hooks/set-state.d.ts.map +0 -1
- package/dist/task-manager/hooks/set-state.js +0 -15
- package/dist/task-manager/hooks/set-state.js.map +0 -1
- package/dist/task-manager/hooks/set-term.d.ts +0 -2
- package/dist/task-manager/hooks/set-term.d.ts.map +0 -1
- package/dist/task-manager/hooks/set-term.js +0 -27
- package/dist/task-manager/hooks/set-term.js.map +0 -1
- package/dist/task-manager/hooks/sync-tree.d.ts +0 -2
- package/dist/task-manager/hooks/sync-tree.d.ts.map +0 -1
- package/dist/task-manager/hooks/sync-tree.js +0 -28
- package/dist/task-manager/hooks/sync-tree.js.map +0 -1
- package/dist/task-manager/index.d.ts +0 -2
- package/dist/task-manager/index.d.ts.map +0 -1
- package/dist/task-manager/index.js +0 -3
- package/dist/task-manager/index.js.map +0 -1
- package/dist/vocabulary/file.d.ts +0 -15
- package/dist/vocabulary/file.d.ts.map +0 -1
- package/dist/vocabulary/file.js +0 -80
- package/dist/vocabulary/file.js.map +0 -1
- package/dist/vocabulary/index.d.ts +0 -4
- package/dist/vocabulary/index.d.ts.map +0 -1
- package/dist/vocabulary/index.js +0 -4
- package/dist/vocabulary/index.js.map +0 -1
- package/dist/vocabulary/match.d.ts +0 -22
- package/dist/vocabulary/match.d.ts.map +0 -1
- package/dist/vocabulary/match.js +0 -31
- package/dist/vocabulary/match.js.map +0 -1
- package/dist/workflow/gates.d.ts +0 -24
- package/dist/workflow/gates.d.ts.map +0 -1
- package/dist/workflow/gates.js +0 -34
- package/dist/workflow/gates.js.map +0 -1
- package/dist/workflow/hooks/advance-step.d.ts +0 -2
- package/dist/workflow/hooks/advance-step.d.ts.map +0 -1
- package/dist/workflow/hooks/advance-step.js +0 -51
- package/dist/workflow/hooks/advance-step.js.map +0 -1
- package/dist/workflow/hooks/current-step.d.ts +0 -2
- package/dist/workflow/hooks/current-step.d.ts.map +0 -1
- package/dist/workflow/hooks/current-step.js +0 -24
- package/dist/workflow/hooks/current-step.js.map +0 -1
- package/dist/workflow/hooks/index.d.ts +0 -4
- package/dist/workflow/hooks/index.d.ts.map +0 -1
- package/dist/workflow/hooks/index.js +0 -10
- package/dist/workflow/hooks/index.js.map +0 -1
- package/dist/workflow/hooks/ready-phases.d.ts +0 -2
- package/dist/workflow/hooks/ready-phases.d.ts.map +0 -1
- package/dist/workflow/hooks/ready-phases.js +0 -15
- package/dist/workflow/hooks/ready-phases.js.map +0 -1
- package/dist/workflow/index.d.ts +0 -8
- package/dist/workflow/index.d.ts.map +0 -1
- package/dist/workflow/index.js +0 -6
- package/dist/workflow/index.js.map +0 -1
- package/dist/workflow/phase.d.ts +0 -16
- package/dist/workflow/phase.d.ts.map +0 -1
- package/dist/workflow/phase.js +0 -22
- package/dist/workflow/phase.js.map +0 -1
- package/dist/workflow/steps.d.ts +0 -15
- package/dist/workflow/steps.d.ts.map +0 -1
- package/dist/workflow/steps.js +0 -32
- package/dist/workflow/steps.js.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../src/filetree/status.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAgB,KAAK,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAMtE,8DAA8D;AAC9D,MAAM,WAAW,YAAY,CAAC,CAAC,SAAS,MAAM,GAAG,UAAU;IACzD,IAAI,EAAE,CAAC,CAAC;IACR,EAAE,EAAE,CAAC,CAAC;CACP;AAED,sDAAsD;AACtD,wBAAsB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,UAAU,GAAG,OAAO,CAAC,YAAY,CAAC,CAExF;AAED;;;;;;;;;GASG;AACH,wBAAsB,aAAa,CAAC,CAAC,SAAS,MAAM,EAClD,IAAI,EAAE,MAAM,EACZ,EAAE,EAAE,CAAC,EACL,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GACnB,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAyB1B"}
|
package/dist/filetree/status.js
DELETED
|
@@ -1,55 +0,0 @@
|
|
|
1
|
-
import { StatusSchema } from "../schemas/primitives";
|
|
2
|
-
import { FileValidationError } from "../schemas/validation";
|
|
3
|
-
const FENCE = "---";
|
|
4
|
-
const STATUS_LINE = /^(status:\s*)(\S+)(\s*)$/;
|
|
5
|
-
/** `setStatusLine` for a plan, phase or task file. */
|
|
6
|
-
export async function setEntryStatus(file, to) {
|
|
7
|
-
return setStatusLine(file, to, StatusSchema);
|
|
8
|
-
}
|
|
9
|
-
/**
|
|
10
|
-
* Rewrites the `status:` line in a file's frontmatter and leaves every other
|
|
11
|
-
* byte alone, so comments, key order and quoting survive the change. Regenerate
|
|
12
|
-
* the owning index afterwards — this touches the `.md` file only.
|
|
13
|
-
*
|
|
14
|
-
* @param schema the set of statuses the file may hold
|
|
15
|
-
* @throws FileValidationError when the frontmatter has no `status:` line, or
|
|
16
|
-
* holds a status outside `schema`
|
|
17
|
-
* @throws Error when the file already has status `to`
|
|
18
|
-
*/
|
|
19
|
-
export async function setStatusLine(file, to, schema) {
|
|
20
|
-
const lines = (await Bun.file(file).text()).split("\n");
|
|
21
|
-
const closing = closingFenceAt(lines, file);
|
|
22
|
-
for (let index = 1; index < closing; index++) {
|
|
23
|
-
const match = STATUS_LINE.exec(lines[index] ?? "");
|
|
24
|
-
if (match === null)
|
|
25
|
-
continue;
|
|
26
|
-
const from = schema.safeParse(match[2]);
|
|
27
|
-
if (!from.success) {
|
|
28
|
-
throw new FileValidationError(file, [{ field: "status", message: `is "${match[2]}"` }]);
|
|
29
|
-
}
|
|
30
|
-
if (from.data === to) {
|
|
31
|
-
throw new Error(`${file} is already "${to}"`);
|
|
32
|
-
}
|
|
33
|
-
lines[index] = `${match[1]}${to}${match[3]}`;
|
|
34
|
-
await Bun.write(file, lines.join("\n"));
|
|
35
|
-
return { from: from.data, to };
|
|
36
|
-
}
|
|
37
|
-
throw new FileValidationError(file, [
|
|
38
|
-
{ field: "status", message: "has no status: line in the frontmatter" },
|
|
39
|
-
]);
|
|
40
|
-
}
|
|
41
|
-
function closingFenceAt(lines, file) {
|
|
42
|
-
if (lines[0]?.trimEnd() !== FENCE) {
|
|
43
|
-
throw new FileValidationError(file, [
|
|
44
|
-
{ field: "(frontmatter)", message: `no ${FENCE} block at the top of the file` },
|
|
45
|
-
]);
|
|
46
|
-
}
|
|
47
|
-
const closing = lines.findIndex((line, index) => index > 0 && line.trimEnd() === FENCE);
|
|
48
|
-
if (closing === -1) {
|
|
49
|
-
throw new FileValidationError(file, [
|
|
50
|
-
{ field: "(frontmatter)", message: `the ${FENCE} block is never closed` },
|
|
51
|
-
]);
|
|
52
|
-
}
|
|
53
|
-
return closing;
|
|
54
|
-
}
|
|
55
|
-
//# sourceMappingURL=status.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"status.js","sourceRoot":"","sources":["../../src/filetree/status.ts"],"names":[],"mappings":"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"}
|
package/dist/hooks/cli.d.ts
DELETED
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
/** One hook as `g3n-skills hook <name>` runs it: the flags after the name, untouched. */
|
|
2
|
-
export type Hook = (argv: readonly string[]) => Promise<void>;
|
|
3
|
-
/** Value of `--flag <value>`, or `undefined` when the flag is absent. */
|
|
4
|
-
export declare function readFlag(argv: readonly string[], flag: string): string | undefined;
|
|
5
|
-
/** Value of `--flag <value>`, or a stated failure when it is missing. */
|
|
6
|
-
export declare function requireFlag(argv: readonly string[], flag: string, example: string): string;
|
|
7
|
-
export declare function hasFlag(argv: readonly string[], flag: string): boolean;
|
|
8
|
-
/**
|
|
9
|
-
* Narrows a flag value to one of a fixed set, naming the whole set when it is
|
|
10
|
-
* not one of them. A schema would report the same rejection as parser output,
|
|
11
|
-
* which is not what a caller reading stderr can act on.
|
|
12
|
-
*/
|
|
13
|
-
export declare function oneOf<T extends string>(value: string, allowed: readonly T[], flag: string): T;
|
|
14
|
-
/**
|
|
15
|
-
* Tree root the script works on: `--root` verbatim, otherwise the folder named
|
|
16
|
-
* by `skills.settings.filetreeRoot` under `--project` (default: the working
|
|
17
|
-
* directory).
|
|
18
|
-
*/
|
|
19
|
-
export declare function resolveRoot(argv: readonly string[]): Promise<string>;
|
|
20
|
-
/** Everything piped to the hook on stdin, or `""` when it was run from a terminal. */
|
|
21
|
-
export declare function readStdin(): Promise<string>;
|
|
22
|
-
/** The only thing a script writes to stdout. */
|
|
23
|
-
export declare function printJson(value: unknown, argv: readonly string[]): void;
|
|
24
|
-
/**
|
|
25
|
-
* Runs a script's `main` and turns anything thrown into a message on stderr and
|
|
26
|
-
* a non-zero exit, so no rejection escapes as a stack trace.
|
|
27
|
-
*/
|
|
28
|
-
export declare function runHook(main: () => Promise<void>): void;
|
|
29
|
-
//# sourceMappingURL=cli.d.ts.map
|
package/dist/hooks/cli.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../../src/hooks/cli.ts"],"names":[],"mappings":"AAIA,yFAAyF;AACzF,MAAM,MAAM,IAAI,GAAG,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;AAE9D,yEAAyE;AACzE,wBAAgB,QAAQ,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAUlF;AAED,yEAAyE;AACzE,wBAAgB,WAAW,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAO1F;AAED,wBAAgB,OAAO,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAEtE;AAED;;;;GAIG;AACH,wBAAgB,KAAK,CAAC,CAAC,SAAS,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,CAAC,EAAE,EAAE,IAAI,EAAE,MAAM,GAAG,CAAC,CAI7F;AAED;;;;GAIG;AACH,wBAAsB,WAAW,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAK1E;AAED,sFAAsF;AACtF,wBAAsB,SAAS,IAAI,OAAO,CAAC,MAAM,CAAC,CAEjD;AAED,gDAAgD;AAChD,wBAAgB,SAAS,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,MAAM,EAAE,GAAG,IAAI,CAEvE;AAED;;;GAGG;AACH,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAKvD"}
|
package/dist/hooks/cli.js
DELETED
|
@@ -1,65 +0,0 @@
|
|
|
1
|
-
// packages/skills/src/hooks/cli.ts
|
|
2
|
-
import { resolve } from "node:path";
|
|
3
|
-
import { resolveFiletreeRoot } from "../filetree/root";
|
|
4
|
-
/** Value of `--flag <value>`, or `undefined` when the flag is absent. */
|
|
5
|
-
export function readFlag(argv, flag) {
|
|
6
|
-
const at = argv.indexOf(flag);
|
|
7
|
-
if (at === -1)
|
|
8
|
-
return undefined;
|
|
9
|
-
const value = argv[at + 1];
|
|
10
|
-
if (value === undefined || value.startsWith("--")) {
|
|
11
|
-
throw new Error(`${flag} requires a value`);
|
|
12
|
-
}
|
|
13
|
-
return value;
|
|
14
|
-
}
|
|
15
|
-
/** Value of `--flag <value>`, or a stated failure when it is missing. */
|
|
16
|
-
export function requireFlag(argv, flag, example) {
|
|
17
|
-
const value = readFlag(argv, flag);
|
|
18
|
-
if (value === undefined) {
|
|
19
|
-
throw new Error(`${flag} is required, e.g. ${flag} ${example}`);
|
|
20
|
-
}
|
|
21
|
-
return value;
|
|
22
|
-
}
|
|
23
|
-
export function hasFlag(argv, flag) {
|
|
24
|
-
return argv.includes(flag);
|
|
25
|
-
}
|
|
26
|
-
/**
|
|
27
|
-
* Narrows a flag value to one of a fixed set, naming the whole set when it is
|
|
28
|
-
* not one of them. A schema would report the same rejection as parser output,
|
|
29
|
-
* which is not what a caller reading stderr can act on.
|
|
30
|
-
*/
|
|
31
|
-
export function oneOf(value, allowed, flag) {
|
|
32
|
-
if (allowed.includes(value))
|
|
33
|
-
return value;
|
|
34
|
-
throw new Error(`${flag} must be one of ${allowed.join(", ")}, got "${value}"`);
|
|
35
|
-
}
|
|
36
|
-
/**
|
|
37
|
-
* Tree root the script works on: `--root` verbatim, otherwise the folder named
|
|
38
|
-
* by `skills.settings.filetreeRoot` under `--project` (default: the working
|
|
39
|
-
* directory).
|
|
40
|
-
*/
|
|
41
|
-
export async function resolveRoot(argv) {
|
|
42
|
-
const override = readFlag(argv, "--root");
|
|
43
|
-
if (override !== undefined)
|
|
44
|
-
return resolve(override);
|
|
45
|
-
return resolveFiletreeRoot(resolve(readFlag(argv, "--project") ?? process.cwd()));
|
|
46
|
-
}
|
|
47
|
-
/** Everything piped to the hook on stdin, or `""` when it was run from a terminal. */
|
|
48
|
-
export async function readStdin() {
|
|
49
|
-
return process.stdin.isTTY ? "" : Bun.stdin.text();
|
|
50
|
-
}
|
|
51
|
-
/** The only thing a script writes to stdout. */
|
|
52
|
-
export function printJson(value, argv) {
|
|
53
|
-
console.log(JSON.stringify(value, null, hasFlag(argv, "--pretty") ? 2 : 0));
|
|
54
|
-
}
|
|
55
|
-
/**
|
|
56
|
-
* Runs a script's `main` and turns anything thrown into a message on stderr and
|
|
57
|
-
* a non-zero exit, so no rejection escapes as a stack trace.
|
|
58
|
-
*/
|
|
59
|
-
export function runHook(main) {
|
|
60
|
-
main().catch((error) => {
|
|
61
|
-
console.error(error instanceof Error ? error.message : String(error));
|
|
62
|
-
process.exit(1);
|
|
63
|
-
});
|
|
64
|
-
}
|
|
65
|
-
//# sourceMappingURL=cli.js.map
|
package/dist/hooks/cli.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/hooks/cli.ts"],"names":[],"mappings":"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"}
|
package/dist/hooks/index.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/hooks/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAC1G,YAAY,EAAE,IAAI,EAAE,MAAM,OAAO,CAAC"}
|
package/dist/hooks/index.js
DELETED
package/dist/hooks/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/hooks/index.ts"],"names":[],"mappings":"AAAA,qCAAqC;AACrC,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC"}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "grilling",
|
|
3
|
-
"description": "Relentless interviews that stress-test a plan, plus the domain model they feed.",
|
|
4
|
-
"version": "0.1.0",
|
|
5
|
-
"license": "UNLICENSED",
|
|
6
|
-
"skills": ["./skills/grilling", "./skills/grill-me", "./skills/grill-with-docs", "./skills/domain-modeling"]
|
|
7
|
-
}
|
|
@@ -1,47 +0,0 @@
|
|
|
1
|
-
# ADR Format
|
|
2
|
-
|
|
3
|
-
ADRs live in `docs/adr/` and use sequential numbering: `0001-slug.md`, `0002-slug.md`, etc.
|
|
4
|
-
|
|
5
|
-
Create the `docs/adr/` directory lazily — only when the first ADR is needed.
|
|
6
|
-
|
|
7
|
-
## Template
|
|
8
|
-
|
|
9
|
-
```md
|
|
10
|
-
# {Short title of the decision}
|
|
11
|
-
|
|
12
|
-
{1-3 sentences: what's the context, what did we decide, and why.}
|
|
13
|
-
```
|
|
14
|
-
|
|
15
|
-
That's it. An ADR can be a single paragraph. The value is in recording *that* a decision was made and *why* — not in filling out sections.
|
|
16
|
-
|
|
17
|
-
## Optional sections
|
|
18
|
-
|
|
19
|
-
Only include these when they add genuine value. Most ADRs won't need them.
|
|
20
|
-
|
|
21
|
-
- **Status** frontmatter (`proposed | accepted | deprecated | superseded by ADR-NNNN`) — useful when decisions are revisited
|
|
22
|
-
- **Considered Options** — only when the rejected alternatives are worth remembering
|
|
23
|
-
- **Consequences** — only when non-obvious downstream effects need to be called out
|
|
24
|
-
|
|
25
|
-
## Numbering
|
|
26
|
-
|
|
27
|
-
Scan `docs/adr/` for the highest existing number and increment by one.
|
|
28
|
-
|
|
29
|
-
## When to offer an ADR
|
|
30
|
-
|
|
31
|
-
All three of these must be true:
|
|
32
|
-
|
|
33
|
-
1. **Hard to reverse** — the cost of changing your mind later is meaningful
|
|
34
|
-
2. **Surprising without context** — a future reader will look at the code and wonder "why on earth did they do it this way?"
|
|
35
|
-
3. **The result of a real trade-off** — there were genuine alternatives and you picked one for specific reasons
|
|
36
|
-
|
|
37
|
-
If a decision is easy to reverse, skip it — you'll just reverse it. If it's not surprising, nobody will wonder why. If there was no real alternative, there's nothing to record beyond "we did the obvious thing."
|
|
38
|
-
|
|
39
|
-
### What qualifies
|
|
40
|
-
|
|
41
|
-
- **Architectural shape.** "We're using a monorepo." "The write model is event-sourced, the read model is projected into Postgres."
|
|
42
|
-
- **Integration patterns between contexts.** "Ordering and Billing communicate via domain events, not synchronous HTTP."
|
|
43
|
-
- **Technology choices that carry lock-in.** Database, message bus, auth provider, deployment target. Not every library — just the ones that would take a quarter to swap out.
|
|
44
|
-
- **Boundary and scope decisions.** "Customer data is owned by the Customer context; other contexts reference it by ID only." The explicit no-s are as valuable as the yes-s.
|
|
45
|
-
- **Deliberate deviations from the obvious path.** "We're using manual SQL instead of an ORM because X." Anything where a reasonable reader would assume the opposite. These stop the next engineer from "fixing" something that was deliberate.
|
|
46
|
-
- **Constraints not visible in the code.** "We can't use AWS because of compliance requirements." "Response times must be under 200ms because of the partner API contract."
|
|
47
|
-
- **Rejected alternatives when the rejection is non-obvious.** If you considered GraphQL and picked REST for subtle reasons, record it — otherwise someone will suggest GraphQL again in six months.
|
|
@@ -1,60 +0,0 @@
|
|
|
1
|
-
# CONTEXT.md Format
|
|
2
|
-
|
|
3
|
-
## Structure
|
|
4
|
-
|
|
5
|
-
```md
|
|
6
|
-
# {Context Name}
|
|
7
|
-
|
|
8
|
-
{One or two sentence description of what this context is and why it exists.}
|
|
9
|
-
|
|
10
|
-
## Language
|
|
11
|
-
|
|
12
|
-
**Order**:
|
|
13
|
-
{A one or two sentence description of the term}
|
|
14
|
-
_Avoid_: Purchase, transaction
|
|
15
|
-
|
|
16
|
-
**Invoice**:
|
|
17
|
-
A request for payment sent to a customer after delivery.
|
|
18
|
-
_Avoid_: Bill, payment request
|
|
19
|
-
|
|
20
|
-
**Customer**:
|
|
21
|
-
A person or organization that places orders.
|
|
22
|
-
_Avoid_: Client, buyer, account
|
|
23
|
-
```
|
|
24
|
-
|
|
25
|
-
## Rules
|
|
26
|
-
|
|
27
|
-
- **Be opinionated.** When multiple words exist for the same concept, pick the best one and list the others under `_Avoid_`.
|
|
28
|
-
- **Keep definitions tight.** One or two sentences max. Define what it IS, not what it does.
|
|
29
|
-
- **Only include terms specific to this project's context.** General programming concepts (timeouts, error types, utility patterns) don't belong even if the project uses them extensively. Before adding a term, ask: is this a concept unique to this context, or a general programming concept? Only the former belongs.
|
|
30
|
-
- **Group terms under subheadings** when natural clusters emerge. If all terms belong to a single cohesive area, a flat list is fine.
|
|
31
|
-
|
|
32
|
-
## Single vs multi-context repos
|
|
33
|
-
|
|
34
|
-
**Single context (most repos):** One `CONTEXT.md` at the repo root.
|
|
35
|
-
|
|
36
|
-
**Multiple contexts:** A `CONTEXT-MAP.md` at the repo root lists the contexts, where they live, and how they relate to each other:
|
|
37
|
-
|
|
38
|
-
```md
|
|
39
|
-
# Context Map
|
|
40
|
-
|
|
41
|
-
## Contexts
|
|
42
|
-
|
|
43
|
-
- [Ordering](./src/ordering/CONTEXT.md) — receives and tracks customer orders
|
|
44
|
-
- [Billing](./src/billing/CONTEXT.md) — generates invoices and processes payments
|
|
45
|
-
- [Fulfillment](./src/fulfillment/CONTEXT.md) — manages warehouse picking and shipping
|
|
46
|
-
|
|
47
|
-
## Relationships
|
|
48
|
-
|
|
49
|
-
- **Ordering → Fulfillment**: Ordering emits `OrderPlaced` events; Fulfillment consumes them to start picking
|
|
50
|
-
- **Fulfillment → Billing**: Fulfillment emits `ShipmentDispatched` events; Billing consumes them to generate invoices
|
|
51
|
-
- **Ordering ↔ Billing**: Shared types for `CustomerId` and `Money`
|
|
52
|
-
```
|
|
53
|
-
|
|
54
|
-
The skill infers which structure applies:
|
|
55
|
-
|
|
56
|
-
- If `CONTEXT-MAP.md` exists, read it to find contexts
|
|
57
|
-
- If only a root `CONTEXT.md` exists, single context
|
|
58
|
-
- If neither exists, create a root `CONTEXT.md` lazily when the first term is resolved
|
|
59
|
-
|
|
60
|
-
When multiple contexts exist, infer which one the current topic relates to. If unclear, ask.
|
|
@@ -1,74 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: domain-modeling
|
|
3
|
-
description: Build and sharpen a project's domain model. Use when the user wants to pin down domain terminology or a ubiquitous language, record an architectural decision, or when another skill needs to maintain the domain model.
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# Domain Modeling
|
|
7
|
-
|
|
8
|
-
Actively build and sharpen the project's domain model as you design. This is the *active* discipline — challenging terms, inventing edge-case scenarios, and writing the glossary and decisions down the moment they crystallise. (Merely *reading* `CONTEXT.md` for vocabulary is not this skill — that's a one-line habit any skill can do. This skill is for when you're changing the model, not just consuming it.)
|
|
9
|
-
|
|
10
|
-
## File structure
|
|
11
|
-
|
|
12
|
-
Most repos have a single context:
|
|
13
|
-
|
|
14
|
-
```
|
|
15
|
-
/
|
|
16
|
-
├── CONTEXT.md
|
|
17
|
-
├── docs/
|
|
18
|
-
│ └── adr/
|
|
19
|
-
│ ├── 0001-event-sourced-orders.md
|
|
20
|
-
│ └── 0002-postgres-for-write-model.md
|
|
21
|
-
└── src/
|
|
22
|
-
```
|
|
23
|
-
|
|
24
|
-
If a `CONTEXT-MAP.md` exists at the root, the repo has multiple contexts. The map points to where each one lives:
|
|
25
|
-
|
|
26
|
-
```
|
|
27
|
-
/
|
|
28
|
-
├── CONTEXT-MAP.md
|
|
29
|
-
├── docs/
|
|
30
|
-
│ └── adr/ ← system-wide decisions
|
|
31
|
-
├── src/
|
|
32
|
-
│ ├── ordering/
|
|
33
|
-
│ │ ├── CONTEXT.md
|
|
34
|
-
│ │ └── docs/adr/ ← context-specific decisions
|
|
35
|
-
│ └── billing/
|
|
36
|
-
│ ├── CONTEXT.md
|
|
37
|
-
│ └── docs/adr/
|
|
38
|
-
```
|
|
39
|
-
|
|
40
|
-
Create files lazily — only when you have something to write. If no `CONTEXT.md` exists, create one when the first term is resolved. If no `docs/adr/` exists, create it when the first ADR is needed.
|
|
41
|
-
|
|
42
|
-
## During the session
|
|
43
|
-
|
|
44
|
-
### Challenge against the glossary
|
|
45
|
-
|
|
46
|
-
When the user uses a term that conflicts with the existing language in `CONTEXT.md`, call it out immediately. "Your glossary defines 'cancellation' as X, but you seem to mean Y — which is it?"
|
|
47
|
-
|
|
48
|
-
### Sharpen fuzzy language
|
|
49
|
-
|
|
50
|
-
When the user uses vague or overloaded terms, propose a precise canonical term. "You're saying 'account' — do you mean the Customer or the User? Those are different things."
|
|
51
|
-
|
|
52
|
-
### Discuss concrete scenarios
|
|
53
|
-
|
|
54
|
-
When domain relationships are being discussed, stress-test them with specific scenarios. Invent scenarios that probe edge cases and force the user to be precise about the boundaries between concepts.
|
|
55
|
-
|
|
56
|
-
### Cross-reference with code
|
|
57
|
-
|
|
58
|
-
When the user states how something works, check whether the code agrees. If you find a contradiction, surface it: "Your code cancels entire Orders, but you just said partial cancellation is possible — which is right?"
|
|
59
|
-
|
|
60
|
-
### Update CONTEXT.md inline
|
|
61
|
-
|
|
62
|
-
When a term is resolved, update `CONTEXT.md` right there. Don't batch these up — capture them as they happen. Use the format in [CONTEXT-FORMAT.md](./CONTEXT-FORMAT.md).
|
|
63
|
-
|
|
64
|
-
`CONTEXT.md` should be totally devoid of implementation details. Do not treat `CONTEXT.md` as a spec, a scratch pad, or a repository for implementation decisions. It is a glossary and nothing else.
|
|
65
|
-
|
|
66
|
-
### Offer ADRs sparingly
|
|
67
|
-
|
|
68
|
-
Only offer to create an ADR when all three are true:
|
|
69
|
-
|
|
70
|
-
1. **Hard to reverse** — the cost of changing your mind later is meaningful
|
|
71
|
-
2. **Surprising without context** — a future reader will wonder "why did they do it this way?"
|
|
72
|
-
3. **The result of a real trade-off** — there were genuine alternatives and you picked one for specific reasons
|
|
73
|
-
|
|
74
|
-
If any of the three is missing, skip the ADR. Use the format in [ADR-FORMAT.md](./ADR-FORMAT.md).
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: grilling
|
|
3
|
-
description: Grill the user relentlessly about a plan, decision, or idea. Use when the user wants to stress-test their thinking, or uses any 'grill' trigger phrases.
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
Interview me relentlessly about every aspect of this until we reach a shared understanding. Walk down each branch of the decision tree, resolving dependencies between decisions one-by-one. For each question, provide your recommended answer.
|
|
7
|
-
|
|
8
|
-
Ask the questions one at a time, waiting for feedback on each question before continuing. Asking multiple questions at once is bewildering.
|
|
9
|
-
|
|
10
|
-
If a *fact* can be found by exploring the environment (filesystem, tools, etc.), look it up rather than asking me. The *decisions*, though, are mine — put each one to me and wait for my answer.
|
|
11
|
-
|
|
12
|
-
Do not act on it until I confirm we have reached a shared understanding.
|
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: emphasise
|
|
3
|
-
description: The bold, italic, and backtick conventions for agent-facing Markdown — what **bold**, _italics_, and `code` each mean, and how to use them to make text instantly scannable. Use when writing or editing a skill, prompt, or doc the agent reads, or when the user asks how to emphasise a term.
|
|
4
|
-
disable-model-invocation: false
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
Emphasis is an **attention budget** designed to make text highly scannable on a first pass. A marker works by making one token stand out from its neighbours; spend it only where it helps the eye jump to the core meaning of a paragraph.
|
|
8
|
-
|
|
9
|
-
Three markers, three jobs: `_italics_` highlights _core concepts and themes_, **bold** anchors _hard entities and structures_, and `` `code` `` protects _literal syntax_.
|
|
10
|
-
|
|
11
|
-
## `_italics_` — the scannability anchor
|
|
12
|
-
|
|
13
|
-
This is your primary tool for helping a reader (human or AI) skim a paragraph and instantly grasp its subject without reading every word. It does not mean the word is a strict variable; it means the word is the thematic core of the sentence.
|
|
14
|
-
|
|
15
|
-
1. _Concept / Keyword_ — highlights architectural ideas, patterns, or focal points (e.g., _minimum viable product_, _god classes_, _domain segregation_). This draws the eye to the "what are we talking about" of the sentence.
|
|
16
|
-
2. _Stress_ — the pivot the meaning turns on: "the same _way_ on every run, not the same output".
|
|
17
|
-
3. _Mention_ — a word or phrase named rather than used: a coined leading word (_tight_), or prompt text quoted as an example (_be thorough_).
|
|
18
|
-
4. _Label_ — a short tag classifying the block it opens: `_Failure mode._` Mark the tag text and nothing else.
|
|
19
|
-
|
|
20
|
-
## `**bold**` — the structural pointer
|
|
21
|
-
|
|
22
|
-
Bold carries heavy weight. It is reserved for strict, defined entities, specific UI/document locations, and operative actions.
|
|
23
|
-
|
|
24
|
-
1. **Entity / Location** — a defined concept with an authoritative definition, or a specific destination like a file, document, or section (e.g., an extension gets reported in **Findings**).
|
|
25
|
-
2. **Action / Point** — the operative clause of a bullet or step, front-loaded so the list can be skimmed by its first few words. **One trigger per branch.** Bold the instruction; leave the explanation after it plain.
|
|
26
|
-
|
|
27
|
-
## `` `code` `` — this is literal
|
|
28
|
-
|
|
29
|
-
Backticks are not emphasis. They mean "reproduce this exactly": paths, filenames, flags, field names, identifiers, commands. A concept that is also an identifier takes backticks in its identifier sense and italics in its concept sense — the `description` field is what you edit, but the _description_ is what makes a skill model-invoked.
|
|
30
|
-
|
|
31
|
-
## Choosing
|
|
32
|
-
|
|
33
|
-
| Test | Marker |
|
|
34
|
-
|---|---|
|
|
35
|
-
| Is it a key concept, pattern, or keyword I want the eye to catch when skimming? | `_italics_` (concept) |
|
|
36
|
-
| Is it a defined strict entity, document name, or UI element? | `**bold**` (entity) |
|
|
37
|
-
| Is it the operative point of a bullet? | `**bold**` (action) |
|
|
38
|
-
| Would the sentence be misread without it? | `_italics_` (stress) |
|
|
39
|
-
| Is it a word or quoted phrase being named rather than used? | `_italics_` (mention) |
|
|
40
|
-
| Would you type it verbatim into a terminal or a file? | `` `backticks` `` |
|
|
41
|
-
| None of the above | plain text |
|
|
42
|
-
|
|
43
|
-
## Failure modes
|
|
44
|
-
|
|
45
|
-
- _Emphasis inflation._ So much is marked that nothing reads as marked. The fix is subtraction: cut until what remains is exactly enough to allow a reader to skim and understand the paragraph.
|
|
46
|
-
- _Marker collision._ The same word bolded in one passage and italicised in another. Decide whether the word is a hard entity (**bold**) or a thematic concept (_italics_) and stick to it.
|
|
47
|
-
- _Double marking._ `**_both at once_**` spends two signals on one job and looks messy. Pick one.
|
|
48
|
-
- _Runaway italics._ Italics past a few words — a whole paragraph or a long quotation. Concepts are punchy; if you italicise a whole sentence, you destroy the scannability.
|
|
49
|
-
- _Bold as outline._ Bolded lead-ins carrying a hierarchy across paragraphs, where a heading (`##`) or list is the real answer.
|
|
@@ -1,80 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: unslop
|
|
3
|
-
description: Cut AI tells from any writing. Must always apply.
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# Unslop
|
|
7
|
-
|
|
8
|
-
Edit text to remove AI patterns and add human voice.
|
|
9
|
-
|
|
10
|
-
## Process
|
|
11
|
-
|
|
12
|
-
1. Scan for the patterns below.
|
|
13
|
-
2. Rewrite. Preserve meaning, match intended tone.
|
|
14
|
-
3. Add soul (see next section).
|
|
15
|
-
4. Self-audit: "What makes this obviously AI generated?" Fix remaining tells.
|
|
16
|
-
|
|
17
|
-
## Adding soul
|
|
18
|
-
|
|
19
|
-
Removing patterns is half the job. Sterile, voiceless writing is just as obvious.
|
|
20
|
-
|
|
21
|
-
- **Have opinions.** React to facts instead of neutrally listing pros and cons.
|
|
22
|
-
- **Vary rhythm.** Short sentences. Then longer ones that take their time. Mix it up.
|
|
23
|
-
- **Acknowledge complexity.** "Impressive but also kind of unsettling" beats "impressive."
|
|
24
|
-
- **Use "I" when it fits.** First person isn't unprofessional.
|
|
25
|
-
- **Let some mess in.** Perfect structure looks machine-made.
|
|
26
|
-
- **Be specific.** Not "this is concerning" but "there's something unsettling about agents churning away at 3am."
|
|
27
|
-
|
|
28
|
-
## Patterns to detect and fix
|
|
29
|
-
|
|
30
|
-
### Content
|
|
31
|
-
|
|
32
|
-
1. **Puffery.** "pivotal moment", "testament to", "evolving landscape", "setting the stage for", "indelible mark", "deeply rooted". Cut puffery, state what happened.
|
|
33
|
-
2. **Name-dropping.** Listing media outlets without context. Pick one, say what was said.
|
|
34
|
-
3. **Superficial -ing phrases.** "highlighting...", "ensuring...", "reflecting...", "showcasing...", "fostering...". Delete or expand with real sources.
|
|
35
|
-
4. **Promotional language.** "nestled", "vibrant", "breathtaking", "groundbreaking", "renowned", "stunning", "must-visit". Use neutral descriptions.
|
|
36
|
-
5. **Vague attributions.** "Experts believe", "Industry reports suggest", "Some critics argue". Name the source or delete.
|
|
37
|
-
6. **Formulaic challenges.** "Despite challenges... continues to thrive." Replace with specific facts.
|
|
38
|
-
|
|
39
|
-
### Language
|
|
40
|
-
|
|
41
|
-
7. **AI vocabulary.** Additionally, crucial, delve, enduring, enhance, fostering, garner, interplay, intricate, landscape (abstract), pivotal, showcase, tapestry (abstract), testament, underscore, vibrant. Replace with plain words.
|
|
42
|
-
8. **Fancy ways to say "is".** "serves as", "stands as", "boasts", "features". Just say "is" or "has".
|
|
43
|
-
9. **"Not just X, but Y."** State the point directly instead.
|
|
44
|
-
10. **Rule of three.** Forcing ideas into groups of three. Use the natural number.
|
|
45
|
-
11. **Synonym cycling.** Protagonist, main character, central figure, hero all in one paragraph. Pick one, repeat it.
|
|
46
|
-
12. **False ranges.** "from X to Y" where X and Y aren't on a meaningful scale. List topics directly.
|
|
47
|
-
|
|
48
|
-
### Style
|
|
49
|
-
|
|
50
|
-
13. **Em dash overuse.** Avoid em dashes entirely. Use periods or commas only (no parentheses, no en dashes, no hyphen-as-dash substitutes). Em dashes are an AI tell, and reaching for parentheses instead just trades one tell for another. If a thought needs separation, end the sentence or use a comma.
|
|
51
|
-
14. **Colon overuse.** Colons are fine before a list or example. Not as mid-sentence connectors. "If you're coming from traditional automation: instead of registering event handlers, you describe conditions" adds nothing with the colon. Rewrite to let the point stand on its own without comparison framing. "Describing when the scheduler should fire works best as plain English." Same meaning, no crutch punctuation.
|
|
52
|
-
15. **Boldface overuse.** Don't bold every proper noun or acronym.
|
|
53
|
-
16. **Inline-header lists.** The tell is a bold label and colon that restates the line: "**Performance:** Performance improved...". Convert those to prose. A bold lead-in that ends in a period, names the item, and is followed by genuinely new detail ("**Schema in TypeScript.** Tables live in one file.") is fine, not a tell.
|
|
54
|
-
17. **Title case headings.** Use sentence case.
|
|
55
|
-
18. **Decorative emojis.** Remove from headings and bullets.
|
|
56
|
-
19. **Curly quotes.** Replace with straight quotes.
|
|
57
|
-
|
|
58
|
-
### Communication artifacts
|
|
59
|
-
|
|
60
|
-
20. **Chatbot phrases.** "I hope this helps!", "Let me know if...", "Of course!", "Certainly!", "Found the smoking gun!" Remove.
|
|
61
|
-
21. **Cutoff disclaimers.** "While specific details are limited..." Find sources or remove.
|
|
62
|
-
22. **Sycophantic tone.** "Great question! You're absolutely right!" Respond directly.
|
|
63
|
-
|
|
64
|
-
### Filler
|
|
65
|
-
|
|
66
|
-
23. **Filler phrases.** "In order to" becomes "To". "Due to the fact that" becomes "Because". "It is important to note that" gets deleted.
|
|
67
|
-
24. **Excessive hedging.** "could potentially possibly be argued that it might" becomes "may".
|
|
68
|
-
25. **Generic conclusions.** "The future looks bright." State specific plans or facts.
|
|
69
|
-
|
|
70
|
-
### Jargon
|
|
71
|
-
|
|
72
|
-
26. **Abstract metaphor nouns.** Substrate, wedge, vector, locus, vantage, nexus, primitive (as noun), harness (as metaphor), surface (as in "API surface"), bedrock, scaffolding (as metaphor), modality, paradigm, gold-plating, ratchet (as metaphor), evacuate (for moving code), endgame, north star, flywheel. These read as technical but usually have a plainer concrete word. "Substrate" becomes "base". "Wedge in" becomes "add". "Vector" becomes "way" or "method". "Gold-plating" becomes "more than the job needs". "Ratchet" becomes the mechanism's real name or "a limit that only tightens". "Evacuate" becomes "move out". "Endgame" becomes "the last phase". Pick the concrete word.
|
|
73
|
-
|
|
74
|
-
### Plain speech
|
|
75
|
-
|
|
76
|
-
27. **Say what it does, not how it feels.** "the database stays close at hand", "SQL you can read", "types that follow your schema" name a feeling. The fix names the mechanism or a number: "`.toSQL()` returns the exact string sent to the database", "a column rename fails the build". Ask what the sentence tells the reader to do or know, then write that. If you can't restate it as a concrete instruction, fact, or number, cut it. One more check: if the sentence could appear unchanged in another project's docs, it says nothing about this one. Cut it.
|
|
77
|
-
28. **Shorten or split dense sentences.** If the reader has to backtrack to parse a sentence, break it in two or drop clauses. One idea per sentence.
|
|
78
|
-
29. **Active voice.** Prefer it. Catch "is/are/was/were + past participle" and name the actor: "queries are validated" becomes "the compiler validates queries", "the file is parsed by the loader" becomes "the loader parses the file". Passive is fine only when the actor is unknown or genuinely doesn't matter.
|
|
79
|
-
30. **Cut adverbs, or use a stronger verb.** "runs quickly" becomes "is fast" or the number. "significantly improves" becomes the measured delta. An adverb propping up a weak verb means the verb is wrong.
|
|
80
|
-
31. **Prefer the plain word.** "utilize" becomes "use", "leverage" becomes "use", "facilitate" becomes "help", "numerous" becomes "many", "in the event that" becomes "if". The fancier synonym is rarely clearer.
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "task-manager",
|
|
3
|
-
"description": "Query and drive a tree of plans, phases and tasks through hooks, with the plan's decisions and the project vocabulary kept beside them.",
|
|
4
|
-
"version": "0.1.0",
|
|
5
|
-
"license": "UNLICENSED",
|
|
6
|
-
"skills": [
|
|
7
|
-
"./skills/task-manager",
|
|
8
|
-
"./skills/vocabulary",
|
|
9
|
-
"./skills/decisions"
|
|
10
|
-
]
|
|
11
|
-
}
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"hooks": {
|
|
3
|
-
"SessionStart": [
|
|
4
|
-
{
|
|
5
|
-
"hooks": [
|
|
6
|
-
{ "type": "command", "command": "g3n-skills hook sync-tree", "timeout": 30 }
|
|
7
|
-
]
|
|
8
|
-
}
|
|
9
|
-
],
|
|
10
|
-
"PreToolUse": [
|
|
11
|
-
{
|
|
12
|
-
"matcher": "Read|Grep|Glob",
|
|
13
|
-
"hooks": [
|
|
14
|
-
{ "type": "command", "command": "g3n-skills hook guard-tree", "timeout": 10 }
|
|
15
|
-
]
|
|
16
|
-
}
|
|
17
|
-
]
|
|
18
|
-
}
|
|
19
|
-
}
|