@g3nomaly/skills 1.0.0 → 1.0.1
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 +19 -16
- package/dist/cli/adapter.d.ts.map +1 -1
- package/dist/cli/adapter.js +39 -63
- package/dist/cli/adapter.js.map +1 -1
- package/dist/cli/commands/add.d.ts +7 -10
- package/dist/cli/commands/add.d.ts.map +1 -1
- package/dist/cli/commands/add.js +12 -98
- package/dist/cli/commands/add.js.map +1 -1
- package/dist/cli/commands/ls.d.ts +9 -2
- package/dist/cli/commands/ls.d.ts.map +1 -1
- package/dist/cli/commands/ls.js +21 -5
- package/dist/cli/commands/ls.js.map +1 -1
- package/dist/cli/commands/remove.d.ts +7 -7
- package/dist/cli/commands/remove.d.ts.map +1 -1
- package/dist/cli/commands/remove.js +11 -56
- package/dist/cli/commands/remove.js.map +1 -1
- package/dist/cli/commands/source.d.ts +29 -0
- package/dist/cli/commands/source.d.ts.map +1 -0
- package/dist/cli/commands/source.js +31 -0
- package/dist/cli/commands/source.js.map +1 -0
- package/dist/cli/commands/update.d.ts +6 -6
- package/dist/cli/commands/update.d.ts.map +1 -1
- package/dist/cli/commands/update.js +9 -43
- package/dist/cli/commands/update.js.map +1 -1
- package/dist/cli/index.js +79 -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 +24 -0
- package/dist/packages/install.d.ts.map +1 -0
- package/dist/packages/install.js +47 -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 +22 -0
- package/dist/registry/locate.d.ts.map +1 -0
- package/dist/registry/locate.js +81 -0
- package/dist/registry/locate.js.map +1 -0
- package/dist/registry/manifest.d.ts +9 -0
- package/dist/registry/manifest.d.ts.map +1 -0
- package/dist/registry/manifest.js +14 -0
- package/dist/registry/manifest.js.map +1 -0
- package/dist/registry/readSkillDir.d.ts +8 -6
- package/dist/registry/readSkillDir.d.ts.map +1 -1
- package/dist/registry/readSkillDir.js +19 -24
- package/dist/registry/readSkillDir.js.map +1 -1
- package/dist/registry/readSource.d.ts +9 -0
- package/dist/registry/readSource.d.ts.map +1 -0
- package/dist/registry/readSource.js +30 -0
- package/dist/registry/readSource.js.map +1 -0
- package/dist/registry/types.d.ts +16 -16
- package/dist/registry/types.d.ts.map +1 -1
- package/dist/registry/types.js +13 -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 +7 -0
- package/dist/utils/frontmatter.d.ts.map +1 -0
- package/dist/utils/frontmatter.js +20 -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,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
|
-
}
|
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: decisions
|
|
3
|
-
description: Record and look up the decisions a plan has made, stored as numbered files inside the plan and reached through hooks. Use when a hard-to-reverse choice is made while planning or working a phase, when a choice replaces an earlier one, when the user asks why something was done a certain way, or when another skill needs a plan's decisions.
|
|
4
|
-
registryDependencies: [task-manager, domain-modeling]
|
|
5
|
-
disable-model-invocation: false
|
|
6
|
-
---
|
|
7
|
-
|
|
8
|
-
A **decision** is one paragraph saying what was chosen and why, filed under the plan it belongs to. Its job is to stop the next session from reopening a question this one closed.
|
|
9
|
-
|
|
10
|
-
The hooks come from the `/task-manager` skill. Load it first when `g3n-skills` is not on `PATH`.
|
|
11
|
-
|
|
12
|
-
**Reach decisions through the hooks only.** They sit inside the tree, in `<plan>/decisions/<id>.md`, so `guard-tree` denies a direct read.
|
|
13
|
-
|
|
14
|
-
| Hook | Does | Use it when |
|
|
15
|
-
|---|---|---|
|
|
16
|
-
| `list-decisions` | Returns a plan's decisions in numbered order, metadata only | starting a phase, or checking whether a question is already closed |
|
|
17
|
-
| `get-decision` | Returns one decision in full | the title is not enough |
|
|
18
|
-
| `add-decision` | Numbers, dates and writes a new decision from stdin. **Writes.** | a choice passed the three tests below |
|
|
19
|
-
|
|
20
|
-
Copy each invocation from [`references/usage.md`](references/usage.md). `add-decision` takes the decision text on stdin, as shown there.
|
|
21
|
-
|
|
22
|
-
- **`--in <plan>`** is required everywhere. Numbers restart per plan.
|
|
23
|
-
- **`--status`** is `proposed`, `accepted`, `deprecated` or `superseded`. `add-decision` defaults to `accepted`. `list-decisions` filters by it.
|
|
24
|
-
- **`--supersedes <id>`** also moves the named decision to `superseded`.
|
|
25
|
-
- `get-decision` exits `1` for an unknown id. `list-decisions` prints `[]` for a plan with none. `add-decision` exits `1` when nothing was piped in.
|
|
26
|
-
|
|
27
|
-
## When to record
|
|
28
|
-
|
|
29
|
-
All three must hold. The `/domain-modeling` skill argues each one in its ADR format, with examples of what qualifies.
|
|
30
|
-
|
|
31
|
-
1. **Hard to reverse.** Changing course later costs real work.
|
|
32
|
-
2. **Surprising without context.** A reader of the code would ask why.
|
|
33
|
-
3. **A real trade-off.** There was an alternative, and it lost for a reason.
|
|
34
|
-
|
|
35
|
-
## Writing one
|
|
36
|
-
|
|
37
|
-
One to three sentences: the context, the choice, the reason. Name the alternative that lost. The title is the choice itself in a few words, because `list-decisions` shows titles only and the title has to close the question unaided.
|
|
38
|
-
|
|
39
|
-
**A decision is never edited.** A changed mind is a new decision with `--supersedes`, so the trail of reasons stays readable.
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
# Decision hooks — usage
|
|
2
|
-
|
|
3
|
-
Where decisions sit and how each hook is called. This is the disclosed reference for the [`decisions`](../SKILL.md) skill.
|
|
4
|
-
|
|
5
|
-
## On disk
|
|
6
|
-
|
|
7
|
-
```
|
|
8
|
-
docs/task-manager/auth-rework/
|
|
9
|
-
├── auth-rework.md
|
|
10
|
-
└── decisions/
|
|
11
|
-
├── 0001-use-jwt-for-sessions.md
|
|
12
|
-
└── 0002-use-opaque-tokens.md
|
|
13
|
-
```
|
|
14
|
-
|
|
15
|
-
## Invocations
|
|
16
|
-
|
|
17
|
-
```bash
|
|
18
|
-
g3n-skills hook list-decisions --in auth-rework --status accepted
|
|
19
|
-
g3n-skills hook get-decision --in auth-rework --id 0001-use-jwt-for-sessions
|
|
20
|
-
|
|
21
|
-
g3n-skills hook add-decision --in auth-rework --title "Use opaque tokens" \
|
|
22
|
-
--supersedes 0001-use-jwt-for-sessions <<'TEXT'
|
|
23
|
-
Sessions move to opaque tokens looked up per request. Revoking a JWT before
|
|
24
|
-
expiry needed a denylist, which cost the statelessness we chose JWTs for.
|
|
25
|
-
TEXT
|
|
26
|
-
```
|
|
@@ -1,99 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: task-manager
|
|
3
|
-
description: Query and drive a tree of plans, phases and tasks that lives on disk as folders of Markdown files with a rebuilt index per folder. Use whenever the user asks what to work on next, refers to a plan, phase or task by name or TASK-### id, wants something moved to open, in-progress, in-review, completed or blocked, or wants finished work cleared out. Every read and every write goes through the `g3n-skills hook` commands — never open a tree file directly.
|
|
4
|
-
disable-model-invocation: false
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
## Before anything else
|
|
8
|
-
|
|
9
|
-
```bash
|
|
10
|
-
command -v g3n-skills >/dev/null 2>&1 || bun add -g @g3nomaly/skills
|
|
11
|
-
```
|
|
12
|
-
|
|
13
|
-
If the command exists, print nothing and carry on.
|
|
14
|
-
|
|
15
|
-
The tree is **three levels deep** and nothing else: the root holds **plans**, a plan holds **phases**, a phase holds **tasks**.
|
|
16
|
-
|
|
17
|
-
```
|
|
18
|
-
docs/task-manager/ # set by skills.settings.filetreeRoot
|
|
19
|
-
├── root-index.json # the plans, in order
|
|
20
|
-
└── auth-rework/
|
|
21
|
-
├── auth-rework.md # the plan itself
|
|
22
|
-
├── plan-index.json # the phases, in order
|
|
23
|
-
└── 01-schema/
|
|
24
|
-
├── 01-schema.md # the phase itself
|
|
25
|
-
├── phase-index.json # the tasks, in order
|
|
26
|
-
└── tasks/
|
|
27
|
-
└── TASK-006.md
|
|
28
|
-
```
|
|
29
|
-
|
|
30
|
-
Every `.md` file opens with frontmatter carrying exactly the fields its index entry carries. **The index is rebuilt from the files, never edited** — a hand-written index is overwritten on the next sync.
|
|
31
|
-
|
|
32
|
-
**Order is the alphabetical order of the names on disk.** There is no rank field, no queue number and nothing to renumber: `01-schema` runs before `02-api` because `0` sorts before `2`. To reorder, rename.
|
|
33
|
-
|
|
34
|
-
**States** are `open`, `in-progress`, `in-review`, `completed` and `blocked`, and every level uses the same five.
|
|
35
|
-
|
|
36
|
-
## Never open a tree file
|
|
37
|
-
|
|
38
|
-
`Read`, `Grep` and `Glob` are the wrong tools here — **`guard-tree` denies them** on anything inside the tree, and says which hook to run instead. They are the interface: each one names its flags in this table and reports what went wrong on stderr.
|
|
39
|
-
|
|
40
|
-
| Hook | Does | Use it when |
|
|
41
|
-
|---|---|---|
|
|
42
|
-
| `next-entry` | Returns the first entry of a queue that is not `completed` or `blocked`, in full | starting work — "what's next", "give me the next task" |
|
|
43
|
-
| `get-entry` | Returns one named plan, phase or task, in full | the user names something — "open auth-rework", "show TASK-006" |
|
|
44
|
-
| `list-entries` | Returns one folder's entries in queue order, metadata only | surveying — "what phases are in this plan", "what's blocked" |
|
|
45
|
-
| `set-state` | Moves one entry to a new state and rebuilds its index | work starts, stalls, lands, or goes up for review |
|
|
46
|
-
| `cleanup` | Deletes every `completed` entry, and `blocked` too with `--blocked` | the tree has filled up with finished work |
|
|
47
|
-
| `sync-tree` | Creates what is missing and rebuilds every index | a file was added or renamed by hand; otherwise it runs itself |
|
|
48
|
-
| `guard-tree` | Denies a file tool aimed at the tree | never by hand — the harness fires it |
|
|
49
|
-
|
|
50
|
-
The last two are **registered in `hooks/hooks.json` and fire on their own**; never invoke them as a step:
|
|
51
|
-
|
|
52
|
-
| Hook | Event | Matcher | What it does |
|
|
53
|
-
|---|---|---|---|
|
|
54
|
-
| `sync-tree` | `SessionStart` | — | Rebuilds every index. Exit `1` is non-blocking: the session opens with stale indexes and the reason goes to the user. |
|
|
55
|
-
| `guard-tree` | `PreToolUse` | `Read\|Grep\|Glob` | Returns `deny` for a guarded path, nothing otherwise. Only a path the call states outright is checked, so an unscoped `Grep` still runs. |
|
|
56
|
-
|
|
57
|
-
Run the other four from the plugin root:
|
|
58
|
-
|
|
59
|
-
```bash
|
|
60
|
-
g3n-skills hook next-entry --in auth-rework --pretty
|
|
61
|
-
g3n-skills hook get-entry --id TASK-006
|
|
62
|
-
g3n-skills hook list-entries --in auth-rework --status blocked
|
|
63
|
-
g3n-skills hook set-state --id TASK-006 --to in-progress
|
|
64
|
-
g3n-skills hook cleanup --blocked --dry-run --pretty
|
|
65
|
-
```
|
|
66
|
-
|
|
67
|
-
## Flags they share
|
|
68
|
-
|
|
69
|
-
- **`--project <dir>`** — the folder holding `.g3n.config.json`, default the working directory. The tree root comes from `skills.settings.filetreeRoot` in it.
|
|
70
|
-
- **`--root <dir>`** — the tree folder verbatim, skipping the config. Use it only when there is no config to read.
|
|
71
|
-
- **`--pretty`** — indented JSON. Leave it off when piping.
|
|
72
|
-
- **`--id <name>`** — a plan or phase name, or a task id like `TASK-006`. One name is searched for across the whole tree; two entries answering to it is an error, not a choice to make.
|
|
73
|
-
- **`--in <name>`** — whose entries to list. Omit it for the plans at the root.
|
|
74
|
-
|
|
75
|
-
Where they deliberately differ:
|
|
76
|
-
|
|
77
|
-
- `next-entry` and `get-entry` **return exactly one thing**, so nothing found is a failure — exit `1`.
|
|
78
|
-
- `list-entries` and `cleanup` **return a list**, so `[]` is a real answer — exit `0`.
|
|
79
|
-
- `get-entry`, `next-entry` and `list-entries` are read-only; **`set-state`, `cleanup` and `sync-tree` write to disk.** Run `cleanup` with `--dry-run` before running it for real.
|
|
80
|
-
|
|
81
|
-
## Terms and decisions
|
|
82
|
-
|
|
83
|
-
Two more things live in the tree, each with its own hooks and its own skill:
|
|
84
|
-
|
|
85
|
-
- **The vocabulary**, one file at the tree root. `get-entry` and `next-entry` attach a `vocabulary` array naming every term the entry mentions. Use the `/vocabulary` skill to read that array, look a word up, or record one.
|
|
86
|
-
- **A plan's decisions**, in `<plan>/decisions/`. Use the `/decisions` skill to list, read or record them.
|
|
87
|
-
|
|
88
|
-
## What the hooks will not do
|
|
89
|
-
|
|
90
|
-
- **A state change is only the `status:` line.** What the transition implies — the reason a task is blocked, the outcome written into the body — is prose, and prose is written afterwards with an ordinary edit to the body of that one file.
|
|
91
|
-
- **Creating a plan, phase or task is not a hook.** Write the `.md` file where the tree expects it, then run `sync-tree`; the index picks it up.
|
|
92
|
-
- **`cleanup` deletes.** A removed plan takes its phases and tasks with it. Confirm with the user before running it without `--dry-run`.
|
|
93
|
-
|
|
94
|
-
## When it goes wrong
|
|
95
|
-
|
|
96
|
-
Everything is checked against its schema on the way in, and a failure names the file and the field. Two are worth recognising:
|
|
97
|
-
|
|
98
|
-
- _`"<name>" is ambiguous`_ — two entries share a name. Rename one; nothing else will work until then.
|
|
99
|
-
- _`is "X" but it was read as "Y"`_ — the `name` or `id` in the frontmatter disagrees with the folder or file holding it. Fix the frontmatter, or rename the file, then `sync-tree`.
|
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: vocabulary
|
|
3
|
-
description: Keep one word per concept across sessions, stored in the task-manager tree and reached through hooks. Use when about to name a domain concept in code, a task or a doc, when the user corrects a word, when two words are in use for one thing, or when another skill needs a term looked up or recorded.
|
|
4
|
-
registryDependencies: [task-manager, domain-modeling]
|
|
5
|
-
disable-model-invocation: false
|
|
6
|
-
---
|
|
7
|
-
|
|
8
|
-
Every session starts without the last one's words, so names _drift_: the _phase_ of Monday is the _stage_ of Tuesday, and by Friday the code has both. The vocabulary is the one list that stops it. Each **term** carries a definition and the **avoided words** it replaces.
|
|
9
|
-
|
|
10
|
-
The hooks come from the `/task-manager` skill. Load it first when `g3n-skills` is not on `PATH`.
|
|
11
|
-
|
|
12
|
-
The terms live in `vocabulary.md` at the tree root. **Reach them through the hooks only.** `guard-tree` denies a direct read, and a hand edit is overwritten by the next `set-term`.
|
|
13
|
-
|
|
14
|
-
| Hook | Does | Use it when |
|
|
15
|
-
|---|---|---|
|
|
16
|
-
| `get-term` | Returns one term, found by its name or by an avoided word | about to use a word for a domain concept |
|
|
17
|
-
| `list-terms` | Returns every term, sorted by name | starting work in an unfamiliar area |
|
|
18
|
-
| `set-term` | Adds a term, or replaces its definition and avoided words. **Writes.** | a concept got a name, or a name got sharper |
|
|
19
|
-
| `remove-term` | Deletes one term. **Writes.** | the concept left the project |
|
|
20
|
-
|
|
21
|
-
Copy each invocation from [`references/usage.md`](references/usage.md).
|
|
22
|
-
|
|
23
|
-
They share `--project`, `--root` and `--pretty` with the task-manager hooks. `get-term` and `remove-term` exit `1` when nothing answers to the name. `list-terms` prints `[]` for an empty vocabulary.
|
|
24
|
-
|
|
25
|
-
## Reading an answer
|
|
26
|
-
|
|
27
|
-
`get-term` reports how it found the term in `matched`:
|
|
28
|
-
|
|
29
|
-
- **`"term"`** means the word is the right one. Use it as spelled.
|
|
30
|
-
- **`"avoid"`** means the word is a retired synonym. Use the returned `term` instead, in prose and in identifiers alike.
|
|
31
|
-
|
|
32
|
-
`get-entry` and `next-entry` attach a `vocabulary` array to every plan, phase and task they return. It lists each term the entry mentions, and under `avoided` the retired words the entry still uses. Treat a non-empty `avoided` as a defect in the entry and write the term in whatever you produce from it.
|
|
33
|
-
|
|
34
|
-
## Recording a term
|
|
35
|
-
|
|
36
|
-
**Record on the second sighting.** One use of a word is prose. The same concept named twice, or named differently by two people, is a term. A correction from the user is always a term.
|
|
37
|
-
|
|
38
|
-
- **Definition.** One or two sentences saying what the thing _is_. Leave out how it is built.
|
|
39
|
-
- **`--avoid`.** The synonyms actually seen, comma-separated. `set-term` refuses a word another term already owns, which is how two terms are kept from claiming one meaning.
|
|
40
|
-
- **`set-term` replaces.** Pass the full definition and the full avoid list every time, since flags left out are cleared.
|
|
41
|
-
|
|
42
|
-
A term whose meaning is still contested is sharpened with the `/domain-modeling` skill first, then stored here.
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
# Term hooks — usage
|
|
2
|
-
|
|
3
|
-
How each hook is called, and what the file they write looks like. This is the disclosed reference for the [`vocabulary`](../SKILL.md) skill.
|
|
4
|
-
|
|
5
|
-
## Invocations
|
|
6
|
-
|
|
7
|
-
```bash
|
|
8
|
-
g3n-skills hook get-term --term stage
|
|
9
|
-
g3n-skills hook list-terms --pretty
|
|
10
|
-
g3n-skills hook set-term --term Phase --definition "One step of a plan, holding tasks." --avoid "stage, milestone"
|
|
11
|
-
g3n-skills hook remove-term --term Phase
|
|
12
|
-
```
|
|
13
|
-
|
|
14
|
-
## The file
|
|
15
|
-
|
|
16
|
-
`set-term` and `remove-term` rewrite `vocabulary.md` whole, terms sorted by name:
|
|
17
|
-
|
|
18
|
-
```md
|
|
19
|
-
# Vocabulary
|
|
20
|
-
|
|
21
|
-
## Phase
|
|
22
|
-
|
|
23
|
-
One step of a plan, holding tasks.
|
|
24
|
-
|
|
25
|
-
_Avoid_: stage, milestone
|
|
26
|
-
```
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "using-hooks",
|
|
3
|
-
"description": "How to write each Claude Code lifecycle hook.",
|
|
4
|
-
"version": "0.1.0",
|
|
5
|
-
"license": "UNLICENSED",
|
|
6
|
-
"skills": ["./skills/hook-pre-tool-use", "./skills/hook-post-tool-use", "./skills/hook-stop", "./skills/hook-user-prompt-submit"]
|
|
7
|
-
}
|