claude-dev-env 2.0.2 → 2.2.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/CLAUDE.md +1 -1
- package/hooks/blocking/CLAUDE.md +1 -0
- package/hooks/blocking/code_rules_shared.py +126 -47
- package/hooks/blocking/config/CLAUDE.md +2 -0
- package/hooks/blocking/config/verified_commit_context_constants.py +21 -0
- package/hooks/blocking/config/verified_commit_gate_output_constants.py +14 -0
- package/hooks/blocking/conftest.py +36 -30
- package/hooks/blocking/convergence_gate_blocker.py +76 -8
- package/hooks/blocking/plain_language_blocker.py +8 -0
- package/hooks/blocking/state_description_blocker.py +4 -1
- package/hooks/blocking/test_code_rules_shared.py +120 -20
- package/hooks/blocking/test_convergence_gate_blocker.py +146 -0
- package/hooks/blocking/test_plain_language_blocker.py +15 -0
- package/hooks/blocking/test_state_description_blocker.py +15 -0
- package/hooks/blocking/test_verified_commit_config_bootstrap.py +18 -0
- package/hooks/blocking/test_verified_commit_gate_additional_context.py +134 -0
- package/hooks/blocking/tests/test_verified_commit_gate.py +41 -0
- package/hooks/blocking/verified_commit_config_bootstrap.py +22 -10
- package/hooks/blocking/verified_commit_gate.py +113 -568
- package/hooks/blocking/verified_commit_gate_parts/CLAUDE.md +28 -0
- package/hooks/blocking/verified_commit_gate_parts/__init__.py +1 -0
- package/hooks/blocking/verified_commit_gate_parts/command_tokenization.py +174 -0
- package/hooks/blocking/verified_commit_gate_parts/deny_payload.py +53 -0
- package/hooks/blocking/verified_commit_gate_parts/deny_reason.py +80 -0
- package/hooks/blocking/verified_commit_gate_parts/directory_resolution.py +170 -0
- package/hooks/blocking/verified_commit_gate_parts/gated_invocations.py +205 -0
- package/hooks/blocking/verified_commit_gate_parts/tests/conftest.py +10 -0
- package/hooks/blocking/verified_commit_gate_parts/tests/test_command_tokenization.py +94 -0
- package/hooks/blocking/verified_commit_gate_parts/tests/test_deny_payload.py +17 -0
- package/hooks/blocking/verified_commit_gate_parts/tests/test_deny_reason.py +38 -0
- package/hooks/blocking/verified_commit_gate_parts/tests/test_directory_resolution.py +71 -0
- package/hooks/blocking/verified_commit_gate_parts/tests/test_gated_invocations.py +61 -0
- package/hooks/hooks_constants/CLAUDE.md +4 -1
- package/hooks/hooks_constants/code_rules_path_utils_constants.py +1 -0
- package/hooks/hooks_constants/convergence_gate_blocker_constants.py +36 -0
- package/hooks/hooks_constants/harness_scratchpad_constants.py +10 -9
- package/hooks/hooks_constants/mypy_integration_constants.py +16 -0
- package/hooks/validators/mypy_integration.py +145 -24
- package/hooks/validators/python_antipattern_checks.py +16 -0
- package/hooks/validators/run_all_validators.py +9 -3
- package/hooks/validators/test_mypy_integration.py +154 -0
- package/hooks/validators/test_python_antipattern_checks.py +112 -1
- package/hooks/validators/test_run_all_validators_pretooluse.py +16 -0
- package/package.json +1 -1
- package/rules/CLAUDE.md +1 -0
- package/rules/verified-commit-gate-skip.md +28 -0
- package/skills/_shared/pr-loop/CLAUDE.md +18 -13
- package/skills/_shared/pr-loop/portable-driver.md +150 -0
- package/skills/_shared/pr-loop/scripts/CLAUDE.md +3 -0
- package/skills/_shared/pr-loop/scripts/build_converge_task_list.py +310 -0
- package/skills/_shared/pr-loop/scripts/portable_converge_driver.py +1637 -0
- package/skills/_shared/pr-loop/scripts/select_converge_pacer.py +215 -0
- package/skills/_shared/pr-loop/scripts/skills_pr_loop_constants/CLAUDE.md +3 -0
- package/skills/_shared/pr-loop/scripts/skills_pr_loop_constants/converge_task_list_constants.py +56 -0
- package/skills/_shared/pr-loop/scripts/skills_pr_loop_constants/pacer_constants.py +47 -0
- package/skills/_shared/pr-loop/scripts/skills_pr_loop_constants/portable_driver_constants.py +181 -0
- package/skills/_shared/pr-loop/scripts/test_build_converge_task_list.py +140 -0
- package/skills/_shared/pr-loop/scripts/test_portable_converge_driver.py +1119 -0
- package/skills/_shared/pr-loop/scripts/test_select_converge_pacer.py +207 -0
- package/skills/auditing-claude-config/CLAUDE.md +2 -1
- package/skills/auditing-claude-config/SKILL.md +114 -176
- package/skills/auditing-claude-config/reference/probe-hook.md +74 -0
- package/skills/autoconverge/CLAUDE.md +6 -3
- package/skills/autoconverge/SKILL.md +421 -346
- package/skills/autoconverge/reference/CLAUDE.md +1 -0
- package/skills/autoconverge/reference/convergence.md +5 -5
- package/skills/autoconverge/reference/copilot-findings.md +51 -0
- package/skills/autoconverge/reference/multi-pr.md +33 -2
- package/skills/autoconverge/reference/stop-conditions.md +9 -6
- package/skills/autoconverge/test_portable_pacer_gate.py +54 -0
- package/skills/closeout/SKILL.md +7 -9
- package/skills/copilot-finding-triage/SKILL.md +21 -11
- package/skills/copilot-review/CLAUDE.md +3 -2
- package/skills/copilot-review/SKILL.md +119 -155
- package/skills/copilot-review/templates/subagent-prompt.md +49 -0
- package/skills/fresh-branch/CLAUDE.md +6 -9
- package/skills/fresh-branch/SKILL.md +84 -33
- package/skills/fresh-branch/scripts/create_fresh_branch.py +445 -0
- package/skills/fresh-branch/scripts/fresh_branch_scripts_constants/__init__.py +1 -0
- package/skills/fresh-branch/scripts/fresh_branch_scripts_constants/fresh_branch_cli_constants.py +74 -0
- package/skills/fresh-branch/scripts/test_create_fresh_branch.py +670 -0
- package/skills/pr-converge/CLAUDE.md +4 -3
- package/skills/pr-converge/SKILL.md +469 -422
- package/skills/pr-converge/reference/CLAUDE.md +1 -0
- package/skills/pr-converge/reference/multi-pr-orchestration.md +5 -1
- package/skills/pr-converge/reference/per-tick.md +51 -24
- package/skills/pr-converge/reference/progress-checklist.md +168 -0
- package/skills/pr-converge/test_portable_pacer_gate.py +67 -0
- package/skills/pr-converge/test_step5_host_branch.py +8 -6
- package/skills/pr-converge/workflows/schedule-wakeup-loop.md +5 -3
- package/skills/pr-loop-cloud-transport/SKILL.md +1 -1
- package/skills/privacy-hygiene/SKILL.md +68 -115
- package/skills/privacy-hygiene/reference/sweep-procedure.md +62 -0
- package/skills/session-log/CLAUDE.md +2 -1
- package/skills/session-log/SKILL.md +4 -26
- package/skills/session-log/templates/frontmatter.md +40 -0
- package/skills/skill-builder/CLAUDE.md +8 -7
- package/skills/skill-builder/SKILL.md +26 -11
- package/skills/skill-builder/references/CLAUDE.md +3 -1
- package/skills/skill-builder/references/delegation-map.md +21 -12
- package/skills/skill-builder/references/description-field.md +9 -11
- package/skills/skill-builder/references/deterministic-elements.md +218 -0
- package/skills/skill-builder/references/self-audit-checklist.md +62 -45
- package/skills/skill-builder/references/skill-modularity.md +8 -9
- package/skills/skill-builder/templates/CLAUDE.md +2 -2
- package/skills/skill-builder/templates/gap-analysis.md +15 -0
- package/skills/skill-builder/workflows/CLAUDE.md +5 -5
- package/skills/skill-builder/workflows/improve-skill.md +18 -9
- package/skills/skill-builder/workflows/new-skill.md +23 -15
- package/skills/skill-builder/workflows/polish-skill.md +28 -21
|
@@ -1,115 +1,68 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: privacy-hygiene
|
|
3
|
-
description: Full-repo sweep for personal data and secrets before commit or durable GitHub post. Use when preparing a PR, cleaning a leak, or when `pii_prevention_blocker` denies a write, post, or commit. Triggers on "privacy hygiene", "personal data", "secret sweep", "sanitize repository", "/privacy-hygiene".
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# privacy-hygiene
|
|
7
|
-
|
|
8
|
-
## Overview
|
|
9
|
-
|
|
10
|
-
Find and remove personal data and high-confidence secrets before they land in git history or a durable GitHub post. The `pii_prevention_blocker` hook blocks the common cases at write, post, and commit time. This skill is the full sweep when you need a broader pass or a remediation plan.
|
|
11
|
-
|
|
12
|
-
**Announce at start:** "Running privacy-hygiene sweep."
|
|
13
|
-
|
|
14
|
-
## When to run a full sweep
|
|
15
|
-
|
|
16
|
-
- Before the first push of a branch that touched logs, screenshots, config samples, or machine-local paths
|
|
17
|
-
- After a hook block on email, home path, LAN address, or secret material
|
|
18
|
-
- Before opening a PR to a repository that is public (or will be made public)
|
|
19
|
-
- After pasting support tickets, env dumps, or terminal transcripts into the tree
|
|
20
|
-
|
|
21
|
-
## What the automated gate blocks
|
|
22
|
-
|
|
23
|
-
| Category | Blocked examples | Allowed residual |
|
|
24
|
-
|---|---|---|
|
|
25
|
-
| Email | `user@example.com` | `user@example.com`, `user@example.org`, `user@example.net` |
|
|
26
|
-
| Home path | `C:/Users/example/...`, `/Users/example/...`, `/home/example/...` | `C:/Users/example/...`, `C:/Users/<you>/...`, `/Users/alice/...` |
|
|
27
|
-
| LAN address | Unlisted `10.x` / `172.16–31.x` / `192.168.x` | Public addresses; your NAS host from `CLAUDE_NAS_HOST` or `~/.claude/local-identity.json`; entries in `ALL_ALLOWLISTED_PRIVATE_IP_ADDRESSES` |
|
|
28
|
-
| Secret | `ghp_…`, `github_pat_…`, `AKIA…`, PEM private-key headers | Public keys, redacted `***`, env var names without values |
|
|
29
|
-
|
|
30
|
-
Surfaces:
|
|
31
|
-
|
|
32
|
-
1. **Write / Edit / MultiEdit** — payload text about to land on disk (via PreToolUse dispatcher)
|
|
33
|
-
2. **Durable posts** — `gh pr/issue create|comment|edit|review` bodies and GitHub MCP body/comment fields (Bash and PowerShell)
|
|
34
|
-
3. **git commit** — staged blob text (non-exempt paths) on Bash and PowerShell, including `git.exe` and flag forms (`--no-verify`, `-c`, `-C`). Commit message bodies (`-m` / `-F`) are out of scope for the automated gate
|
|
35
|
-
|
|
36
|
-
## Sweep procedure
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
-
|
|
66
|
-
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
| Hit | Fix |
|
|
71
|
-
|---|---|
|
|
72
|
-
| Real email | Replace with `user@example.com` or remove |
|
|
73
|
-
| Home path | Use `Path.home()`, `~`, or `C:/Users/<you>/` |
|
|
74
|
-
| LAN address | Remove, use a hostname, or — for your own NAS — set the host in `CLAUDE_NAS_HOST` or `~/.claude/local-identity.json`, both of which stay out of git |
|
|
75
|
-
| Credential material | Remove from the tree; rotate the credential; load from env/secret store |
|
|
76
|
-
| Already committed | Rewrite is not enough if already pushed — rotate secrets; scrub history only with explicit user approval |
|
|
77
|
-
|
|
78
|
-
### 4. Re-check before commit / post
|
|
79
|
-
|
|
80
|
-
- Stage only clean files
|
|
81
|
-
- Prefer `--body-file` for `gh` posts (also required by the gh-body-file rule)
|
|
82
|
-
- Let `pii_prevention_blocker` re-run on the next Write / commit / post
|
|
83
|
-
|
|
84
|
-
## Accepted residual (do not over-scrub)
|
|
85
|
-
|
|
86
|
-
- LICENSE copyright lines naming a legal person or org that owns the work
|
|
87
|
-
- Intentional public maintainer identity published on purpose
|
|
88
|
-
- Example domains reserved for documentation (`example.com` and siblings)
|
|
89
|
-
- Placeholder home users (`example`, `user`, `alice`, `<you>`, `YOUR_USER`)
|
|
90
|
-
- The NAS host you configure locally (allowlisted at scan time, never committed)
|
|
91
|
-
- Public addresses and docs that name private ranges without a live host (still prefer hostnames)
|
|
92
|
-
|
|
93
|
-
## Enable on any machine / public repository
|
|
94
|
-
|
|
95
|
-
Install or reinstall the package so hooks and this skill land under `~/.claude/`:
|
|
96
|
-
|
|
97
|
-
```
|
|
98
|
-
cd packages/claude-dev-env
|
|
99
|
-
node bin/install.mjs
|
|
100
|
-
```
|
|
101
|
-
|
|
102
|
-
Hooks register via `hooks/hooks.json` into `~/.claude/settings.json`. Once installed, the same gates apply in every repository the agent touches — private or public.
|
|
103
|
-
|
|
104
|
-
## Open knobs
|
|
105
|
-
|
|
106
|
-
- **NAS / LAN allowlist:** Unlisted private IPs are blocked. The scanner resolves your NAS host from `CLAUDE_NAS_HOST`, then `~/.claude/local-identity.json` (`nas.host`), and allowlists it when it is a private address, so the committed tree holds no real host. `ALL_ALLOWLISTED_PRIVATE_IP_ADDRESSES` in `hooks_constants` holds the static allowlist for any host every machine must share.
|
|
107
|
-
- **Commit-scan exempt repositories:** named owner/repo slugs skip the staged-commit PII scan only. Set `CLAUDE_PII_EXEMPT_REPOS` (comma-separated `owner/repo` values) or list them under `pii_exempt_repositories` in `~/.claude/local-identity.json`. Matching uses the repository's `remote.origin.url` and accepts only the exact host `github.com` (https, ssh scheme, or scp-style). A repository with no readable origin is never exempt (fail-closed to scanning). Write / Edit / MultiEdit and durable post bodies still scan in every repository.
|
|
108
|
-
- **Public maintainer identity:** when a real email or name is intentional product surface, keep it and note that in the PR body so reviewers do not treat it as a leak.
|
|
109
|
-
|
|
110
|
-
## What this skill does not do
|
|
111
|
-
|
|
112
|
-
- Does not rewrite git history without explicit user approval
|
|
113
|
-
- Does not rotate credentials for you
|
|
114
|
-
- Does not replace the write-time hook — it complements it
|
|
115
|
-
- Does not scan commit-message text (`-m` / `-F`); keep messages free of secrets yourself
|
|
1
|
+
---
|
|
2
|
+
name: privacy-hygiene
|
|
3
|
+
description: Full-repo sweep for personal data and secrets before commit or durable GitHub post. Use when preparing a PR, cleaning a leak, or when `pii_prevention_blocker` denies a write, post, or commit. Triggers on "privacy hygiene", "personal data", "secret sweep", "sanitize repository", "/privacy-hygiene".
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# privacy-hygiene
|
|
7
|
+
|
|
8
|
+
## Overview
|
|
9
|
+
|
|
10
|
+
Find and remove personal data and high-confidence secrets before they land in git history or a durable GitHub post. The `pii_prevention_blocker` hook blocks the common cases at write, post, and commit time. This skill is the full sweep when you need a broader pass or a remediation plan.
|
|
11
|
+
|
|
12
|
+
**Announce at start:** "Running privacy-hygiene sweep."
|
|
13
|
+
|
|
14
|
+
## When to run a full sweep
|
|
15
|
+
|
|
16
|
+
- Before the first push of a branch that touched logs, screenshots, config samples, or machine-local paths
|
|
17
|
+
- After a hook block on email, home path, LAN address, or secret material
|
|
18
|
+
- Before opening a PR to a repository that is public (or will be made public)
|
|
19
|
+
- After pasting support tickets, env dumps, or terminal transcripts into the tree
|
|
20
|
+
|
|
21
|
+
## What the automated gate blocks
|
|
22
|
+
|
|
23
|
+
| Category | Blocked examples | Allowed residual |
|
|
24
|
+
|---|---|---|
|
|
25
|
+
| Email | `user@example.com` | `user@example.com`, `user@example.org`, `user@example.net` |
|
|
26
|
+
| Home path | `C:/Users/example/...`, `/Users/example/...`, `/home/example/...` | `C:/Users/example/...`, `C:/Users/<you>/...`, `/Users/alice/...` |
|
|
27
|
+
| LAN address | Unlisted `10.x` / `172.16–31.x` / `192.168.x` | Public addresses; your NAS host from `CLAUDE_NAS_HOST` or `~/.claude/local-identity.json`; entries in `ALL_ALLOWLISTED_PRIVATE_IP_ADDRESSES` |
|
|
28
|
+
| Secret | `ghp_…`, `github_pat_…`, `AKIA…`, PEM private-key headers | Public keys, redacted `***`, env var names without values |
|
|
29
|
+
|
|
30
|
+
Surfaces:
|
|
31
|
+
|
|
32
|
+
1. **Write / Edit / MultiEdit** — payload text about to land on disk (via PreToolUse dispatcher)
|
|
33
|
+
2. **Durable posts** — `gh pr/issue create|comment|edit|review` bodies and GitHub MCP body/comment fields (Bash and PowerShell)
|
|
34
|
+
3. **git commit** — staged blob text (non-exempt paths) on Bash and PowerShell, including `git.exe` and flag forms (`--no-verify`, `-c`, `-C`). Commit message bodies (`-m` / `-F`) are out of scope for the automated gate
|
|
35
|
+
|
|
36
|
+
## Sweep procedure
|
|
37
|
+
|
|
38
|
+
Run the full-tree sweep in
|
|
39
|
+
[`reference/sweep-procedure.md`](reference/sweep-procedure.md): scope the tree,
|
|
40
|
+
run the ripgrep pass for the four high-confidence pattern families (email, home
|
|
41
|
+
path, LAN address, secret), review each hit against the ignore list, and
|
|
42
|
+
remediate. It also lists the accepted residual — what to leave in place rather
|
|
43
|
+
than over-scrub. The ripgrep command is the only full-tree pass; the write-time
|
|
44
|
+
`pii_prevention_blocker` scans one payload at a time.
|
|
45
|
+
|
|
46
|
+
## Enable on any machine / public repository
|
|
47
|
+
|
|
48
|
+
Install or reinstall the package so hooks and this skill land under `~/.claude/`:
|
|
49
|
+
|
|
50
|
+
```
|
|
51
|
+
cd packages/claude-dev-env
|
|
52
|
+
node bin/install.mjs
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
Hooks register via `hooks/hooks.json` into `~/.claude/settings.json`. Once installed, the same gates apply in every repository the agent touches — private or public.
|
|
56
|
+
|
|
57
|
+
## Open knobs
|
|
58
|
+
|
|
59
|
+
- **NAS / LAN allowlist:** Unlisted private IPs are blocked. The scanner resolves your NAS host from `CLAUDE_NAS_HOST`, then `~/.claude/local-identity.json` (`nas.host`), and allowlists it when it is a private address, so the committed tree holds no real host. `ALL_ALLOWLISTED_PRIVATE_IP_ADDRESSES` in `hooks_constants` holds the static allowlist for any host every machine must share.
|
|
60
|
+
- **Commit-scan exempt repositories:** named owner/repo slugs skip the staged-commit PII scan only. Set `CLAUDE_PII_EXEMPT_REPOS` (comma-separated `owner/repo` values) or list them under `pii_exempt_repositories` in `~/.claude/local-identity.json`. Matching uses the repository's `remote.origin.url` and accepts only the exact host `github.com` (https, ssh scheme, or scp-style). A repository with no readable origin is never exempt (fail-closed to scanning). Write / Edit / MultiEdit and durable post bodies still scan in every repository.
|
|
61
|
+
- **Public maintainer identity:** when a real email or name is intentional product surface, keep it and note that in the PR body so reviewers do not treat it as a leak.
|
|
62
|
+
|
|
63
|
+
## What this skill does not do
|
|
64
|
+
|
|
65
|
+
- Does not rewrite git history without explicit user approval
|
|
66
|
+
- Does not rotate credentials for you
|
|
67
|
+
- Does not replace the write-time hook — it complements it
|
|
68
|
+
- Does not scan commit-message text (`-m` / `-F`); keep messages free of secrets yourself
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
# Full-tree PII sweep procedure
|
|
2
|
+
|
|
3
|
+
The on-demand full-repository sweep for the `privacy-hygiene` skill — the
|
|
4
|
+
complement to the write-time `pii_prevention_blocker`, which scans one payload at
|
|
5
|
+
a time. The canonical per-payload patterns live in the hooks' `pii_scanner` and
|
|
6
|
+
`pii_prevention_constants` modules; the ripgrep command below is the only
|
|
7
|
+
full-tree pass. The hub ([`../SKILL.md`](../SKILL.md)) points here.
|
|
8
|
+
|
|
9
|
+
## 1. Scope the tree
|
|
10
|
+
|
|
11
|
+
```
|
|
12
|
+
git status -sb
|
|
13
|
+
git diff --stat
|
|
14
|
+
git diff --cached --stat
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
Prefer the branch diff vs `origin/main` for PR prep:
|
|
18
|
+
|
|
19
|
+
```
|
|
20
|
+
git fetch origin main
|
|
21
|
+
git diff --name-only origin/main...HEAD
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
## 2. Search for high-confidence patterns
|
|
25
|
+
|
|
26
|
+
Run from the repo root (PowerShell-friendly example):
|
|
27
|
+
|
|
28
|
+
```
|
|
29
|
+
rg -n --hidden -g '!node_modules' -g '!.git' -e '@[A-Za-z0-9.-]+\.[A-Za-z]{2,}' -e 'Users[/\\][^/\\]+' -e '[/]home/[^/]+' -e '\b(10\.\d+\.\d+\.\d+|192\.168\.\d+\.\d+|172\.(1[6-9]|2\d|3[0-1])\.\d+\.\d+)\b' -e '\b(ghp|gho|ghu|ghs|ghr)_[A-Za-z0-9_]{20,}\b' -e '\bgithub_pat_[A-Za-z0-9_]{20,}\b' -e '\bAKIA[0-9A-Z]{16}\b' -e '-----BEGIN [A-Z ]*PRIVATE KEY-----'
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
Review each hit. Ignore:
|
|
33
|
+
|
|
34
|
+
- Test fixtures under `test_*.py` / `*_test.py` / `/tests/` (synthetic only)
|
|
35
|
+
- `LICENSE` / copyright notice identity that is intentional and public
|
|
36
|
+
- This package's own `pii_scanner` / `pii_prevention_constants` modules
|
|
37
|
+
- Documented placeholders (`user@example.com`, `C:/Users/<you>/`)
|
|
38
|
+
|
|
39
|
+
## 3. Remediate
|
|
40
|
+
|
|
41
|
+
| Hit | Fix |
|
|
42
|
+
|---|---|
|
|
43
|
+
| Real email | Replace with `user@example.com` or remove |
|
|
44
|
+
| Home path | Use `Path.home()`, `~`, or `C:/Users/<you>/` |
|
|
45
|
+
| LAN address | Remove, use a hostname, or — for your own NAS — set the host in `CLAUDE_NAS_HOST` or `~/.claude/local-identity.json`, both of which stay out of git |
|
|
46
|
+
| Credential material | Remove from the tree; rotate the credential; load from env/secret store |
|
|
47
|
+
| Already committed | Rewrite is not enough if already pushed — rotate secrets; scrub history only with explicit user approval |
|
|
48
|
+
|
|
49
|
+
## 4. Re-check before commit / post
|
|
50
|
+
|
|
51
|
+
- Stage only clean files
|
|
52
|
+
- Prefer `--body-file` for `gh` posts (also required by the gh-body-file rule)
|
|
53
|
+
- Let `pii_prevention_blocker` re-run on the next Write / commit / post
|
|
54
|
+
|
|
55
|
+
## Accepted residual (do not over-scrub)
|
|
56
|
+
|
|
57
|
+
- LICENSE copyright lines naming a legal person or org that owns the work
|
|
58
|
+
- Intentional public maintainer identity published on purpose
|
|
59
|
+
- Example domains reserved for documentation (`example.com` and siblings)
|
|
60
|
+
- Placeholder home users (`example`, `user`, `alice`, `<you>`, `YOUR_USER`)
|
|
61
|
+
- The NAS host you configure locally (allowlisted at scan time, never committed)
|
|
62
|
+
- Public addresses and docs that name private ranges without a live host (still prefer hostnames)
|
|
@@ -12,7 +12,8 @@ Produces a self-contained HTML session report shaped to the session's character
|
|
|
12
12
|
|
|
13
13
|
| File | Purpose |
|
|
14
14
|
|---|---|
|
|
15
|
-
| `SKILL.md` | Hub — six steps, gotchas, backend detection,
|
|
15
|
+
| `SKILL.md` | Hub — six steps, gotchas, backend detection, run-and-report checklist. |
|
|
16
|
+
| `templates/frontmatter.md` | The session-page frontmatter contract and the Step 3 notes block. |
|
|
16
17
|
|
|
17
18
|
## Six steps
|
|
18
19
|
|
|
@@ -60,21 +60,7 @@ Resolve the metadata used by the frontmatter and the vault path:
|
|
|
60
60
|
- **Date:** today's date
|
|
61
61
|
- **Title:** a 2–5 word summary of the session's primary outcome. Examples: "Amazon Auth Migration", "Source Loading Fix", "PR 475 Convergence". Avoid generic titles like "Bug Fixes".
|
|
62
62
|
|
|
63
|
-
The frontmatter contract every session report carries (inside an HTML comment, as the first child of `<body>`)
|
|
64
|
-
|
|
65
|
-
```html
|
|
66
|
-
<!--
|
|
67
|
-
type: session-report
|
|
68
|
-
project: [name]
|
|
69
|
-
session: [N]
|
|
70
|
-
session_id: [uuid]
|
|
71
|
-
date: [YYYY-MM-DD]
|
|
72
|
-
status: completed|in-progress|blocked
|
|
73
|
-
blocked: true|false
|
|
74
|
-
vault_context_retrieved: true|false
|
|
75
|
-
tags: [session, [project-tag], [topic-tags]]
|
|
76
|
-
-->
|
|
77
|
-
```
|
|
63
|
+
The frontmatter contract every session report carries (inside an HTML comment, as the first child of `<body>`) is the metadata block in [`templates/frontmatter.md`](templates/frontmatter.md).
|
|
78
64
|
|
|
79
65
|
Every session report carries this metadata block verbatim so vault search and the tidy step in step 5 work. **Initial values for Step 2's Write:** substitute concrete values for every placeholder — for `session_id`, write the value read from `CLAUDE_CODE_SESSION_ID` in step 1 (or `unknown` when the variable is unset); for `vault_context_retrieved`, write the literal value `false` (the safe default before Step 3's vault-MCP-tool scan completes). Step 3 then Edits `vault_context_retrieved` to `true` if any of the three vault MCP tools fired this session.
|
|
80
66
|
|
|
@@ -113,16 +99,7 @@ Review the conversation history for any use of these vault MCP tools (look only
|
|
|
113
99
|
Edit the vault HTML via two Edit calls:
|
|
114
100
|
|
|
115
101
|
1. Set the frontmatter `vault_context_retrieved` field to `true` when any of the three tools fired this session, `false` otherwise.
|
|
116
|
-
2. Append one fact — vault-context status — into whatever section the report designer placed for notes / metadata / references. If the report has no such section, append a fresh `<h2>Notes</h2>` block at the end of the content
|
|
117
|
-
|
|
118
|
-
```html
|
|
119
|
-
<h2>Notes</h2>
|
|
120
|
-
<ul>
|
|
121
|
-
<!-- Pick exactly one of the two forms based on whether vault MCP tools fired this session: -->
|
|
122
|
-
<li><strong>Vault context:</strong> Retrieved ([list of note paths])</li>
|
|
123
|
-
<li><strong>Vault context:</strong> Not retrieved</li>
|
|
124
|
-
</ul>
|
|
125
|
-
```
|
|
102
|
+
2. Append one fact — vault-context status — into whatever section the report designer placed for notes / metadata / references. If the report has no such section, append a fresh `<h2>Notes</h2>` block (in [`templates/frontmatter.md`](templates/frontmatter.md)) at the end of the content.
|
|
126
103
|
|
|
127
104
|
If the report already has a notes / references section, use Edit to insert one matching child element at the end of that section. The element shape mirrors whatever the section already uses: an extra `<li>` before the closing `</ul>` for a list, an extra `<dt>Vault context</dt><dd>…</dd>` pair before the closing `</dl>` for a description list, an extra `<p><strong>Vault context:</strong> …</p>` before the section's closing tag for a paragraph-based section. Pick the form that matches the surrounding markup.
|
|
128
105
|
|
|
@@ -189,4 +166,5 @@ The primary outcome comes from the session title resolved in step 1.
|
|
|
189
166
|
|
|
190
167
|
## Folder map
|
|
191
168
|
|
|
192
|
-
- `SKILL.md` — this hub.
|
|
169
|
+
- `SKILL.md` — this hub.
|
|
170
|
+
- `templates/frontmatter.md` — the report frontmatter contract and the Step 3 notes block.
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
# Session-log template blocks
|
|
2
|
+
|
|
3
|
+
The two verbatim HTML blocks the `session-log` skill drops into every session
|
|
4
|
+
page. The hub ([`../SKILL.md`](../SKILL.md)) points here from Step 1 / Step 2
|
|
5
|
+
(frontmatter) and Step 3 (notes).
|
|
6
|
+
|
|
7
|
+
## Frontmatter contract
|
|
8
|
+
|
|
9
|
+
The first child of `<body>`, inside an HTML comment. Substitute a concrete value
|
|
10
|
+
for every placeholder; `vault_context_retrieved` starts `false` and Step 3 sets
|
|
11
|
+
it.
|
|
12
|
+
|
|
13
|
+
```html
|
|
14
|
+
<!--
|
|
15
|
+
type: session-report
|
|
16
|
+
project: [name]
|
|
17
|
+
session: [N]
|
|
18
|
+
session_id: [uuid]
|
|
19
|
+
date: [YYYY-MM-DD]
|
|
20
|
+
status: completed|in-progress|blocked
|
|
21
|
+
blocked: true|false
|
|
22
|
+
vault_context_retrieved: true|false
|
|
23
|
+
tags: [session, [project-tag], [topic-tags]]
|
|
24
|
+
-->
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
## Notes block (Step 3)
|
|
28
|
+
|
|
29
|
+
Append one vault-context line. When the page already carries a notes /
|
|
30
|
+
references section, add a matching child element to that section; use the block
|
|
31
|
+
below only when the page has no such section.
|
|
32
|
+
|
|
33
|
+
```html
|
|
34
|
+
<h2>Notes</h2>
|
|
35
|
+
<ul>
|
|
36
|
+
<!-- Pick exactly one of the two forms based on whether vault MCP tools fired this session: -->
|
|
37
|
+
<li><strong>Vault context:</strong> Retrieved ([list of note paths])</li>
|
|
38
|
+
<li><strong>Vault context:</strong> Not retrieved</li>
|
|
39
|
+
</ul>
|
|
40
|
+
```
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
# skill-builder
|
|
2
2
|
|
|
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.
|
|
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, require deterministic steps as code, self-audit, and refine from real usage.
|
|
4
4
|
|
|
5
|
-
**Trigger:** build a skill, new skill workflow, improve this skill, optimize skill description, skill development lifecycle, skill modularity, description trigger catalog.
|
|
5
|
+
**Trigger:** build a skill, new skill workflow, improve this skill, optimize skill description, skill development lifecycle, skill modularity, description trigger catalog, deterministic skill scripts.
|
|
6
6
|
|
|
7
7
|
## Purpose
|
|
8
8
|
|
|
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 (
|
|
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 (composition plan, description triggers, deterministic inventory), delegates writing, and self-audits.
|
|
10
10
|
|
|
11
11
|
## Key files
|
|
12
12
|
|
|
@@ -17,13 +17,14 @@ Enforces craft standards for new and existing skills. For quick one-off SKILL.md
|
|
|
17
17
|
| `references/progressive-disclosure.md` | Hub pattern, folder conventions, hard rules |
|
|
18
18
|
| `references/skill-modularity.md` | Cross-skill modularity, sub-skills, composition plan |
|
|
19
19
|
| `references/description-field.md` | Description as trigger catalog (not story prose) |
|
|
20
|
-
| `references/
|
|
20
|
+
| `references/deterministic-elements.md` | Deterministic steps as code/task seeds; no markdown checkbox boards |
|
|
21
|
+
| `references/self-audit-checklist.md` | Post-build audit task seeds (TaskCreate / TodoWrite) |
|
|
21
22
|
| `references/delegation-map.md` | Subagent handoff patterns and transcript guidance |
|
|
22
23
|
| `references/thariq-x-post-skills.json` | Source reference — lessons from building Claude Code skills |
|
|
23
24
|
| `workflows/new-skill.md` | Full lifecycle for new skills (6 steps) |
|
|
24
25
|
| `workflows/improve-skill.md` | Observation-first flow for existing skills (6 steps) |
|
|
25
26
|
| `workflows/polish-skill.md` | Description trigger-catalog audit and final validation (5 steps) |
|
|
26
|
-
| `templates/gap-analysis.md` | Gaps, composition plan, description triggers |
|
|
27
|
+
| `templates/gap-analysis.md` | Gaps, composition plan, description triggers, deterministic inventory |
|
|
27
28
|
|
|
28
29
|
## Subdirectories
|
|
29
30
|
|
|
@@ -43,6 +44,6 @@ Enforces craft standards for new and existing skills. For quick one-off SKILL.md
|
|
|
43
44
|
## Conventions
|
|
44
45
|
|
|
45
46
|
- Every build ends with the self-audit at `references/self-audit-checklist.md`; fix failures before delivery.
|
|
46
|
-
- Modularity items
|
|
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.
|
|
47
|
+
- Modularity items, description trigger-catalog items, and deterministic-element classification are mandatory on every delivery.
|
|
48
|
+
- `skill-builder` orchestrates; `skill-writer` authors. Handoff packet must include type, gap analysis, composition plan, description trigger catalog, deterministic inventory, degree-of-freedom assessment, and constraints.
|
|
48
49
|
- Claude A / Claude B: Claude A (this session) designs; Claude B (subagents) tests the built skill on real tasks.
|
|
@@ -2,9 +2,10 @@
|
|
|
2
2
|
name: skill-builder
|
|
3
3
|
description: >-
|
|
4
4
|
Skill lifecycle: classify, scaffold, write via skill-writer, self-audit, compose
|
|
5
|
-
sub-skills, polish description triggers. Triggers:
|
|
6
|
-
workflow, improve this skill, optimize skill description,
|
|
7
|
-
lifecycle, skill modularity, skill composition, description
|
|
5
|
+
sub-skills, polish description triggers, enforce deterministic scripts. Triggers:
|
|
6
|
+
build a skill, new skill workflow, improve this skill, optimize skill description,
|
|
7
|
+
skill development lifecycle, skill modularity, skill composition, description
|
|
8
|
+
trigger catalog, deterministic skill scripts.
|
|
8
9
|
---
|
|
9
10
|
|
|
10
11
|
# Skill Builder
|
|
@@ -22,6 +23,8 @@ Highest-signal content. Append a bullet each time a skill build fails in a new w
|
|
|
22
23
|
- Story-form `description` burns always-on context and weakens selection — rewrite to capability stem + `Triggers:` list (`description-field.md`).
|
|
23
24
|
- Multi-capability packages fail modularity audit — split or thin orchestrator + named sub-skills (`skill-modularity.md`).
|
|
24
25
|
- Skipping the composition plan before Write reintroduces silent reimplementation of peer skills.
|
|
26
|
+
- Deterministic steps written only as prose (fenced source, giant `rg` lines, multi-step mechanical sequences) fail audit — extract to `scripts/` / `workflow/` / `templates/` / `reference/` (`deterministic-elements.md`).
|
|
27
|
+
- Markdown `- [ ]` checklists as the agent's progress board fail audit when a task tool exists — seed tasks via `TaskCreate` / `TodoWrite` (`deterministic-elements.md`).
|
|
25
28
|
|
|
26
29
|
## When this skill applies
|
|
27
30
|
|
|
@@ -116,11 +119,13 @@ Mandatory highest-signal section (see Gotchas above). Capture real failure modes
|
|
|
116
119
|
|
|
117
120
|
Use the template pattern for structured outputs. Use the examples pattern (input/output pairs) for style-dependent work.
|
|
118
121
|
|
|
119
|
-
### Workflows and
|
|
122
|
+
### Workflows and task seeds
|
|
120
123
|
|
|
121
|
-
|
|
124
|
+
Multi-step required work is a **task seed list** (plain bullets in a reference file) plus an instruction to register each item on the host task tool (`TaskCreate`, `TodoWrite`, or equivalent). Agents work the task list and mark complete with evidence.
|
|
122
125
|
|
|
123
|
-
|
|
126
|
+
Do **not** ship markdown `- [ ]` boards as the completion protocol when a task tool is available. Do **not** say "copy this checklist into your response and check it off."
|
|
127
|
+
|
|
128
|
+
Quality-critical operations still use feedback loops (run validator → fix → repeat). Spec: [`references/deterministic-elements.md`](references/deterministic-elements.md) (Task-tool tracking).
|
|
124
129
|
|
|
125
130
|
### Scripts
|
|
126
131
|
|
|
@@ -128,6 +133,14 @@ Multi-step processes get `[ ]` checklists. Quality-critical operations get feedb
|
|
|
128
133
|
|
|
129
134
|
> "One of the most powerful tools you can give Claude is code — letting Claude spend its turns on composition rather than reconstructing boilerplate."
|
|
130
135
|
|
|
136
|
+
### Deterministic elements (mandatory classification)
|
|
137
|
+
|
|
138
|
+
Any skill element that is **deterministic** (same inputs → same outputs; machine-checkable success) ships as code, a fixed artifact, or a **session task seed** — not prose-only steps or markdown checkbox boards. Judgment, routing, and refusals stay in markdown.
|
|
139
|
+
|
|
140
|
+
Full rules, inventory table, task-tool tracking, CODE_RULES bar for skill scripts, and anti-patterns: [`references/deterministic-elements.md`](references/deterministic-elements.md).
|
|
141
|
+
|
|
142
|
+
New-skill Gather records a deterministic-elements inventory before write. Self-audit items register as session tasks and are mandatory on every delivery (pure-judgment skills mark script rows N/A with evidence).
|
|
143
|
+
|
|
131
144
|
### Setup and memory
|
|
132
145
|
|
|
133
146
|
> "Think through the Setup — some skills may need to be set up with context from the user. A good pattern is to store this in a config.json file."
|
|
@@ -142,22 +155,23 @@ Multi-step processes get `[ ]` checklists. Quality-critical operations get feedb
|
|
|
142
155
|
|
|
143
156
|
> 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.
|
|
144
157
|
|
|
145
|
-
Also: story-form descriptions; monolith multi-capability skills; silent reimplementation of peer skills; nested folders used as fake sub-skills.
|
|
158
|
+
Also: story-form descriptions; monolith multi-capability skills; silent reimplementation of peer skills; nested folders used as fake sub-skills; deterministic logic only in prose or fenced source; markdown `- [ ]` as the agent's work tracker.
|
|
146
159
|
|
|
147
160
|
## Self-audit
|
|
148
161
|
|
|
149
|
-
After every build, improvement, or polish pass,
|
|
162
|
+
After every build, improvement, or polish pass, load `${CLAUDE_SKILL_DIR}/references/self-audit-checklist.md`, **register every bullet as a session task**, and complete each with evidence. Every item must pass before delivery. Fix failures, then re-audit.
|
|
150
163
|
|
|
151
164
|
## Delegation to skill-writer
|
|
152
165
|
|
|
153
166
|
skill-builder orchestrates; skill-writer authors. The handoff packet from Step 4 must include:
|
|
154
167
|
|
|
155
168
|
- Skill type and folder structure
|
|
156
|
-
- Gap analysis or observation findings (composition plan + description triggers)
|
|
169
|
+
- Gap analysis or observation findings (composition plan + description triggers + deterministic inventory)
|
|
157
170
|
- Degree of freedom assessment
|
|
158
171
|
- Initial gotchas
|
|
159
172
|
- Composition plan: related skills, sub-skills to invoke, split decisions
|
|
160
173
|
- Description trigger catalog: capability stem + trigger phrases (not prose)
|
|
174
|
+
- Deterministic elements inventory: each process step classified; code paths + paired tests
|
|
161
175
|
- Any constraints
|
|
162
176
|
|
|
163
177
|
See `${CLAUDE_SKILL_DIR}/references/delegation-map.md` for exact patterns.
|
|
@@ -171,12 +185,13 @@ See `${CLAUDE_SKILL_DIR}/references/delegation-map.md` for exact patterns.
|
|
|
171
185
|
| `references/progressive-disclosure.md` | Folder conventions, hub pattern, hard rules |
|
|
172
186
|
| `references/skill-modularity.md` | Cross-skill modularity, sub-skills, composition plan |
|
|
173
187
|
| `references/description-field.md` | Description as trigger catalog (not story prose) |
|
|
174
|
-
| `references/
|
|
188
|
+
| `references/deterministic-elements.md` | Deterministic steps as code/task seeds; CODE_RULES; no markdown checkbox boards |
|
|
189
|
+
| `references/self-audit-checklist.md` | Post-build audit task seeds (register via TaskCreate / TodoWrite) |
|
|
175
190
|
| `references/delegation-map.md` | Subagent handoff patterns and transcript guidance |
|
|
176
191
|
| `workflows/new-skill.md` | Full lifecycle for new skills (6 steps) |
|
|
177
192
|
| `workflows/improve-skill.md` | Observation-first flow for existing skills (6 steps) |
|
|
178
193
|
| `workflows/polish-skill.md` | Description trigger-catalog audit and final validation (5 steps) |
|
|
179
|
-
| `templates/gap-analysis.md` | Gaps, composition plan, description triggers |
|
|
194
|
+
| `templates/gap-analysis.md` | Gaps, composition plan, description triggers, deterministic inventory |
|
|
180
195
|
|
|
181
196
|
## Folder map
|
|
182
197
|
|
|
@@ -6,11 +6,12 @@ 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` |
|
|
9
|
+
| `self-audit-checklist.md` | Audit task seeds after every build, improve, or polish. Register via TaskCreate / TodoWrite. |
|
|
10
10
|
| `skill-types.md` | 9-type skill taxonomy with folder structures per type. |
|
|
11
11
|
| `progressive-disclosure.md` | Hub pattern, folder conventions, hard rules: SKILL.md under 500 lines, one-level references. |
|
|
12
12
|
| `skill-modularity.md` | Cross-skill modularity: one capability, sub-skills by name, composition plan, anti-monolith. |
|
|
13
13
|
| `description-field.md` | Frontmatter description as trigger catalog (capability stem + Triggers). No story prose. |
|
|
14
|
+
| `deterministic-elements.md` | Classify process steps; deterministic ones ship as code, task seeds, or fixed artifacts under CODE_RULES. |
|
|
14
15
|
| `delegation-map.md` | Subagent handoff patterns and transcript guidance for skill-builder → skill-writer. |
|
|
15
16
|
| `thariq-x-post-skills.json` | Source reference data from Anthropic lessons on building Claude Code skills. |
|
|
16
17
|
|
|
@@ -20,4 +21,5 @@ Best-practice specifications and the mandatory self-audit checklist for the `/sk
|
|
|
20
21
|
- `self-audit-checklist.md` always loads at the end of a build cycle.
|
|
21
22
|
- Load `skill-modularity.md` during Gather and when scope/overlap is diagnosed.
|
|
22
23
|
- Load `description-field.md` during Gather, polish Step 1, and any activation diagnosis.
|
|
24
|
+
- Load `deterministic-elements.md` during Gather, when prose-as-code is diagnosed, and on polish structure audit.
|
|
23
25
|
- `thariq-x-post-skills.json` is source reference data, not executable content.
|
|
@@ -21,15 +21,19 @@ Create a skill with these parameters:
|
|
|
21
21
|
**Composition plan:** [related skills; sub-skills with when/produces/missing; leaf vs orchestrator]
|
|
22
22
|
**Description (exact frontmatter string):** [capability stem. Triggers: phrase, phrase, ...]
|
|
23
23
|
— Trigger catalog only per description-field.md. No story prose.
|
|
24
|
+
**Deterministic inventory:** [each process step → class → home path → paired test]
|
|
25
|
+
— Per deterministic-elements.md. Deterministic steps must be code/artifacts, not prose-only.
|
|
24
26
|
|
|
25
27
|
Produce:
|
|
26
28
|
1. SKILL.md with hub layout (principle, gotchas, when-applies, process, file index, folder map)
|
|
27
29
|
2. Frontmatter description set to the exact trigger-catalog string above
|
|
28
30
|
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.
|
|
31
|
-
6.
|
|
32
|
-
7.
|
|
31
|
+
4. Companion files as needed (reference docs, workflow steps, templates, scripts)
|
|
32
|
+
5. Scripts/workflows for every deterministic inventory row; body only points and handles exit codes
|
|
33
|
+
6. Skill scripts follow CODE_RULES (`*_constants/`, types, specific errors, paired tests)
|
|
34
|
+
7. Every file under 500 lines; TOC on files over 100 lines
|
|
35
|
+
8. File index listing every file and its purpose
|
|
36
|
+
9. No reimplementation of steps owned by named sub-skills
|
|
33
37
|
```
|
|
34
38
|
|
|
35
39
|
### Refine skill handoff
|
|
@@ -44,9 +48,11 @@ Refine this existing skill:
|
|
|
44
48
|
**What to preserve:** [working content — do not touch]
|
|
45
49
|
**Description rewrite (if activation issue):** [exact new trigger-catalog string]
|
|
46
50
|
**Composition change (if modularity issue):** [sub-skills to add/invoke or split plan]
|
|
51
|
+
**Deterministic fix (if prose-only mechanical work):** [steps to extract → script/workflow/template paths + tests]
|
|
47
52
|
|
|
48
53
|
Constraint: Only change what the observations demand. Do not reorganize working content.
|
|
49
54
|
Description must remain a trigger catalog (description-field.md), never story prose.
|
|
55
|
+
Deterministic steps must not remain prose-only (deterministic-elements.md).
|
|
50
56
|
```
|
|
51
57
|
|
|
52
58
|
## Spawning a test subagent
|
|
@@ -78,27 +84,30 @@ Scan the transcript for:
|
|
|
78
84
|
3. **Re-read files** — Did Claude re-read the same file multiple times? That content should be in SKILL.md.
|
|
79
85
|
4. **Gotcha moments** — Where did Claude make a wrong choice? That's a gotcha candidate.
|
|
80
86
|
5. **Script usage** — Did Claude execute scripts as expected, or did it try to read them instead?
|
|
81
|
-
6. **
|
|
87
|
+
6. **Prose-as-code** — Did Claude reconstruct a multi-step mechanical sequence from markdown when a script should have run? Flag as deterministic-elements failure.
|
|
88
|
+
7. **Tool call errors** — Any "tool not found" or path errors? Fix references.
|
|
82
89
|
|
|
83
90
|
## Delegating self-audit
|
|
84
91
|
|
|
85
|
-
After building, spawn a subagent to run the
|
|
92
|
+
After building, spawn a subagent to run the audit independently (task-tool first):
|
|
86
93
|
|
|
87
94
|
```
|
|
88
95
|
Agent(
|
|
89
96
|
subagent_type="general-purpose",
|
|
90
|
-
description="Self-audit skill
|
|
97
|
+
description="Self-audit skill via task seeds",
|
|
91
98
|
prompt="Read the skill at [skill-path]/SKILL.md and all companion files.
|
|
92
99
|
|
|
93
|
-
Then read the self-audit
|
|
100
|
+
Then read the self-audit task seeds at [skill-builder-path]/references/self-audit-checklist.md.
|
|
94
101
|
|
|
95
|
-
|
|
102
|
+
Register every bullet as a session task (TaskCreate / TodoWrite). Complete each with PASS, FAIL+file:line+fix, or N/A+reason. Do not use markdown checkboxes as the tracker.
|
|
96
103
|
|
|
97
104
|
Report as:
|
|
98
105
|
## Audit Results
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
106
|
+
- PASS: N
|
|
107
|
+
- N/A: M
|
|
108
|
+
- FAIL fixed: K
|
|
109
|
+
- Remaining FAIL (must be empty): …
|
|
110
|
+
"
|
|
102
111
|
)
|
|
103
112
|
```
|
|
104
113
|
|
|
@@ -85,19 +85,17 @@ description: You can use this to process Excel files
|
|
|
85
85
|
3. List **near-misses** that must *not* select it (sibling skills). Fold only the shortest distinguishing tokens into Triggers if needed.
|
|
86
86
|
4. Assemble stem + `Triggers:` list. Strip adjectives, benefits, and process narrative.
|
|
87
87
|
5. Count characters (≤1024). Prefer under ~400 when possible — every skill’s description is always loaded.
|
|
88
|
-
6.
|
|
88
|
+
6. Register the task seeds below on the session task list (`TaskCreate` / `TodoWrite`); complete each with evidence. Do not use markdown checkboxes as the tracker.
|
|
89
89
|
|
|
90
|
-
## Description
|
|
90
|
+
## Description task seeds
|
|
91
91
|
|
|
92
|
-
|
|
93
|
-
-
|
|
94
|
-
-
|
|
95
|
-
-
|
|
96
|
-
-
|
|
97
|
-
-
|
|
98
|
-
-
|
|
99
|
-
- [ ] Body holds process detail — not the description
|
|
100
|
-
```
|
|
92
|
+
- Third person; no I/you
|
|
93
|
+
- Capability stem present (what), ≤20 words of tokens
|
|
94
|
+
- Triggers: segment (or equivalent dense when-list) with concrete phrases
|
|
95
|
+
- No story prose, benefits language, or implementation steps
|
|
96
|
+
- No XML; length ≤1024
|
|
97
|
+
- Distinguishable from sibling skills in the same domain
|
|
98
|
+
- Body holds process detail — not the description
|
|
101
99
|
|
|
102
100
|
## Where process lives
|
|
103
101
|
|