claude-dev-env 1.93.0 → 1.94.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/_shared/pr-loop/CLAUDE.md +1 -0
- package/_shared/pr-loop/audit-contract.md +1 -1
- package/_shared/pr-loop/gh-payloads.md +3 -3
- package/_shared/pr-loop/post-audit-thread-contract.md +51 -0
- package/_shared/pr-loop/scripts/README.md +2 -2
- package/_shared/pr-loop/scripts/code_rules_gate.py +127 -13
- package/_shared/pr-loop/scripts/fix_hookspath.py +47 -12
- package/_shared/pr-loop/scripts/pr_loop_shared_constants/code_rules_gate_constants.py +4 -0
- package/_shared/pr-loop/scripts/tests/test_code_rules_gate.py +146 -69
- package/_shared/pr-loop/scripts/tests/test_fix_hookspath.py +497 -374
- package/_shared/pr-loop/state-schema.md +3 -22
- package/bin/CLAUDE.md +1 -1
- package/bin/install.mjs +2 -7
- package/bin/install.test.mjs +10 -4
- package/hooks/blocking/CLAUDE.md +2 -0
- package/hooks/blocking/pii_commit_command.py +398 -0
- package/hooks/blocking/pii_payload_scan.py +133 -0
- package/hooks/blocking/pii_prevention_blocker.py +151 -449
- package/hooks/blocking/pii_scanner.py +26 -1
- package/hooks/blocking/test_code_rules_enforcer_dead_config_field.py +2 -2
- package/hooks/blocking/test_pii_prevention_blocker.py +299 -0
- package/hooks/blocking/test_pii_scanner.py +27 -2
- package/hooks/blocking/test_verdict_directory_write_blocker.py +42 -7
- package/hooks/hooks_constants/CLAUDE.md +2 -2
- package/hooks/hooks_constants/code_rules_path_utils_constants.py +0 -2
- package/hooks/hooks_constants/local_identity.py +65 -15
- package/hooks/hooks_constants/pii_prevention_constants.py +20 -8
- package/hooks/hooks_constants/pr_description_enforcer_constants.py +1 -1
- package/hooks/hooks_constants/test_local_identity.py +68 -0
- package/package.json +1 -1
- package/scripts/CLAUDE.md +10 -1
- package/scripts/Get-SessionAccount.ps1 +210 -0
- package/scripts/tests/CLAUDE.md +15 -1
- package/scripts/tests/Get-SessionAccount.Tests.ps1 +350 -0
- package/skills/CLAUDE.md +3 -25
- package/skills/anthropic-plan/SKILL.md +1 -13
- package/skills/autoconverge/CLAUDE.md +5 -2
- package/skills/autoconverge/SKILL.md +112 -387
- package/skills/autoconverge/reference/CLAUDE.md +4 -1
- package/skills/autoconverge/reference/closing-report.md +9 -2
- package/skills/autoconverge/reference/convergence.md +26 -22
- package/skills/autoconverge/reference/headless-safety.md +44 -0
- package/skills/autoconverge/reference/multi-pr.md +88 -0
- package/skills/autoconverge/reference/self-closing-loop.md +84 -0
- package/skills/autoconverge/reference/stop-conditions.md +21 -13
- package/skills/autoconverge/workflow/converge.clean-audit.test.mjs +87 -27
- package/skills/autoconverge/workflow/converge.contract.test.mjs +40 -10
- package/skills/autoconverge/workflow/converge.copilot-gate.test.mjs +179 -47
- package/skills/autoconverge/workflow/converge.fix-progress.test.mjs +1 -1
- package/skills/autoconverge/workflow/converge.mjs +284 -94
- package/skills/bugteam/CLAUDE.md +1 -1
- package/skills/bugteam/CONSTRAINTS.md +3 -3
- package/skills/bugteam/PROMPTS.md +8 -19
- package/skills/bugteam/SKILL.md +13 -14
- package/skills/bugteam/reference/CLAUDE.md +1 -1
- package/skills/bugteam/reference/audit-and-teammates.md +2 -2
- package/skills/bugteam/reference/copilot-gap-analysis.md +2 -0
- package/skills/bugteam/reference/github-pr-reviews.md +56 -38
- package/skills/bugteam/reference/team-setup.md +11 -11
- package/skills/bugteam/scripts/CLAUDE.md +6 -6
- package/skills/bugteam/scripts/README.md +20 -8
- package/skills/bugteam/scripts/bugteam_code_rules_gate.py +13 -1463
- package/skills/bugteam/scripts/bugteam_fix_hookspath.py +23 -358
- package/skills/bugteam/scripts/bugteam_preflight.py +13 -315
- package/skills/bugteam/scripts/bugteam_scripts_constants/CLAUDE.md +2 -3
- package/skills/bugteam/scripts/test_bugteam_code_rules_gate.py +34 -1053
- package/skills/bugteam/scripts/test_bugteam_fix_hookspath.py +30 -347
- package/skills/bugteam/scripts/test_bugteam_preflight.py +30 -305
- package/skills/copilot-finding-triage/SKILL.md +80 -28
- package/skills/copilot-finding-triage/reference/tier-rubric.md +70 -11
- package/skills/copilot-finding-triage/templates/notification.md +8 -3
- package/skills/everything-search/SKILL.md +1 -2
- package/skills/grokify/SKILL.md +58 -0
- package/skills/grokify/templates/handoff-template.md +92 -0
- package/skills/orchestrator/SKILL.md +12 -8
- package/skills/orchestrator-refresh/SKILL.md +3 -3
- package/skills/pr-converge/SKILL.md +132 -233
- package/skills/pr-converge/reference/convergence-gates.md +102 -66
- package/skills/pr-converge/reference/examples.md +37 -25
- package/skills/pr-converge/reference/fix-protocol.md +7 -7
- package/skills/pr-converge/reference/multi-pr-orchestration.md +10 -4
- package/skills/pr-converge/reference/per-tick.md +64 -41
- package/skills/pr-converge/reference/state-schema.md +27 -2
- package/skills/pr-converge/scripts/CLAUDE.md +8 -0
- package/skills/pr-converge/scripts/README.md +4 -3
- package/skills/pr-converge/scripts/_pr_converge_path_setup.py +23 -0
- package/skills/pr-converge/scripts/check_convergence.py +189 -645
- package/skills/pr-converge/scripts/check_convergence_gates.py +235 -0
- package/skills/pr-converge/scripts/check_convergence_thread_gates.py +219 -0
- package/skills/pr-converge/scripts/conftest.py +8 -0
- package/skills/pr-converge/scripts/pr_converge_scripts_constants/CLAUDE.md +1 -0
- package/skills/pr-converge/scripts/pr_converge_scripts_constants/convergence_gate_constants.py +36 -0
- package/skills/pr-converge/scripts/test__pr_converge_path_setup.py +26 -0
- package/skills/pr-converge/scripts/test_check_convergence.py +73 -228
- package/skills/pr-converge/scripts/test_check_convergence_contract.py +321 -0
- package/skills/pr-converge/scripts/test_check_convergence_gates.py +68 -0
- package/skills/pr-converge/scripts/test_check_convergence_thread_gates.py +75 -0
- package/skills/privacy-hygiene/SKILL.md +8 -7
- package/skills/reviewer-gates/SKILL.md +26 -8
- package/skills/session-log/SKILL.md +11 -12
- package/skills/session-tidy/SKILL.md +40 -30
- package/skills/skill-builder/CLAUDE.md +13 -10
- package/skills/skill-builder/SKILL.md +31 -31
- package/skills/skill-builder/references/CLAUDE.md +10 -6
- package/skills/skill-builder/references/delegation-map.md +13 -4
- package/skills/skill-builder/references/description-field.md +113 -0
- package/skills/skill-builder/references/self-audit-checklist.md +21 -4
- package/skills/skill-builder/references/skill-modularity.md +113 -0
- package/skills/skill-builder/references/skill-types.md +4 -0
- package/skills/skill-builder/templates/CLAUDE.md +4 -4
- package/skills/skill-builder/templates/gap-analysis.md +25 -1
- package/skills/skill-builder/workflows/CLAUDE.md +6 -4
- package/skills/skill-builder/workflows/improve-skill.md +17 -16
- package/skills/skill-builder/workflows/new-skill.md +34 -10
- package/skills/skill-builder/workflows/polish-skill.md +59 -43
- package/skills/usage-pause/SKILL.md +10 -14
- package/skills/bdd-protocol/CLAUDE.md +0 -26
- package/skills/bdd-protocol/SKILL.md +0 -30
- package/skills/bdd-protocol/references/CLAUDE.md +0 -10
- package/skills/bdd-protocol/references/anti-patterns.md +0 -26
- package/skills/bdd-protocol/references/example-mapping.md +0 -23
- package/skills/bg-agent/CLAUDE.md +0 -17
- package/skills/bg-agent/SKILL.md +0 -69
- package/skills/bugteam/scripts/bugteam_scripts_constants/bugteam_code_rules_gate_constants.py +0 -55
- package/skills/bugteam/scripts/bugteam_scripts_constants/bugteam_fix_hookspath_constants.py +0 -26
- package/skills/bugteam/scripts/bugteam_scripts_constants/bugteam_preflight_constants.py +0 -35
- package/skills/caveman/CLAUDE.md +0 -15
- package/skills/caveman/SKILL.md +0 -38
- package/skills/code/CLAUDE.md +0 -17
- package/skills/code/SKILL.md +0 -178
- package/skills/deep-research/CLAUDE.md +0 -17
- package/skills/deep-research/SKILL.md +0 -80
- package/skills/findbugs/CLAUDE.md +0 -20
- package/skills/findbugs/SKILL.md +0 -241
- package/skills/fixbugs/CLAUDE.md +0 -19
- package/skills/fixbugs/SKILL.md +0 -142
- package/skills/gh-paginate/CLAUDE.md +0 -18
- package/skills/gh-paginate/SKILL.md +0 -84
- package/skills/gotcha/CLAUDE.md +0 -33
- package/skills/gotcha/SKILL.md +0 -73
- package/skills/implement/CLAUDE.md +0 -27
- package/skills/implement/SKILL.md +0 -66
- package/skills/implement/scripts/CLAUDE.md +0 -22
- package/skills/implement/scripts/append_note.py +0 -133
- package/skills/implement/scripts/implement_scripts_constants/CLAUDE.md +0 -22
- package/skills/implement/scripts/implement_scripts_constants/__init__.py +0 -0
- package/skills/implement/scripts/implement_scripts_constants/notes_constants.py +0 -12
- package/skills/implement/scripts/test_append_note.py +0 -191
- package/skills/log-audit/CLAUDE.md +0 -20
- package/skills/log-audit/SKILL.md +0 -66
- package/skills/log-audit/reference/CLAUDE.md +0 -9
- package/skills/log-audit/reference/charter.md +0 -52
- package/skills/log-audit/scripts/CLAUDE.md +0 -27
- package/skills/log-audit/scripts/cluster_recurrences.py +0 -261
- package/skills/log-audit/scripts/collect_log_window.py +0 -199
- package/skills/log-audit/scripts/log_audit_constants/CLAUDE.md +0 -12
- package/skills/log-audit/scripts/log_audit_constants/__init__.py +0 -0
- package/skills/log-audit/scripts/log_audit_constants/cluster_recurrences_constants.py +0 -23
- package/skills/log-audit/scripts/log_audit_constants/collect_log_window_constants.py +0 -24
- package/skills/log-audit/scripts/log_audit_constants/mine_copilot_findings_constants.py +0 -49
- package/skills/log-audit/scripts/mine_copilot_findings.py +0 -302
- package/skills/log-audit/scripts/test_cluster_recurrences.py +0 -160
- package/skills/log-audit/scripts/test_collect_log_window.py +0 -111
- package/skills/log-audit/scripts/test_mine_copilot_findings.py +0 -126
- package/skills/logifix/CLAUDE.md +0 -36
- package/skills/logifix/SKILL.md +0 -69
- package/skills/logifix/scripts/CLAUDE.md +0 -16
- package/skills/logifix/scripts/logifix.ps1 +0 -205
- package/skills/monitor-open-prs/CLAUDE.md +0 -34
- package/skills/monitor-open-prs/SKILL.md +0 -88
- package/skills/monitor-open-prs/scripts/CLAUDE.md +0 -17
- package/skills/monitor-open-prs/scripts/discover_open_prs.py +0 -69
- package/skills/monitor-open-prs/scripts/test_discover_open_prs.py +0 -149
- package/skills/monitor-open-prs/test_skill_contract.py +0 -27
- package/skills/post-audit-findings/SKILL.md +0 -80
- package/skills/pr-consistency-audit/CLAUDE.md +0 -34
- package/skills/pr-consistency-audit/SKILL.md +0 -116
- package/skills/pr-consistency-audit/reference/CLAUDE.md +0 -16
- package/skills/pr-consistency-audit/reference/detection-rules.md +0 -96
- package/skills/pr-consistency-audit/reference/illustrations.md +0 -78
- package/skills/pr-fix-protocol/SKILL.md +0 -65
- package/skills/pr-review-responder/CLAUDE.md +0 -35
- package/skills/pr-review-responder/EXAMPLES.md +0 -590
- package/skills/pr-review-responder/PRINCIPLES.md +0 -533
- package/skills/pr-review-responder/README.md +0 -168
- package/skills/pr-review-responder/SKILL.md +0 -203
- package/skills/pr-review-responder/TESTING.md +0 -350
- package/skills/pr-scope-resolve/SKILL.md +0 -45
- package/skills/pre-compact/CLAUDE.md +0 -24
- package/skills/pre-compact/SKILL.md +0 -134
- package/skills/qbug/CLAUDE.md +0 -40
- package/skills/qbug/SKILL.md +0 -387
- package/skills/qbug/test_qbug_skill_audit_schema.py +0 -152
- package/skills/qbug/test_qbug_skill_post_fix_audit.py +0 -103
- package/skills/refine/CLAUDE.md +0 -44
- package/skills/refine/SKILL.md +0 -262
- package/skills/refine/templates/CLAUDE.md +0 -17
- package/skills/refine/templates/implementation-notes-template.html +0 -56
- package/skills/refine/templates/plan-template.md +0 -60
- package/skills/research-mode/CLAUDE.md +0 -35
- package/skills/research-mode/SKILL.md +0 -53
- package/skills/structure-prompt/CLAUDE.md +0 -42
- package/skills/structure-prompt/SKILL.md +0 -44
- package/skills/structure-prompt/reference/CLAUDE.md +0 -28
- package/skills/structure-prompt/reference/adversarial-tuning.md +0 -62
- package/skills/structure-prompt/reference/block-classification.md +0 -27
- package/skills/structure-prompt/reference/canonical-case.md +0 -48
- package/skills/structure-prompt/reference/citation-depth.md +0 -70
- package/skills/structure-prompt/reference/cleanup.md +0 -33
- package/skills/structure-prompt/reference/constraints.md +0 -33
- package/skills/structure-prompt/reference/directives.md +0 -37
- package/skills/structure-prompt/reference/examples.md +0 -72
- package/skills/structure-prompt/reference/instantiation.md +0 -51
- package/skills/structure-prompt/reference/output-contract.md +0 -72
- package/skills/structure-prompt/reference/per-category.md +0 -23
- package/skills/structure-prompt/reference/persona.md +0 -38
- package/skills/structure-prompt/reference/research.md +0 -33
- package/skills/structure-prompt/reference/structure.md +0 -28
- package/skills/verified-build/CLAUDE.md +0 -33
- package/skills/verified-build/SKILL.md +0 -33
|
@@ -8,7 +8,7 @@ disable-model-invocation: true
|
|
|
8
8
|
|
|
9
9
|
## Overview
|
|
10
10
|
|
|
11
|
-
Audit and consolidate session logs in the Obsidian vault (`sessions/[Project]/`) by enforcing the
|
|
11
|
+
Audit and consolidate session logs in the Obsidian vault (`sessions/[Project]/`) by enforcing the tidy audit rules, categorizing uncategorized files into project subfolders, resolving orphaned next-steps, updating stale statuses, and generating project rollup summaries.
|
|
12
12
|
|
|
13
13
|
**Announce at start:** "Running session log consolidation."
|
|
14
14
|
|
|
@@ -16,16 +16,23 @@ Audit and consolidate session logs in the Obsidian vault (`sessions/[Project]/`)
|
|
|
16
16
|
|
|
17
17
|
## The Format Contract
|
|
18
18
|
|
|
19
|
-
|
|
19
|
+
**Write-side HTML contract:** `/session-log` owns how new session reports are written — vault path, HTML frontmatter comment block, Artifact publish, and body design. Read `journal:session-log` SKILL.md for that contract. The markdown field shapes below describe files tidy may read; they are not the write path for new session reports.
|
|
20
20
|
|
|
21
|
-
**
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
-
|
|
21
|
+
**What tidy audits:** Project folders under `sessions/` may hold `.html` session reports and `.md` session files. Audit every session file present. The rules in this skill are the single home for tidy audit criteria.
|
|
22
|
+
|
|
23
|
+
**Directory structure:** `sessions/[Project]/`
|
|
24
|
+
- Session files match `[N]. [Title].html` or `[N]. [Title].md`, where Title is a 2-5 word summary of the primary outcome (e.g., `3. Amazon Auth Migration.html`)
|
|
25
|
+
- Summary files are `Summary.html` or `Summary.md` in the same project folder
|
|
25
26
|
- No parenthetical suffixes like `(Wrap-Up)`
|
|
26
|
-
- Files missing a title (e.g., `Session 1.md` or `1.
|
|
27
|
+
- Files missing a title (e.g., `Session 1.md` or `1.html`) should be flagged for renaming — read the content to derive a title
|
|
28
|
+
|
|
29
|
+
**Shared metadata fields (required on every session file):**
|
|
30
|
+
`type`, `project`, `session`, `date`, `status`, `blocked`, `tags`
|
|
31
|
+
|
|
32
|
+
**HTML session reports** — when tidy reads a `.html` session file, metadata sits in an HTML comment block at the start of the file content. The write-side comment shape lives in session-log SKILL.md. HTML reports also carry `session_id` and `vault_context_retrieved`.
|
|
33
|
+
|
|
34
|
+
**Markdown session files** — when tidy reads a `.md` session file, metadata sits in YAML frontmatter:
|
|
27
35
|
|
|
28
|
-
**Required frontmatter fields:**
|
|
29
36
|
```yaml
|
|
30
37
|
---
|
|
31
38
|
type: session-report
|
|
@@ -38,40 +45,41 @@ tags: ["session", "[project-tag]"]
|
|
|
38
45
|
---
|
|
39
46
|
```
|
|
40
47
|
|
|
41
|
-
**Content structure:**
|
|
48
|
+
**Content structure for markdown session files:**
|
|
42
49
|
- Section headers (`###`) use one emoji + outcome-oriented title
|
|
43
50
|
- Valid emojis: ✅ (done), 🚫 (blocked), ⚠️ (note), 🔧 (in-progress), 📋 (queued)
|
|
44
51
|
- Explanatory paragraphs under each header, not just bullets
|
|
45
52
|
- Tables for 3+ rows of structured data
|
|
46
53
|
- No play-by-play or process narration
|
|
47
54
|
|
|
55
|
+
**Content structure for HTML session reports:** Body shape is session-specific (session-log designs per session). Tidy does not enforce a fixed HTML section template. Audit naming, metadata completeness, type, status coherence, orphaned next-steps text in the body, and categorization.
|
|
56
|
+
|
|
48
57
|
## The Process
|
|
49
58
|
|
|
50
59
|
### Phase 0: Preflight
|
|
51
60
|
|
|
52
|
-
Determine which storage backend is available.
|
|
61
|
+
Determine which storage backend is available. First success wins:
|
|
53
62
|
|
|
54
|
-
1. **Headless vault**
|
|
63
|
+
1. **Headless vault** — same check as Backend Detection in `journal:session-log` SKILL.md: Bash `ob --version`, then `OBSIDIAN_VAULT_PATH` or `~/.claude/vault/`. When the CLI check succeeds and a vault directory resolves, set `backend = "headless"`.
|
|
55
64
|
|
|
56
|
-
2. **Obsidian MCP**
|
|
65
|
+
2. **Obsidian MCP** — call `mcp__obsidian__list_directory` with `path="sessions"`. If it succeeds, set `backend = "obsidian"`.
|
|
57
66
|
|
|
58
|
-
3. **Local vault**
|
|
67
|
+
3. **Local vault** — same fallback as session-log Backend Detection: `~/.claude/vault/`. Create `~/.claude/vault/sessions` via `mkdir -p` if missing. Set `backend = "local"`.
|
|
59
68
|
|
|
60
|
-
**
|
|
61
|
-
- **
|
|
62
|
-
- **
|
|
63
|
-
- **Search:** Bash `ls` + Grep
|
|
69
|
+
**Capability notes by backend:**
|
|
70
|
+
- **obsidian:** list, read, move, frontmatter update, and write via MCP tools (`list_directory`, `read_note`, `move_note`, `update_frontmatter`, `write_note`). For `.html` files, metadata edits use Read + Edit of the HTML comment block when MCP frontmatter tools do not apply.
|
|
71
|
+
- **headless / local:** Move/rename via `mv` (Bash). Metadata update via Read + Edit/Write. Search via Bash `ls` + Grep.
|
|
64
72
|
|
|
65
73
|
### Phase 1: Audit
|
|
66
74
|
|
|
67
|
-
List project subdirectories in `sessions/`
|
|
75
|
+
List project subdirectories in `sessions/` (MCP `list_directory` when backend is obsidian; Bash `ls` when headless or local). For each project folder, read its files. Also check for any files sitting directly in `sessions/` (uncategorized). Audit both `.html` and `.md` session files. For each file, check:
|
|
68
76
|
|
|
69
|
-
1. **Naming convention?** Must match `[N]. [Title].md` where N is the session number and Title is a 2-5 word outcome summary. Flag bracket prefixes, date-only names, parenthetical suffixes, or
|
|
70
|
-
2. **Frontmatter complete?** All required fields present: `type`, `project`, `session`, `date`, `status`, `blocked`, `tags`.
|
|
77
|
+
1. **Naming convention?** Must match `[N]. [Title].html` or `[N]. [Title].md` where N is the session number and Title is a 2-5 word outcome summary. Flag bracket prefixes, date-only names, parenthetical suffixes, or patterns missing a title such as `Session 1.md` or `1.html`.
|
|
78
|
+
2. **Frontmatter complete?** All shared required fields present: `type`, `project`, `session`, `date`, `status`, `blocked`, `tags`. For `.html` session reports, also require `session_id` and `vault_context_retrieved`.
|
|
71
79
|
3. **Type correct?** Must be `session-report`. Flag other types.
|
|
72
|
-
4. **Status coherent?** `status:
|
|
80
|
+
4. **Status coherent?** `status: completed` with `blocked: true` is contradictory. `status: in-progress` or `status: blocked` on sessions older than 7 days is likely stale.
|
|
73
81
|
5. **Orphaned next-steps?** Scan content for sections containing "Next", "Queued", "Session N+1", "TODO", or clipboard emoji sections. Cross-reference against subsequent sessions for the same project to determine if the items were addressed.
|
|
74
|
-
6. **Categorized?** Files sitting directly in `sessions/` (not in a project subfolder) are uncategorized. Infer the project name from the filename pattern (e.g., `BudgetBridge Session 3.md` belongs in `sessions/BudgetBridge/`) or from the frontmatter `project` field. Flag for move into the correct subfolder.
|
|
82
|
+
6. **Categorized?** Files sitting directly in `sessions/` (not in a project subfolder) are uncategorized. Infer the project name from the filename pattern (e.g., `BudgetBridge Session 3.md` belongs in `sessions/BudgetBridge/`) or from the frontmatter `project` field. Flag for a move into the correct subfolder.
|
|
75
83
|
|
|
76
84
|
### Phase 2: Propose Changes
|
|
77
85
|
|
|
@@ -83,8 +91,8 @@ Present a structured report:
|
|
|
83
91
|
- **Resolved:** found evidence in a later session
|
|
84
92
|
- **Orphaned:** no later session addresses it
|
|
85
93
|
- **Unknown:** later sessions exist but don't clearly address or skip the item
|
|
86
|
-
**Uncategorized files** -- files in `sessions/` root that should
|
|
87
|
-
**Rollup candidates** -- projects with 3+ sessions that have no
|
|
94
|
+
**Uncategorized files** -- files in `sessions/` root that should live in a project subfolder
|
|
95
|
+
**Rollup candidates** -- projects with 3+ sessions that have no `Summary.html` or `Summary.md`
|
|
88
96
|
**Proposed actions** -- numbered list of specific changes
|
|
89
97
|
|
|
90
98
|
Do NOT execute any changes yet. Wait for user approval.
|
|
@@ -93,14 +101,16 @@ Do NOT execute any changes yet. Wait for user approval.
|
|
|
93
101
|
|
|
94
102
|
After user approves (all or selected items):
|
|
95
103
|
|
|
96
|
-
1. **Rename** non-conforming files via `mcp__obsidian__move_note`.
|
|
97
|
-
2. **Fix frontmatter
|
|
104
|
+
1. **Rename** non-conforming files via `mcp__obsidian__move_note` (obsidian) or `mv` (headless/local). Keep the file's extension (`.html` or `.md`).
|
|
105
|
+
2. **Fix frontmatter:**
|
|
106
|
+
- `.md` files: `mcp__obsidian__update_frontmatter` when backend is obsidian; Read + Edit/Write of YAML frontmatter when headless or local. Set correct type; add missing shared fields.
|
|
107
|
+
- `.html` files: Read + Edit of the HTML comment block fields (shape in session-log SKILL.md). Set correct type; add missing shared fields plus `session_id` and `vault_context_retrieved` when absent.
|
|
98
108
|
3. **Update stale statuses** -- change old in-progress/blocked to completed (or ask user for correct status).
|
|
99
109
|
4. **Clean orphaned next-steps** -- for confirmed orphaned items, either:
|
|
100
110
|
- Remove the section if all items are orphaned and the session is old
|
|
101
111
|
- Add a strikethrough or "(not pursued)" annotation if some items remain relevant
|
|
102
112
|
- Leave unchanged if user declines
|
|
103
|
-
5. **Generate project rollups** -- for each qualifying project, write a summary note via `mcp__obsidian__write_note
|
|
113
|
+
5. **Generate project rollups** -- for each qualifying project, write a summary note via `mcp__obsidian__write_note` (obsidian) or Write (headless/local):
|
|
104
114
|
- **Path:** `sessions/[Project]/Summary.md`
|
|
105
115
|
- **Frontmatter:** `{"type": "project-summary", "project": "[name]", "sessions": [count], "date_range": "[first] to [last]", "tags": ["summary", "[project-tag]"]}`
|
|
106
116
|
- **Content:** Use this template:
|
|
@@ -123,14 +133,14 @@ After user approves (all or selected items):
|
|
|
123
133
|
### Carried Forward
|
|
124
134
|
- [ ] [unresolved item from latest session]
|
|
125
135
|
```
|
|
126
|
-
6. **Categorize uncategorized files** -- move files from `sessions/` root into the correct project subfolder via `mcp__obsidian__move_note`. When moving, rename to match the `[N]. [Title].md` convention (e.g., `sessions/BudgetBridge Session 3.md` becomes `sessions/BudgetBridge/3. [Title derived from content].md`).
|
|
136
|
+
6. **Categorize uncategorized files** -- move files from `sessions/` root into the correct project subfolder via `mcp__obsidian__move_note` or `mv`. When moving, rename to match the `[N]. [Title].html` or `[N]. [Title].md` convention for that file's extension (e.g., `sessions/BudgetBridge Session 3.md` becomes `sessions/BudgetBridge/3. [Title derived from content].md`).
|
|
127
137
|
|
|
128
138
|
### Phase 4: Verify
|
|
129
139
|
|
|
130
140
|
After execution, re-read the vault and confirm:
|
|
131
141
|
- Every session file lives in a project subfolder under `sessions/[Project]/`
|
|
132
|
-
- Every file has valid frontmatter with all required fields
|
|
133
|
-
- Every filename matches the naming convention (`[N]. [Title].md` or `Summary.md`)
|
|
142
|
+
- Every file has valid frontmatter with all required fields for its shape
|
|
143
|
+
- Every filename matches the naming convention (`[N]. [Title].html`, `[N]. [Title].md`, `Summary.html`, or `Summary.md`)
|
|
134
144
|
- No contradictory status/blocked combos
|
|
135
145
|
- All orphaned next-steps resolved or annotated
|
|
136
146
|
- Rollup summaries exist for qualifying projects
|
|
@@ -1,27 +1,29 @@
|
|
|
1
1
|
# skill-builder
|
|
2
2
|
|
|
3
|
-
Orchestrates the
|
|
3
|
+
Orchestrates the skill-building lifecycle: classify type, scaffold folders, write via `skill-writer`, enforce modularity (sub-skills / composition), write description as a trigger catalog, self-audit, and refine from real usage.
|
|
4
4
|
|
|
5
|
-
**Trigger:**
|
|
5
|
+
**Trigger:** build a skill, new skill workflow, improve this skill, optimize skill description, skill development lifecycle, skill modularity, description trigger catalog.
|
|
6
6
|
|
|
7
7
|
## Purpose
|
|
8
8
|
|
|
9
|
-
|
|
9
|
+
Enforces craft standards for new and existing skills. For quick one-off SKILL.md edits, use `/skill-writer` directly. This skill classifies, scaffolds, gathers context (including composition plan and description triggers), delegates writing, and self-audits.
|
|
10
10
|
|
|
11
11
|
## Key files
|
|
12
12
|
|
|
13
13
|
| File | Purpose |
|
|
14
14
|
|---|---|
|
|
15
|
-
| `SKILL.md` | Hub — routing,
|
|
15
|
+
| `SKILL.md` | Hub — routing, principles, file index |
|
|
16
16
|
| `references/skill-types.md` | 9-type taxonomy with folder structures per type |
|
|
17
17
|
| `references/progressive-disclosure.md` | Hub pattern, folder conventions, hard rules |
|
|
18
|
-
| `references/
|
|
18
|
+
| `references/skill-modularity.md` | Cross-skill modularity, sub-skills, composition plan |
|
|
19
|
+
| `references/description-field.md` | Description as trigger catalog (not story prose) |
|
|
20
|
+
| `references/self-audit-checklist.md` | Mandatory post-build audit |
|
|
19
21
|
| `references/delegation-map.md` | Subagent handoff patterns and transcript guidance |
|
|
20
22
|
| `references/thariq-x-post-skills.json` | Source reference — lessons from building Claude Code skills |
|
|
21
23
|
| `workflows/new-skill.md` | Full lifecycle for new skills (6 steps) |
|
|
22
24
|
| `workflows/improve-skill.md` | Observation-first flow for existing skills (6 steps) |
|
|
23
|
-
| `workflows/polish-skill.md` | Description audit and final validation (5 steps) |
|
|
24
|
-
| `templates/gap-analysis.md` |
|
|
25
|
+
| `workflows/polish-skill.md` | Description trigger-catalog audit and final validation (5 steps) |
|
|
26
|
+
| `templates/gap-analysis.md` | Gaps, composition plan, description triggers |
|
|
25
27
|
|
|
26
28
|
## Subdirectories
|
|
27
29
|
|
|
@@ -40,6 +42,7 @@ The expert that enforces craft standards. For quick one-off SKILL.md edits, use
|
|
|
40
42
|
|
|
41
43
|
## Conventions
|
|
42
44
|
|
|
43
|
-
- Every build ends with the
|
|
44
|
-
-
|
|
45
|
-
-
|
|
45
|
+
- Every build ends with the self-audit at `references/self-audit-checklist.md`; fix failures before delivery.
|
|
46
|
+
- Modularity items and description trigger-catalog items are mandatory on every delivery.
|
|
47
|
+
- `skill-builder` orchestrates; `skill-writer` authors. Handoff packet must include type, gap analysis, composition plan, description trigger catalog, degree-of-freedom assessment, and constraints.
|
|
48
|
+
- Claude A / Claude B: Claude A (this session) designs; Claude B (subagents) tests the built skill on real tasks.
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: skill-builder
|
|
3
3
|
description: >-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
4
|
+
Skill lifecycle: classify, scaffold, write via skill-writer, self-audit, compose
|
|
5
|
+
sub-skills, polish description triggers. Triggers: build a skill, new skill
|
|
6
|
+
workflow, improve this skill, optimize skill description, skill development
|
|
7
|
+
lifecycle, skill modularity, skill composition, description trigger catalog.
|
|
8
8
|
---
|
|
9
9
|
|
|
10
10
|
# Skill Builder
|
|
@@ -19,6 +19,10 @@ Highest-signal content. Append a bullet each time a skill build fails in a new w
|
|
|
19
19
|
|
|
20
20
|
> "The highest-signal content in any skill is the Gotchas section. These sections should be built up from common failure points that Claude runs into when using your skill."
|
|
21
21
|
|
|
22
|
+
- Story-form `description` burns always-on context and weakens selection — rewrite to capability stem + `Triggers:` list (`description-field.md`).
|
|
23
|
+
- Multi-capability packages fail modularity audit — split or thin orchestrator + named sub-skills (`skill-modularity.md`).
|
|
24
|
+
- Skipping the composition plan before Write reintroduces silent reimplementation of peer skills.
|
|
25
|
+
|
|
22
26
|
## When this skill applies
|
|
23
27
|
|
|
24
28
|
Trigger for requests to **build**, **improve**, or **polish** a skill. This skill orchestrates the process — it classifies, scaffolds, gathers context, delegates writing to `/skill-writer`, and self-audits the result.
|
|
@@ -60,23 +64,11 @@ The feedback loop: observe Claude B’s behavior, bring insights back, refine th
|
|
|
60
64
|
|
|
61
65
|
> "After cataloging all of our skills, we noticed they cluster into a few recurring categories."
|
|
62
66
|
|
|
63
|
-
Classify
|
|
64
|
-
|
|
65
|
-
| # | Type | Key folders |
|
|
66
|
-
|---|---|---|
|
|
67
|
-
| 1 | Library & API Reference | reference/, examples/ |
|
|
68
|
-
| 2 | Product Verification | scripts/, reference/ |
|
|
69
|
-
| 3 | Data Fetching & Analysis | reference/, scripts/ |
|
|
70
|
-
| 4 | Business Process & Team Automation | templates/, scripts/ |
|
|
71
|
-
| 5 | Code Scaffolding & Templates | templates/, scripts/ |
|
|
72
|
-
| 6 | Code Quality & Review | reference/, scripts/ |
|
|
73
|
-
| 7 | CI/CD & Deployment | workflows/, scripts/ |
|
|
74
|
-
| 8 | Runbooks | reference/, templates/ |
|
|
75
|
-
| 9 | Infrastructure Operations | reference/, scripts/ |
|
|
67
|
+
Classify into one of 9 types — type sets folder structure. Taxonomy and layouts: [`references/skill-types.md`](references/skill-types.md).
|
|
76
68
|
|
|
77
69
|
## Principles
|
|
78
70
|
|
|
79
|
-
These are non-negotiable. Every skill must satisfy them.
|
|
71
|
+
These are non-negotiable. Every skill must satisfy them. Enforce via [`references/self-audit-checklist.md`](references/self-audit-checklist.md).
|
|
80
72
|
|
|
81
73
|
### Concision and defaults
|
|
82
74
|
|
|
@@ -96,25 +88,27 @@ High freedom (text guidance) for open fields. Low freedom (exact scripts, no par
|
|
|
96
88
|
|
|
97
89
|
### Progressive disclosure
|
|
98
90
|
|
|
99
|
-
|
|
91
|
+
Hub pattern, line caps, one-level references, TOC and path rules: [`references/progressive-disclosure.md`](references/progressive-disclosure.md).
|
|
92
|
+
|
|
93
|
+
### Modularity and composition
|
|
100
94
|
|
|
101
|
-
|
|
95
|
+
One skill = one capability. Multi-step work invokes **sub-skills** (peer skills) by name. Prefer compose over reimplement. Full rules: [`references/skill-modularity.md`](references/skill-modularity.md).
|
|
102
96
|
|
|
103
|
-
|
|
97
|
+
> "You can just reference other skills by name, and the model will invoke them if they are installed."
|
|
104
98
|
|
|
105
|
-
|
|
99
|
+
New-skill Gather records a composition plan before write. Self-audit modularity items are mandatory.
|
|
106
100
|
|
|
107
|
-
|
|
101
|
+
### Description field (trigger catalog)
|
|
108
102
|
|
|
109
|
-
|
|
103
|
+
The frontmatter `description` is **selection metadata** pre-loaded for every skill. Write a **trigger catalog**, not a story: short capability stem + concrete trigger phrases. No narrative, benefits language, or process dump.
|
|
104
|
+
|
|
105
|
+
Full rules: [`references/description-field.md`](references/description-field.md). Polish workflow Step 1 is the dedicated rewrite pass.
|
|
110
106
|
|
|
111
107
|
> "The description field is not a summary — it’s a description of when to trigger."
|
|
112
108
|
|
|
113
109
|
### Gotchas
|
|
114
110
|
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
Mandatory section. Built from real failure observations. Updated over time as new failure modes surface.
|
|
111
|
+
Mandatory highest-signal section (see Gotchas above). Capture real failure modes; self-audit requires the section present and actionable.
|
|
118
112
|
|
|
119
113
|
### Templates and examples
|
|
120
114
|
|
|
@@ -148,6 +142,8 @@ Multi-step processes get `[ ]` checklists. Quality-critical operations get feedb
|
|
|
148
142
|
|
|
149
143
|
> No Windows paths. Don’t offer too many options — provide a default with escape hatch. Avoid time-sensitive claims. Use consistent terminology. No deeply nested references.
|
|
150
144
|
|
|
145
|
+
Also: story-form descriptions; monolith multi-capability skills; silent reimplementation of peer skills; nested folders used as fake sub-skills.
|
|
146
|
+
|
|
151
147
|
## Self-audit
|
|
152
148
|
|
|
153
149
|
After every build, improvement, or polish pass, run the mandatory checklist at `${CLAUDE_SKILL_DIR}/references/self-audit-checklist.md`. Every item must pass before delivery. Fix failures, then re-audit.
|
|
@@ -157,9 +153,11 @@ After every build, improvement, or polish pass, run the mandatory checklist at `
|
|
|
157
153
|
skill-builder orchestrates; skill-writer authors. The handoff packet from Step 4 must include:
|
|
158
154
|
|
|
159
155
|
- Skill type and folder structure
|
|
160
|
-
- Gap analysis or observation findings
|
|
156
|
+
- Gap analysis or observation findings (composition plan + description triggers)
|
|
161
157
|
- Degree of freedom assessment
|
|
162
158
|
- Initial gotchas
|
|
159
|
+
- Composition plan: related skills, sub-skills to invoke, split decisions
|
|
160
|
+
- Description trigger catalog: capability stem + trigger phrases (not prose)
|
|
163
161
|
- Any constraints
|
|
164
162
|
|
|
165
163
|
See `${CLAUDE_SKILL_DIR}/references/delegation-map.md` for exact patterns.
|
|
@@ -171,12 +169,14 @@ See `${CLAUDE_SKILL_DIR}/references/delegation-map.md` for exact patterns.
|
|
|
171
169
|
| `SKILL.md` | This hub — principles, process, routing, file index |
|
|
172
170
|
| `references/skill-types.md` | 9-type taxonomy with folder structures per type |
|
|
173
171
|
| `references/progressive-disclosure.md` | Folder conventions, hub pattern, hard rules |
|
|
174
|
-
| `references/
|
|
172
|
+
| `references/skill-modularity.md` | Cross-skill modularity, sub-skills, composition plan |
|
|
173
|
+
| `references/description-field.md` | Description as trigger catalog (not story prose) |
|
|
174
|
+
| `references/self-audit-checklist.md` | Mandatory post-build audit (core, modularity, description) |
|
|
175
175
|
| `references/delegation-map.md` | Subagent handoff patterns and transcript guidance |
|
|
176
176
|
| `workflows/new-skill.md` | Full lifecycle for new skills (6 steps) |
|
|
177
177
|
| `workflows/improve-skill.md` | Observation-first flow for existing skills (6 steps) |
|
|
178
|
-
| `workflows/polish-skill.md` | Description audit and final validation (5 steps) |
|
|
179
|
-
| `templates/gap-analysis.md` |
|
|
178
|
+
| `workflows/polish-skill.md` | Description trigger-catalog audit and final validation (5 steps) |
|
|
179
|
+
| `templates/gap-analysis.md` | Gaps, composition plan, description triggers |
|
|
180
180
|
|
|
181
181
|
## Folder map
|
|
182
182
|
|
|
@@ -6,14 +6,18 @@ Best-practice specifications and the mandatory self-audit checklist for the `/sk
|
|
|
6
6
|
|
|
7
7
|
| File | Purpose |
|
|
8
8
|
|---|---|
|
|
9
|
-
| `self-audit-checklist.md` |
|
|
10
|
-
| `skill-types.md` | 9-type skill taxonomy with folder structures per type
|
|
11
|
-
| `progressive-disclosure.md` | Hub pattern, folder conventions,
|
|
12
|
-
| `
|
|
9
|
+
| `self-audit-checklist.md` | Checklist after every build, improvement, or polish pass. Every item must pass before delivery. |
|
|
10
|
+
| `skill-types.md` | 9-type skill taxonomy with folder structures per type. |
|
|
11
|
+
| `progressive-disclosure.md` | Hub pattern, folder conventions, hard rules: SKILL.md under 500 lines, one-level references. |
|
|
12
|
+
| `skill-modularity.md` | Cross-skill modularity: one capability, sub-skills by name, composition plan, anti-monolith. |
|
|
13
|
+
| `description-field.md` | Frontmatter description as trigger catalog (capability stem + Triggers). No story prose. |
|
|
14
|
+
| `delegation-map.md` | Subagent handoff patterns and transcript guidance for skill-builder → skill-writer. |
|
|
13
15
|
| `thariq-x-post-skills.json` | Source reference data from Anthropic lessons on building Claude Code skills. |
|
|
14
16
|
|
|
15
17
|
## Conventions
|
|
16
18
|
|
|
17
|
-
- These files
|
|
18
|
-
- `self-audit-checklist.md`
|
|
19
|
+
- These files load on demand from `SKILL.md` routing — not all on every run.
|
|
20
|
+
- `self-audit-checklist.md` always loads at the end of a build cycle.
|
|
21
|
+
- Load `skill-modularity.md` during Gather and when scope/overlap is diagnosed.
|
|
22
|
+
- Load `description-field.md` during Gather, polish Step 1, and any activation diagnosis.
|
|
19
23
|
- `thariq-x-post-skills.json` is source reference data, not executable content.
|
|
@@ -13,17 +13,23 @@ Create a skill with these parameters:
|
|
|
13
13
|
|
|
14
14
|
**Skill type:** [one of 9 types from skill-types.md]
|
|
15
15
|
**Folder structure:** [directories to create: reference/, scripts/, etc.]
|
|
16
|
-
**What it does:** [one-sentence capability
|
|
16
|
+
**What it does:** [one-sentence capability — single job]
|
|
17
17
|
**Domain context:** [what Claude needs to know that it doesn't already]
|
|
18
18
|
**Initial gotchas:** [failure patterns to document from the start]
|
|
19
19
|
**Degree of freedom:** [high | medium | low — with reasoning]
|
|
20
20
|
**Constraints:** [non-negotiables]
|
|
21
|
+
**Composition plan:** [related skills; sub-skills with when/produces/missing; leaf vs orchestrator]
|
|
22
|
+
**Description (exact frontmatter string):** [capability stem. Triggers: phrase, phrase, ...]
|
|
23
|
+
— Trigger catalog only per description-field.md. No story prose.
|
|
21
24
|
|
|
22
25
|
Produce:
|
|
23
26
|
1. SKILL.md with hub layout (principle, gotchas, when-applies, process, file index, folder map)
|
|
24
|
-
2.
|
|
25
|
-
3.
|
|
26
|
-
4.
|
|
27
|
+
2. Frontmatter description set to the exact trigger-catalog string above
|
|
28
|
+
3. Sub-skills table in body when composition plan lists peer skills
|
|
29
|
+
4. Companion files as needed (reference docs, workflow steps, templates)
|
|
30
|
+
5. Every file under 500 lines; TOC on files over 100 lines
|
|
31
|
+
6. File index listing every file and its purpose
|
|
32
|
+
7. No reimplementation of steps owned by named sub-skills
|
|
27
33
|
```
|
|
28
34
|
|
|
29
35
|
### Refine skill handoff
|
|
@@ -36,8 +42,11 @@ Refine this existing skill:
|
|
|
36
42
|
**What to change:** [specific instructions to add/remove/modify]
|
|
37
43
|
**New gotchas to add:** [failure patterns discovered]
|
|
38
44
|
**What to preserve:** [working content — do not touch]
|
|
45
|
+
**Description rewrite (if activation issue):** [exact new trigger-catalog string]
|
|
46
|
+
**Composition change (if modularity issue):** [sub-skills to add/invoke or split plan]
|
|
39
47
|
|
|
40
48
|
Constraint: Only change what the observations demand. Do not reorganize working content.
|
|
49
|
+
Description must remain a trigger catalog (description-field.md), never story prose.
|
|
41
50
|
```
|
|
42
51
|
|
|
43
52
|
## Spawning a test subagent
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
# Description field (trigger catalog)
|
|
2
|
+
|
|
3
|
+
Source: [Anthropic — Skill authoring best practices](https://platform.claude.com/docs/en/agents-and-tools/agent-skills/best-practices) (Writing effective descriptions; metadata pre-load), [Claude Code Skills](https://docs.anthropic.com/en/docs/claude-code/skills), Thariq lessons (`thariq-x-post-skills.json`).
|
|
4
|
+
|
|
5
|
+
## Role
|
|
6
|
+
|
|
7
|
+
At session start, **only** each skill’s `name` and `description` load into context. The body loads after selection.
|
|
8
|
+
|
|
9
|
+
The description is **selection metadata**, not a summary of the skill and not process documentation. It answers: *should Claude load this skill for this user turn?*
|
|
10
|
+
|
|
11
|
+
> "The description field is not a summary — it’s a description of when to trigger."
|
|
12
|
+
|
|
13
|
+
> "The description is critical for skill selection: Claude uses it to choose the right Skill from potentially 100+ available Skills."
|
|
14
|
+
|
|
15
|
+
## Hard limits
|
|
16
|
+
|
|
17
|
+
| Rule | Value |
|
|
18
|
+
|---|---|
|
|
19
|
+
| Voice | Third person only (no I/you) |
|
|
20
|
+
| Max length | 1024 characters |
|
|
21
|
+
| XML | Forbidden |
|
|
22
|
+
| Empty | Forbidden |
|
|
23
|
+
|
|
24
|
+
## Required shape: trigger catalog
|
|
25
|
+
|
|
26
|
+
Two parts, dense, no story prose:
|
|
27
|
+
|
|
28
|
+
1. **Capability stem** (what) — 5–20 words of capability tokens. Fragments or semicolon-separated verbs. No motivation, no audience address, no “helps you”.
|
|
29
|
+
2. **Triggers** (when) — concrete phrases, slash-commands, file types, and domain nouns the user or model might emit. Prefer a labeled `Triggers:` segment.
|
|
30
|
+
|
|
31
|
+
### Canonical template
|
|
32
|
+
|
|
33
|
+
```yaml
|
|
34
|
+
description: >-
|
|
35
|
+
<capability tokens>. Triggers: <phrase>, <phrase>, <slash>, <filetype>, <near-miss exclusion if needed>.
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
### Good
|
|
39
|
+
|
|
40
|
+
```yaml
|
|
41
|
+
description: >-
|
|
42
|
+
Extract PDF text/tables; fill forms; merge docs. Triggers: PDF, .pdf, forms, document extraction, fill this form, merge PDFs.
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
```yaml
|
|
46
|
+
description: >-
|
|
47
|
+
Skill lifecycle: classify, scaffold, write via skill-writer, self-audit, compose sub-skills, polish description triggers. Triggers: build a skill, new skill workflow, improve this skill, optimize skill description, skill development lifecycle, skill modularity.
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
```yaml
|
|
51
|
+
description: >-
|
|
52
|
+
Generate commit messages from git diffs. Triggers: commit message, write a commit, staged changes, git commit help.
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
### Bad (story / waste)
|
|
56
|
+
|
|
57
|
+
```yaml
|
|
58
|
+
# Narrative — burns always-on tokens, weak for matching
|
|
59
|
+
description: >-
|
|
60
|
+
This skill helps you work with PDF files by guiding Claude through a careful
|
|
61
|
+
process of extraction and form filling so you get reliable results every time.
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
```yaml
|
|
65
|
+
# Vague — no match surface
|
|
66
|
+
description: Helps with documents
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
```yaml
|
|
70
|
+
# Implementation dump — body material, not metadata
|
|
71
|
+
description: >-
|
|
72
|
+
Uses pdfplumber and a five-step validate loop. See scripts/ for helpers.
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
```yaml
|
|
76
|
+
# First/second person
|
|
77
|
+
description: I can help you process Excel files
|
|
78
|
+
description: You can use this to process Excel files
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
## Authoring steps
|
|
82
|
+
|
|
83
|
+
1. List **capability tokens** (what the skill owns in one breath).
|
|
84
|
+
2. List **10+ user phrasings** that should select this skill (formal, casual, slash, file-type).
|
|
85
|
+
3. List **near-misses** that must *not* select it (sibling skills). Fold only the shortest distinguishing tokens into Triggers if needed.
|
|
86
|
+
4. Assemble stem + `Triggers:` list. Strip adjectives, benefits, and process narrative.
|
|
87
|
+
5. Count characters (≤1024). Prefer under ~400 when possible — every skill’s description is always loaded.
|
|
88
|
+
6. Run the checklist below.
|
|
89
|
+
|
|
90
|
+
## Description checklist
|
|
91
|
+
|
|
92
|
+
```
|
|
93
|
+
- [ ] Third person; no I/you
|
|
94
|
+
- [ ] Capability stem present (what), ≤20 words of tokens
|
|
95
|
+
- [ ] Triggers: segment (or equivalent dense when-list) with concrete phrases
|
|
96
|
+
- [ ] No story prose, benefits language, or implementation steps
|
|
97
|
+
- [ ] No XML; length ≤1024
|
|
98
|
+
- [ ] Distinguishable from sibling skills in the same domain
|
|
99
|
+
- [ ] Body holds process detail — not the description
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
## Where process lives
|
|
103
|
+
|
|
104
|
+
| Content | Location |
|
|
105
|
+
|---|---|
|
|
106
|
+
| When to select the skill | `description` frontmatter |
|
|
107
|
+
| How to run the skill | SKILL.md body + companions |
|
|
108
|
+
| Refusal / boundary narrative | When-this-applies section in body |
|
|
109
|
+
| Sub-skill invocation | Body Sub-skills table (`skill-modularity.md`) |
|
|
110
|
+
|
|
111
|
+
## Polish workflow
|
|
112
|
+
|
|
113
|
+
`workflows/polish-skill.md` Step 1 is the dedicated description pass: rewrite any story description into a trigger catalog and re-check discovery against phrase lists.
|
|
@@ -12,8 +12,12 @@ Source synthesis: [Anthropic best practices](https://platform.claude.com/docs/en
|
|
|
12
12
|
> "Match the level of specificity to the task's fragility and variability."
|
|
13
13
|
- [ ] **Naming convention** — Name uses gerund form (verb-ing) unless it's a well-known acronym or proper name. Lowercase, numbers, hyphens only. Max 64 chars. No reserved words.
|
|
14
14
|
> "Use consistent naming patterns to make Skills easier to reference."
|
|
15
|
-
- [ ] **Description
|
|
15
|
+
- [ ] **Description is a trigger catalog** — Capability stem (what tokens) + concrete Triggers list (when). Third person. Max 1024 chars. No XML. Spec: `description-field.md`.
|
|
16
16
|
> "The description is critical for skill selection: Claude uses it to choose the right Skill from potentially 100+ available Skills."
|
|
17
|
+
- [ ] **Description is not a story** — No narrative prose, benefits language ("helps you"), first/second person, or process/implementation dump in frontmatter.
|
|
18
|
+
> "The description field is not a summary — it's a description of when to trigger."
|
|
19
|
+
- [ ] **Description match surface** — Includes specific phrases, slash forms, and file types a user would say; distinguishable from sibling skills.
|
|
20
|
+
> "Be specific and include key terms."
|
|
17
21
|
- [ ] **SKILL.md body under 500 lines**
|
|
18
22
|
> "Keep SKILL.md body under 500 lines for optimal performance."
|
|
19
23
|
- [ ] **One level deep** — All reference files link directly from SKILL.md. No nested references.
|
|
@@ -78,10 +82,23 @@ Source synthesis: [Anthropic best practices](https://platform.claude.com/docs/en
|
|
|
78
82
|
- [ ] **Persistent data uses `${CLAUDE_PLUGIN_DATA}`** — Not stored in skill directory itself.
|
|
79
83
|
> "Data stored in the skill directory may be deleted when you upgrade the skill."
|
|
80
84
|
|
|
81
|
-
##
|
|
85
|
+
## Modularity and composition
|
|
82
86
|
|
|
83
|
-
|
|
87
|
+
Mandatory for every skill. Spec: `skill-modularity.md`. Progressive disclosure (file split) does not satisfy these items.
|
|
88
|
+
|
|
89
|
+
- [ ] **Single capability boundary** — One clear job in one sentence. Unrelated jobs are separate skills or an orchestrator that only routes to named sub-skills.
|
|
90
|
+
> "The best skills fit cleanly into one; the more confusing ones straddle several."
|
|
91
|
+
- [ ] **Compose before reimplement** — Steps an existing skill already owns are invoked by name, not pasted into this package. Local reimplementation has a one-line why in the gap analysis or gotchas.
|
|
84
92
|
> "You can just reference other skills by name, and the model will invoke them if they are installed."
|
|
93
|
+
- [ ] **Sub-skills table (when composing)** — Each invoked skill lists when to call it, what it produces, and missing-install behavior. N/A only when the skill is a pure leaf (invokes no peers).
|
|
94
|
+
> "You may want to have skills that depend on each other."
|
|
95
|
+
- [ ] **Sibling boundary clear** — Description and when-this-applies distinguish this skill from related skills in the same domain. No silent overlap.
|
|
96
|
+
> "The description field is not a summary — it's a description of when to trigger."
|
|
97
|
+
- [ ] **No monolith packing** — Multi-capability content is not stuffed under one description. Either split packages or thin orchestrator + peer sub-skills (not nested fake skills under `workflows/`).
|
|
98
|
+
> skill-modularity.md — anti-patterns: monolith, silent reimplementation, folder nesting as composition.
|
|
99
|
+
|
|
100
|
+
## Hooks (if applicable)
|
|
101
|
+
|
|
85
102
|
- [ ] **Hooks declared** — If skill registers hooks, their purpose and scope is stated.
|
|
86
103
|
> "Skills can include hooks that are only activated when the skill is called."
|
|
87
104
|
|
|
@@ -89,4 +106,4 @@ Source synthesis: [Anthropic best practices](https://platform.claude.com/docs/en
|
|
|
89
106
|
|
|
90
107
|
## Usage
|
|
91
108
|
|
|
92
|
-
Copy this checklist into your response after building. Check off each item. Any item that fails → fix before delivering. Any item marked "if applicable" that doesn't apply → mark N/A with a one-line reason.
|
|
109
|
+
Copy this checklist into your response after building. Check off each item. Any item that fails → fix before delivering. Any item marked "if applicable" that doesn't apply → mark N/A with a one-line reason. Sub-skills table may be N/A for pure leaf skills; single capability boundary and no-monolith never are.
|