aiblueprint-cli 1.4.108 → 1.4.109
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/README.md +9 -0
- package/agents-config/claude-config/mods/agent4everything/.claude-plugin/plugin.json +5 -0
- package/agents-config/claude-config/mods/agent4everything/hooks/hooks.json +1 -0
- package/agents-config/claude-config/mods/agent4everything/hooks/register.ts +96 -0
- package/agents-config/claude-config/mods/aiblueprint/.claude-plugin/plugin.json +71 -0
- package/agents-config/claude-config/mods/aiblueprint/hooks/hooks.json +1 -0
- package/agents-config/claude-config/mods/aiblueprint/hooks/register.tsx +309 -0
- package/agents-config/claude-config/mods/aiblueprint/tests/band.test.tsx +74 -0
- package/agents-config/claude-config/mods/aiblueprint/types/index.d.ts +14 -0
- package/agents-config/claude-config/scripts/.claude/skills/fix-on-my-computer/SKILL.md +8 -74
- package/agents-config/claude-config/scripts/statusline/src/index.ts +1 -0
- package/agents-config/scripts/.claude/skills/fix-on-my-computer/SKILL.md +8 -74
- package/agents-config/scripts/statusline/src/index.ts +1 -0
- package/agents-config/skills/agents-manager/SKILL.md +15 -453
- package/agents-config/skills/apex/SKILL.md +14 -110
- package/agents-config/skills/app-icon/SKILL.md +22 -117
- package/agents-config/skills/appstore-connect/SKILL.md +22 -85
- package/agents-config/skills/audit-memories/SKILL.md +13 -139
- package/agents-config/skills/audit-skills/SKILL.md +6 -65
- package/agents-config/skills/environments-manager/SKILL.md +14 -238
- package/agents-config/skills/grill-me/SKILL.md +8 -22
- package/agents-config/skills/hooks-manager/SKILL.md +8 -54
- package/agents-config/skills/rules-manager/SKILL.md +11 -192
- package/agents-config/skills/skill-manager/SKILL.md +19 -158
- package/agents-config/skills/skill-manager/references/description-recommandation.md +15 -85
- package/agents-config/skills/test-audit/CAMPAIGN.md +117 -0
- package/agents-config/skills/test-audit/LICENSE +23 -0
- package/agents-config/skills/test-audit/SKILL.md +169 -0
- package/agents-config/skills/test-audit/agents/openai.yaml +10 -0
- package/agents-config/skills/test-audit/assets/codex-icon.svg +1 -0
- package/agents-config/skills/use-style/SKILL.md +8 -48
- package/dist/cli.js +115 -72
- package/package.json +1 -1
|
@@ -1,204 +1,23 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: rules-manager
|
|
3
|
-
description: Create, edit, and maintain AGENTS.md and .agents/rules
|
|
3
|
+
description: Create, edit, and maintain AGENTS.md and .agents/rules/. Use when adding, modifying, restructuring, or optimizing project rules, conventions, or constraints.
|
|
4
4
|
argument-hint: "[init | add <rule-name> | edit | optimize | task description]"
|
|
5
|
+
disable-model-invocation: true
|
|
6
|
+
user-invocable: true
|
|
5
7
|
---
|
|
6
8
|
|
|
7
|
-
|
|
8
|
-
Rules consume tokens on every agent run. Keep them minimal, specific, and discoverable.
|
|
9
|
+
Manage the two-tier rule system: the always-loaded index plus modular files. Every modular file must be linked from the index or agents will not find it.
|
|
9
10
|
|
|
10
|
-
|
|
11
|
+
Open [agents-vs-claude.md](references/agents-vs-claude.md) before choosing `AGENTS.md` + `.agents/rules/` versus `CLAUDE.md` + `.claude/rules/`, path-scoped `paths:` frontmatter, or dual-format setup. Run the same workflows against the chosen pair. Open [examples.md](references/examples.md) before writing a new rule file or index skeleton.
|
|
11
12
|
|
|
12
|
-
|
|
13
|
-
- **.agents/rules/\*.md** — Modular rule files for focused topics (changelog, testing, deployment, etc.).
|
|
13
|
+
Never overwrite existing files without asking. Never write a rule file without confirming its content. Default new rules to a modular file (20–60 lines); put 1–2 line constraints in Universal Rules. When the user names index content (stack, commands, universal rules), edit that file in place. Write specific prohibitions. Do not add generic best practices, linter-enforced rules, or facts the agent can read from the code.
|
|
14
14
|
|
|
15
|
-
|
|
16
|
-
</core_principle>
|
|
15
|
+
`init`: read package manifests; if the index or rules directory exists, ask before writing; create a <40-line index with an empty Rules section and the rules directory.
|
|
17
16
|
|
|
18
|
-
<
|
|
17
|
+
`add <name>`: slugify the name; `init` if no index; ask what it enforces and when it applies; write the modular file; add one index bullet whose path matches the file.
|
|
19
18
|
|
|
20
|
-
|
|
21
|
-
project-root/
|
|
22
|
-
├── AGENTS.md # Index + universal rules (always loaded)
|
|
23
|
-
└── .agents/
|
|
24
|
-
└── rules/
|
|
25
|
-
├── changelog.md # Rule for changelog management
|
|
26
|
-
├── testing.md # Rule for tests
|
|
27
|
-
└── deployment.md # Rule for deployment
|
|
28
|
-
```
|
|
19
|
+
`edit`: change only the named index section; keep every modular-file link intact.
|
|
29
20
|
|
|
30
|
-
|
|
31
|
-
</file_layout>
|
|
21
|
+
`optimize`: inventory index vs files (flag orphans and broken links); strip linter-enforced, generic, verbose, and code-derivable rules; compress to bullets; show the diff and wait. Targets: index <80 lines, each rule <60.
|
|
32
22
|
|
|
33
|
-
|
|
34
|
-
Minimal AGENTS.md with rules index:
|
|
35
|
-
|
|
36
|
-
```markdown
|
|
37
|
-
# Project Name
|
|
38
|
-
|
|
39
|
-
Short description (1-2 lines).
|
|
40
|
-
|
|
41
|
-
## Tech Stack
|
|
42
|
-
|
|
43
|
-
- [Non-obvious tech only]
|
|
44
|
-
|
|
45
|
-
## Commands
|
|
46
|
-
|
|
47
|
-
- `[dev]` - Dev server
|
|
48
|
-
- `[test]` - Run tests
|
|
49
|
-
|
|
50
|
-
## Rules
|
|
51
|
-
|
|
52
|
-
The detailed rules live in `.agents/rules/`. Read the relevant file before acting:
|
|
53
|
-
|
|
54
|
-
- **Changelog** - [.agents/rules/changelog.md](.agents/rules/changelog.md) - When/how to update CHANGELOG.md
|
|
55
|
-
- **Testing** - [.agents/rules/testing.md](.agents/rules/testing.md) - Test conventions and coverage
|
|
56
|
-
- **Deployment** - [.agents/rules/deployment.md](.agents/rules/deployment.md) - Deploy checklist
|
|
57
|
-
|
|
58
|
-
## Universal Rules
|
|
59
|
-
|
|
60
|
-
- [2-3 critical rules that apply everywhere]
|
|
61
|
-
```
|
|
62
|
-
|
|
63
|
-
The `## Rules` section is the index. Each bullet = one file in `.agents/rules/`. The `## Universal Rules` section holds short, project-wide constraints that don't deserve their own file.
|
|
64
|
-
</agents_md_template>
|
|
65
|
-
|
|
66
|
-
<rule_file_template>
|
|
67
|
-
Each `.agents/rules/<name>.md` should be focused, short, and actionable.
|
|
68
|
-
|
|
69
|
-
```markdown
|
|
70
|
-
# [Rule Title]
|
|
71
|
-
|
|
72
|
-
Short purpose statement (1 line).
|
|
73
|
-
|
|
74
|
-
## When this applies
|
|
75
|
-
|
|
76
|
-
- [Specific triggers - what task/context loads this rule]
|
|
77
|
-
|
|
78
|
-
## Rules
|
|
79
|
-
|
|
80
|
-
- [Specific, actionable rule]
|
|
81
|
-
- [Another rule with example if format matters]
|
|
82
|
-
|
|
83
|
-
## Example
|
|
84
|
-
|
|
85
|
-
[3-5 line concrete example, only if needed]
|
|
86
|
-
```
|
|
87
|
-
|
|
88
|
-
**Size target:** 20-60 lines per rule file. If longer, split into multiple files.
|
|
89
|
-
</rule_file_template>
|
|
90
|
-
|
|
91
|
-
<writing_rules>
|
|
92
|
-
**Be specific, never vague:**
|
|
93
|
-
|
|
94
|
-
```
|
|
95
|
-
NO: "Update changelog properly"
|
|
96
|
-
YES: "Append entry to CHANGELOG.md under ## Unreleased before every PR. Format: - [type] description (#PR)"
|
|
97
|
-
```
|
|
98
|
-
|
|
99
|
-
**Prohibitions beat positive guidance:**
|
|
100
|
-
|
|
101
|
-
```
|
|
102
|
-
NO: "Try to write tests"
|
|
103
|
-
YES: "NEVER merge without a passing test for the changed behavior"
|
|
104
|
-
```
|
|
105
|
-
|
|
106
|
-
**Emphasis hierarchy:** CRITICAL > NEVER > ALWAYS > IMPORTANT
|
|
107
|
-
|
|
108
|
-
- Lead each section with the most critical rule
|
|
109
|
-
- Use **bold + keyword** for non-negotiables: `**CRITICAL**: Never commit secrets`
|
|
110
|
-
|
|
111
|
-
**Do NOT include:**
|
|
112
|
-
|
|
113
|
-
- Generic best practices ("write clean code", "DRY", "SOLID")
|
|
114
|
-
- Linter-enforced rules (ESLint, Prettier, Biome already do this)
|
|
115
|
-
- Things the agent discovers from the code (file structure, framework defaults)
|
|
116
|
-
- Marketing or vision statements
|
|
117
|
-
- Verbose paragraphs - one line is almost always enough
|
|
118
|
-
</writing_rules>
|
|
119
|
-
|
|
120
|
-
<workflows>
|
|
121
|
-
|
|
122
|
-
## `/rules-manager init` - Bootstrap AGENTS.md + .agents/rules/
|
|
123
|
-
|
|
124
|
-
When the argument contains `init`:
|
|
125
|
-
|
|
126
|
-
1. **Detect project context** - Read `package.json` or equivalent for name, stack, scripts.
|
|
127
|
-
2. **Check existing files** - If `AGENTS.md` or `.agents/rules/` already exists, read them and ASK before overwriting.
|
|
128
|
-
3. **Create skeleton** - Write AGENTS.md with empty `## Rules` index, ready to populate.
|
|
129
|
-
4. **Create `.agents/rules/` directory** - Empty for now. New rules added via `add` workflow.
|
|
130
|
-
|
|
131
|
-
Target AGENTS.md size at init: under 40 lines.
|
|
132
|
-
|
|
133
|
-
## `/rules-manager add <name>` - Add a new rule
|
|
134
|
-
|
|
135
|
-
When the argument starts with `add`:
|
|
136
|
-
|
|
137
|
-
1. **Confirm name** - Slugify (e.g., "changelog management" -> `changelog`). Ask user if unclear.
|
|
138
|
-
2. **Read existing AGENTS.md** - Confirm it exists. If not, run `init` first.
|
|
139
|
-
3. **Ask the user for rule content** - What does the rule enforce? When does it apply? Any examples?
|
|
140
|
-
4. **Write `.agents/rules/<name>.md`** - Use the rule file template. Keep it 20-60 lines.
|
|
141
|
-
5. **Update AGENTS.md `## Rules` section** - Add a one-line bullet pointing to the new file:
|
|
142
|
-
```
|
|
143
|
-
- **<Title>** - [.agents/rules/<name>.md](.agents/rules/<name>.md) - <one-line purpose>
|
|
144
|
-
```
|
|
145
|
-
6. **Verify the link** - Make sure the path in AGENTS.md exactly matches the created file.
|
|
146
|
-
|
|
147
|
-
**CRITICAL:** Step 5 is non-negotiable. A rule file without an index entry is invisible.
|
|
148
|
-
|
|
149
|
-
## `/rules-manager edit` - Modify AGENTS.md directly
|
|
150
|
-
|
|
151
|
-
When the user wants to change AGENTS.md itself rather than add a rule file — update the tech stack, commands, universal rules, project description, or restructure sections:
|
|
152
|
-
|
|
153
|
-
1. **Read AGENTS.md** - Load current content.
|
|
154
|
-
2. **Make the targeted edit in place** - Change only the relevant section; leave unrelated sections untouched.
|
|
155
|
-
3. **Preserve the index** - If touching `## Rules`, keep every `.agents/rules/*.md` link intact.
|
|
156
|
-
4. **Stay minimal** - Apply `<writing_rules>`: specific, prohibitions over guidance, no bloat.
|
|
157
|
-
|
|
158
|
-
This is the default when the user references AGENTS.md content (not a rule file) — e.g. "add a command to AGENTS.md", "update the tech stack", "tighten the universal rules".
|
|
159
|
-
|
|
160
|
-
## `/rules-manager optimize` - Audit and clean up
|
|
161
|
-
|
|
162
|
-
When the argument contains `optimize`:
|
|
163
|
-
|
|
164
|
-
1. **Inventory** - List AGENTS.md and every file in `.agents/rules/`.
|
|
165
|
-
2. **Check the index** - For each file in `.agents/rules/`, verify there's a matching bullet in AGENTS.md `## Rules`. Flag missing entries.
|
|
166
|
-
3. **Check for orphans** - For each AGENTS.md bullet, verify the file exists. Flag broken links.
|
|
167
|
-
4. **Apply bloat removal** - For each rule file, remove:
|
|
168
|
-
- Linter-enforced rules
|
|
169
|
-
- Generic best practices
|
|
170
|
-
- Verbose explanations (compress to one line)
|
|
171
|
-
- Things derivable from code
|
|
172
|
-
5. **Compress** - Paragraphs to bullets, multi-line rules to single lines.
|
|
173
|
-
6. **Show diff and ask before applying.**
|
|
174
|
-
|
|
175
|
-
Target sizes:
|
|
176
|
-
|
|
177
|
-
- AGENTS.md: under 80 lines
|
|
178
|
-
- Each rule file: under 60 lines
|
|
179
|
-
|
|
180
|
-
## Default - Add a rule based on description
|
|
181
|
-
|
|
182
|
-
When the argument is a free-form task (e.g., "add a rule about how we tag releases"):
|
|
183
|
-
|
|
184
|
-
1. Treat as `add` with auto-derived name.
|
|
185
|
-
2. Ask the user 1-2 clarifying questions if the rule scope is unclear.
|
|
186
|
-
3. Follow the `add` workflow.
|
|
187
|
-
</workflows>
|
|
188
|
-
|
|
189
|
-
<rules_for_this_skill>
|
|
190
|
-
|
|
191
|
-
- This skill manages ALL of AGENTS.md (tech stack, commands, universal rules, index, description) and `.agents/rules/` — not just creating new rule files. Editing existing AGENTS.md content is fully in scope.
|
|
192
|
-
- ALWAYS update AGENTS.md `## Rules` index when creating a file in `.agents/rules/`
|
|
193
|
-
- NEVER create a rule file without confirming with the user what it should contain
|
|
194
|
-
- NEVER overwrite existing AGENTS.md or rule files without asking
|
|
195
|
-
- Default to short rule files (20-60 lines). Split if larger.
|
|
196
|
-
- When user asks "create a rule", default to creating a file in `.agents/rules/` (not inline in AGENTS.md), unless the rule is 1-2 lines and fits the universal section.
|
|
197
|
-
- When the user references AGENTS.md content directly (a command, the stack, a universal rule), edit AGENTS.md in place via the `edit` workflow — don't spin up a new rule file.
|
|
198
|
-
</rules_for_this_skill>
|
|
199
|
-
|
|
200
|
-
<reference_guides>
|
|
201
|
-
|
|
202
|
-
- **Examples**: [references/examples.md](references/examples.md) - Sample rule files (changelog, testing, deployment)
|
|
203
|
-
- **AGENTS.md vs CLAUDE.md**: [references/agents-vs-claude.md](references/agents-vs-claude.md) - When to use which format
|
|
204
|
-
</reference_guides>
|
|
23
|
+
A free-form request is `add` with a derived name. Ask 1–2 scope questions if the rule is unclear.
|
|
@@ -1,171 +1,32 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: skill-manager
|
|
3
|
-
description: Create, edit, audit, or prune Claude, Codex, and Cursor skills/rules. Use for SKILL.md, .cursor/rules, AGENTS.md,
|
|
3
|
+
description: Create, edit, audit, or prune Claude, Codex, and Cursor skills/rules. Use for SKILL.md, .cursor/rules, AGENTS.md, frontmatter, references, scripts, and skill discovery.
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
-
|
|
6
|
+
Write skills the way `$analyze`, `$plan`, `$implement`, `$code-review`, and `$verify` are written.
|
|
7
7
|
|
|
8
|
-
|
|
8
|
+
## Target
|
|
9
9
|
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
10
|
+
- One job. Imperative. Every line changes behavior.
|
|
11
|
+
- Body under ~40 lines unless the job is genuinely multi-branch.
|
|
12
|
+
- Description 50–300 chars: capability first, then `Use when` + trigger words.
|
|
13
|
+
- No README, changelog, or theory. No restating model defaults.
|
|
14
|
+
- References only for platform or schema detail the body cannot hold. Name the file and when to open it.
|
|
15
|
+
- User-only workflows: `disable-model-invocation: true`.
|
|
15
16
|
|
|
16
|
-
|
|
17
|
+
## Write
|
|
17
18
|
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
- Skill-writing vocabulary → see [references/skill-writing-glossary.md](references/skill-writing-glossary.md)
|
|
19
|
+
1. Confirm 2–3 trigger prompts with the user.
|
|
20
|
+
2. Pick the platform. Default from the path: `.claude` → Claude, `.agents` → Codex, `.cursor` → Cursor. Ask if unclear.
|
|
21
|
+
3. Write frontmatter, then the body: inspect → act → return → stop.
|
|
22
|
+
4. Run `bun ~/.agents/skills/skill-manager/scripts/inspect-description.ts` on the skill root.
|
|
23
23
|
|
|
24
|
-
|
|
24
|
+
Personal skills live in `~/.agents/skills/<name>/`. Platform layout and frontmatter: [claude-code.md](references/claude-code.md), [codex.md](references/codex.md), [cursor.md](references/cursor.md). Description rules: [description-recommandation.md](references/description-recommandation.md).
|
|
25
25
|
|
|
26
|
-
##
|
|
26
|
+
## Audit
|
|
27
27
|
|
|
28
|
-
|
|
28
|
+
For each line: would removing it change behavior? Delete no-ops, duplicates, and stale rules. State the positive target; keep prohibitions only as hard guardrails.
|
|
29
29
|
|
|
30
|
-
|
|
30
|
+
Online research: `$find-docs` for current technical docs; `$exa-search` for broader web research.
|
|
31
31
|
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
The context window is shared with the system prompt, conversation, other skills' metadata, and the user request. Only add context the agent doesn't already have. Challenge each line: does it justify its tokens?
|
|
35
|
-
|
|
36
|
-
### Match freedom to fragility
|
|
37
|
-
|
|
38
|
-
- **High freedom** (prose instructions): multiple valid approaches, decisions depend on context.
|
|
39
|
-
- **Medium freedom** (pseudocode, scripts with parameters): preferred pattern exists, some variation OK.
|
|
40
|
-
- **Low freedom** (specific scripts, few parameters): fragile, error-prone, must run a fixed sequence.
|
|
41
|
-
|
|
42
|
-
### Progressive disclosure
|
|
43
|
-
|
|
44
|
-
Three loading levels:
|
|
45
|
-
|
|
46
|
-
1. **Metadata** (name + description): always in context. Keep tight.
|
|
47
|
-
2. **SKILL.md body**: loaded when the skill triggers. Aim under ~500 lines.
|
|
48
|
-
3. **References**: loaded on demand. Move variant-specific detail, schemas, and long examples here.
|
|
49
|
-
|
|
50
|
-
Keep references one level deep. Reference them by name in SKILL.md so the agent knows when to open them.
|
|
51
|
-
|
|
52
|
-
### Design the information hierarchy
|
|
53
|
-
|
|
54
|
-
Put ordered actions in steps and definitions or rules in reference sections. End important steps with a checkable completion criterion; vague criteria invite premature completion. Inline what every execution branch needs and move branch-specific material behind a context pointer whose wording says when to load it.
|
|
55
|
-
|
|
56
|
-
Split a skill only when the split earns its cost:
|
|
57
|
-
|
|
58
|
-
- **By invocation:** a distinct leading word must trigger the new skill independently.
|
|
59
|
-
- **By sequence:** hiding later steps prevents the agent from rushing the current step.
|
|
60
|
-
|
|
61
|
-
Every model-invoked skill spends context load through its description. Every user-only skill spends human cognitive load because the user must remember it. When user-only skills become hard to remember, add one router instead of making every skill model-invoked.
|
|
62
|
-
|
|
63
|
-
### Use leading words
|
|
64
|
-
|
|
65
|
-
A leading word is a compact pretrained concept such as `tight loop`, `tracer bullet`, or `handoff`. Reuse the same term in the description and body so it anchors both invocation and execution. Prefer one strong term over repeated prose that restates the same behavior.
|
|
66
|
-
|
|
67
|
-
### Prune aggressively
|
|
68
|
-
|
|
69
|
-
Keep each meaning in one authoritative place. Audit every sentence with the no-op test: would removing it change agent behavior? Delete no-ops instead of polishing them. Watch for:
|
|
70
|
-
|
|
71
|
-
- **Duplication:** the same rule appears in several places.
|
|
72
|
-
- **Sediment:** stale instructions remain because removal feels risky.
|
|
73
|
-
- **Sprawl:** every line may be relevant, but the active path carries too much context.
|
|
74
|
-
- **Negation:** naming forbidden behavior makes it more available; state the positive target and reserve prohibitions for hard guardrails.
|
|
75
|
-
- **Negative space:** omitted decisions silently fall back to model priors; decide whether each omission is intentional.
|
|
76
|
-
- **Premature completion:** sharpen the completion criterion before splitting the sequence.
|
|
77
|
-
|
|
78
|
-
### Online research routing
|
|
79
|
-
|
|
80
|
-
When a skill or agent needs online research, name the exact research skill to use instead of relying on vague web-search language:
|
|
81
|
-
|
|
82
|
-
- Use `~/.agents/skills/find-docs/SKILL.md` for current technical documentation, API references, config options, SDKs, CLIs, cloud services, and code examples.
|
|
83
|
-
- Use `~/.agents/skills/exa-search/SKILL.md` for broader online research, recent information, source discovery, similar pages, URL extraction, or cited web answers.
|
|
84
|
-
- Mention default harness tools for local code, file, git, shell, and browser inspection.
|
|
85
|
-
- Keep built-in `WebSearch` and `WebFetch` as fallback tools unless the user explicitly asks for them.
|
|
86
|
-
- For restricted agents, include `Skill` and `Bash` in the tool list when these skills need to run local CLIs.
|
|
87
|
-
- Never put secrets, tokens, credentials, personal data, or proprietary code in external queries.
|
|
88
|
-
|
|
89
|
-
### Skill anatomy
|
|
90
|
-
|
|
91
|
-
```
|
|
92
|
-
skill-name/
|
|
93
|
-
├── SKILL.md # required: frontmatter + instructions
|
|
94
|
-
├── references/ # optional: docs loaded on demand
|
|
95
|
-
├── scripts/ # optional: deterministic code
|
|
96
|
-
└── assets/ # optional: templates/icons used in output
|
|
97
|
-
```
|
|
98
|
-
|
|
99
|
-
Do NOT add README, CHANGELOG, INSTALLATION_GUIDE, etc. Only files the agent needs at runtime.
|
|
100
|
-
|
|
101
|
-
## Authoring workflow
|
|
102
|
-
|
|
103
|
-
1. **Pin down the use case.** Get 2-3 concrete example prompts that should trigger the skill. Confirm with the user.
|
|
104
|
-
2. **List reusable parts.** What scripts, references, or assets recur? Add only those.
|
|
105
|
-
3. **Write SKILL.md.** Frontmatter first (description is what triggers it - front-load keywords). Then imperative-form body.
|
|
106
|
-
4. **Test the description.** The description has to read like a trigger phrase, not a label. Examples in each reference file.
|
|
107
|
-
5. **Iterate after real use.** Note what the agent got wrong; refine the relevant section.
|
|
108
|
-
|
|
109
|
-
## Writing the description
|
|
110
|
-
|
|
111
|
-
The `description` field is the single most important line in the file - it's what the model uses to decide to load the skill. This is a hard rule: descriptions must be between 50 and 300 characters.
|
|
112
|
-
|
|
113
|
-
Write it as:
|
|
114
|
-
|
|
115
|
-
- Front-load trigger words ("Use when...", "create a skill", "review a PR").
|
|
116
|
-
- State scope and boundaries explicitly.
|
|
117
|
-
- Mention concrete file names or commands the user might type.
|
|
118
|
-
- Keep it short enough to stay under 300 characters, while still specific enough to trigger reliably.
|
|
119
|
-
|
|
120
|
-
Bad: `"Helper for skills."`
|
|
121
|
-
Good: `"Create and edit skills/rules across Claude Code, OpenAI Codex, and Cursor. Use when the user asks to 'create a skill'..."`
|
|
122
|
-
|
|
123
|
-
To validate skill descriptions, frontmatter fields, `agents/openai.yaml`, and skill directory shape, run:
|
|
124
|
-
|
|
125
|
-
```bash
|
|
126
|
-
bun scripts/inspect-description.ts
|
|
127
|
-
```
|
|
128
|
-
|
|
129
|
-
By default, this checks `~/.agents/skills` only and follows symlinked skill directories inside that root. Pass one or more roots to inspect a different set. Passing a `.cursor/rules` directory validates Cursor rule frontmatter too:
|
|
130
|
-
|
|
131
|
-
```bash
|
|
132
|
-
bun scripts/inspect-description.ts .agents/skills
|
|
133
|
-
```
|
|
134
|
-
|
|
135
|
-
For researched guidance and examples, see [references/description-recommandation.md](references/description-recommandation.md).
|
|
136
|
-
|
|
137
|
-
## Where each platform stores skills
|
|
138
|
-
|
|
139
|
-
**Canonical personal skills:** `~/.agents/skills/` is the single source of truth (git repo `Melvynx/agents-config`). It is an official user-level root for both Cursor and Codex, so they read it directly. Write new personal skills only under `~/.agents/skills/<name>/`.
|
|
140
|
-
|
|
141
|
-
### Codex profile activity icons
|
|
142
|
-
|
|
143
|
-
Codex's Profile activity view does not resolve standalone skill icons from `agents/openai.yaml`. It resolves known built-in skill icons or the logo of a matching installed plugin. After creating, renaming, or changing the icon metadata of a personal skill, sync the identity-only personal plugin wrappers:
|
|
144
|
-
|
|
145
|
-
```bash
|
|
146
|
-
bun ~/.agents/scripts/sync-codex-profile-icons.ts --install
|
|
147
|
-
bun ~/.agents/scripts/audit-codex-profile-icons.ts
|
|
148
|
-
```
|
|
149
|
-
|
|
150
|
-
The wrappers intentionally contain no executable skills, so they provide `logo` / `logoDark` metadata without duplicating skill discovery. Keep `~/plugins` linked to `~/.agents/plugins/plugins`; the sync script creates the link when absent.
|
|
151
|
-
|
|
152
|
-
Per the official Cursor docs ([cursor.com/docs/skills](https://cursor.com/docs/skills)), user-level roots are `~/.agents/skills/` and `~/.cursor/skills/`, plus compat dirs `~/.claude/skills/` and `~/.codex/skills/`. `~/.cursor/skills-cursor/` is NOT a documented path; do not use it.
|
|
153
|
-
|
|
154
|
-
Because `~/.agents/skills/` is read directly, the only symlinks needed are the compat dirs for agents that do not read `~/.agents/skills/` themselves:
|
|
155
|
-
|
|
156
|
-
```bash
|
|
157
|
-
~/.claude/skills -> ~/.agents/skills # Claude Code reads ~/.claude/skills
|
|
158
|
-
~/.codex/skills -> ~/.agents/skills # Codex compat (optional; Codex also reads ~/.agents/skills)
|
|
159
|
-
```
|
|
160
|
-
|
|
161
|
-
Do NOT symlink `~/.cursor/skills` or `~/.cursor/skills-cursor` to `~/.agents/skills/`; that makes Cursor scan the same skills two or three times. To repair the compat symlinks if missing:
|
|
162
|
-
|
|
163
|
-
```bash
|
|
164
|
-
ln -s ~/.agents/skills ~/.claude/skills
|
|
165
|
-
```
|
|
166
|
-
|
|
167
|
-
See the per-platform reference files. Quick reminders:
|
|
168
|
-
|
|
169
|
-
- **Cursor**: reads `~/.agents/skills/` and `~/.cursor/skills/` (user-level), `.agents/skills/` and `.cursor/skills/` (project). Use `~/.agents/skills/` as the single root; skip the `~/.cursor/skills*` symlinks.
|
|
170
|
-
- **Claude Code**: `~/.claude/skills/` (symlink → `~/.agents/skills/`) or `.claude/skills/` (project). Higher scope wins on name collision.
|
|
171
|
-
- **Codex**: `.agents/skills/` walks up from CWD to repo root, then `~/.agents/skills/`, then `/etc/codex/skills`, then system bundled.
|
|
32
|
+
After creating or renaming a personal skill icon, run `bun ~/.agents/scripts/sync-codex-profile-icons.ts --install`. Compat: `~/.claude/skills` and `~/.codex/skills` symlink to `~/.agents/skills`. Do not symlink `~/.cursor/skills`.
|
|
@@ -1,97 +1,27 @@
|
|
|
1
|
-
# Description
|
|
1
|
+
# Description
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Load this when writing or refining a `description` field.
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
Official docs: Codex https://developers.openai.com/codex/skills · Claude https://docs.anthropic.com/en/docs/claude-code/skills · Cursor https://cursor.com/docs/skills
|
|
6
6
|
|
|
7
|
-
|
|
8
|
-
- Anthropic Agent Skills best practices: https://console.anthropic.com/docs/en/agents-and-tools/agent-skills/best-practices
|
|
9
|
-
- Anthropic Agent Skills overview: https://console.anthropic.com/docs/en/agents-and-tools/agent-skills/overview
|
|
10
|
-
- Claude Code skills docs: https://docs.anthropic.com/en/docs/claude-code/skills
|
|
11
|
-
- Cursor rules docs: https://cursor.com/help/customization/rules
|
|
7
|
+
## Rules
|
|
12
8
|
|
|
13
|
-
|
|
9
|
+
- 50–300 characters.
|
|
10
|
+
- First clause useful alone; skill lists may truncate.
|
|
11
|
+
- What it does + when to use it. Third person. No `I can` / `You can`.
|
|
12
|
+
- No XML, tables, long examples, or body-level steps.
|
|
13
|
+
- Trigger-first: nouns, verbs, file names, and commands the user would type.
|
|
14
14
|
|
|
15
|
-
|
|
16
|
-
- Make the first clause useful on its own; skill lists may shorten descriptions.
|
|
17
|
-
- Include both what the skill does and when it should be used.
|
|
18
|
-
- Use third person. Do not write "I can..." or "You can...".
|
|
19
|
-
- Do not include XML tags, markdown tables, long examples, or implementation steps.
|
|
20
|
-
- Do not duplicate the full SKILL.md body. The description is only discovery metadata.
|
|
21
|
-
|
|
22
|
-
## What Good Descriptions Do
|
|
23
|
-
|
|
24
|
-
A good description helps the model decide whether to load the skill before it has read the skill body. It should answer three questions:
|
|
25
|
-
|
|
26
|
-
1. What capability does this skill provide?
|
|
27
|
-
2. Which user requests, file names, commands, or domain terms should trigger it?
|
|
28
|
-
3. What boundary keeps it from triggering on adjacent but wrong tasks?
|
|
29
|
-
|
|
30
|
-
Prefer concrete nouns, verbs, and file names over generic labels. Use terms a user would actually type: `SKILL.md`, `.cursor/rules`, `commit message`, `invoice`, `wrangler`, `Netlify deploy`, `DOCX`, `.xlsx`.
|
|
31
|
-
|
|
32
|
-
## Recommended Shape
|
|
33
|
-
|
|
34
|
-
Use one or two compact sentences:
|
|
35
|
-
|
|
36
|
-
```yaml
|
|
37
|
-
description: <Primary capability>. Use when <trigger phrases, file types, commands, or task context>.
|
|
38
|
-
```
|
|
39
|
-
|
|
40
|
-
For reference-only skills:
|
|
41
|
-
|
|
42
|
-
```yaml
|
|
43
|
-
description: <Domain conventions or reference material>. Use when working on <specific files, modules, APIs, or workflows>.
|
|
44
|
-
```
|
|
45
|
-
|
|
46
|
-
For side-effecting workflows, be narrower:
|
|
47
|
-
|
|
48
|
-
```yaml
|
|
49
|
-
description: Prepare and verify production deploys. Use only when the user explicitly asks to deploy, release, publish, or check deployment status.
|
|
50
|
-
```
|
|
51
|
-
|
|
52
|
-
## Examples
|
|
53
|
-
|
|
54
|
-
Good:
|
|
55
|
-
|
|
56
|
-
```yaml
|
|
57
|
-
description: Create or edit Claude, Codex, and Cursor skills/rules. Use for SKILL.md, .cursor/rules, AGENTS.md, frontmatter, references, scripts, and discovery rules.
|
|
58
|
-
```
|
|
59
|
-
|
|
60
|
-
Good:
|
|
61
|
-
|
|
62
|
-
```yaml
|
|
63
|
-
description: Review GitHub pull request feedback and implement requested changes. Use when the user asks to address PR comments, review threads, or requested changes.
|
|
64
|
-
```
|
|
65
|
-
|
|
66
|
-
Too vague:
|
|
15
|
+
## Shape
|
|
67
16
|
|
|
68
17
|
```yaml
|
|
69
|
-
description:
|
|
18
|
+
description: <Primary capability>. Use when <trigger phrases, files, commands, or task context>.
|
|
70
19
|
```
|
|
71
20
|
|
|
72
|
-
|
|
21
|
+
Good: `Create or edit Claude, Codex, and Cursor skills/rules. Use for SKILL.md, .cursor/rules, AGENTS.md, frontmatter, references, scripts, and discovery rules.`
|
|
73
22
|
|
|
74
|
-
|
|
75
|
-
description: Manage all developer workflow tasks, docs, rules, automation, repository work, deployment, testing, and issue handling.
|
|
76
|
-
```
|
|
77
|
-
|
|
78
|
-
Wrong point of view:
|
|
23
|
+
Good: `Review GitHub pull request feedback and implement requested changes. Use when the user asks to address PR comments, review threads, or requested changes.`
|
|
79
24
|
|
|
80
|
-
|
|
81
|
-
description: I can help you write better skill descriptions.
|
|
82
|
-
```
|
|
25
|
+
Bad: `Helps with skills.` / `I can help you write better skill descriptions.` / a catalog of every adjacent task.
|
|
83
26
|
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
- [ ] 50-300 characters.
|
|
87
|
-
- [ ] First words contain the primary trigger.
|
|
88
|
-
- [ ] Mentions the key files, commands, domains, or user phrases.
|
|
89
|
-
- [ ] Says when to use it, not only what it is.
|
|
90
|
-
- [ ] Specific enough to avoid accidental invocation.
|
|
91
|
-
- [ ] No body-level instructions, setup steps, or long examples.
|
|
92
|
-
|
|
93
|
-
Run the local inspector after editing:
|
|
94
|
-
|
|
95
|
-
```bash
|
|
96
|
-
bun scripts/inspect-description.ts
|
|
97
|
-
```
|
|
27
|
+
Then run `bun ~/.agents/skills/skill-manager/scripts/inspect-description.ts` on the skill root.
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
# Test-pruning campaign
|
|
2
|
+
|
|
3
|
+
Campaign mode prunes one subsystem's whole test surface in one PR: a package,
|
|
4
|
+
a plugin, or one core area. The value bar, retention bar, candidate evidence,
|
|
5
|
+
and validation in [SKILL.md](SKILL.md) apply to every lane. This file adds the
|
|
6
|
+
order of work and the lessons of a full campaign, drawn from a campaign on a
|
|
7
|
+
Telegram messaging plugin. Each step ends on its completion criterion; do not
|
|
8
|
+
start the next step early.
|
|
9
|
+
|
|
10
|
+
## 1. Baseline
|
|
11
|
+
|
|
12
|
+
Record the subsystem's test and support line counts and every test file's
|
|
13
|
+
pass/fail state at a pinned `main` SHA. Keep baseline failures in their own
|
|
14
|
+
list: in the Telegram campaign, all three were real delivery bugs, not stale
|
|
15
|
+
tests.
|
|
16
|
+
|
|
17
|
+
Done when every in-scope test file has a recorded baseline result.
|
|
18
|
+
|
|
19
|
+
## 2. Lanes and inventory
|
|
20
|
+
|
|
21
|
+
Split the surface into **lanes** along production owner boundaries, not file
|
|
22
|
+
prefixes. For Telegram these were accounts, commands, context, dispatch,
|
|
23
|
+
inbound, outbound, persistence, transport, shared, harness, and live/QA
|
|
24
|
+
scenarios. Include the subsystem's cases at shared core boundaries and its QA
|
|
25
|
+
and live-proof harness tests.
|
|
26
|
+
|
|
27
|
+
Done when every test file and QA scenario the subsystem owns belongs to exactly
|
|
28
|
+
one lane.
|
|
29
|
+
|
|
30
|
+
## 3. Read-only ledger per lane
|
|
31
|
+
|
|
32
|
+
Give each lane to its own read-only agent. The agent reads every assigned test
|
|
33
|
+
in full, including parameter tables. It also reads the production owners and
|
|
34
|
+
their entry points, callers, history, and CI routing. Each test declaration
|
|
35
|
+
goes into a written **ledger** with one mark. An `it.each` is one declaration
|
|
36
|
+
unless its rows need different marks; then mark each row.
|
|
37
|
+
|
|
38
|
+
- `R`: retain, naming the contract and the bug it catches; a retained test that
|
|
39
|
+
only moves to a better-named file stays `R` with the move noted;
|
|
40
|
+
- `F`: retain the contract but repair the assertion, such as a vacuous negative
|
|
41
|
+
that passes when only one of several items is missing;
|
|
42
|
+
- `C`: consolidate, naming the owner that absorbs the assertion first: a sibling
|
|
43
|
+
table case, a stronger boundary suite, or the shared owner in another package;
|
|
44
|
+
- `D`: delete, naming the proof that remains, or why no contract exists.
|
|
45
|
+
|
|
46
|
+
Judge a test by its assertions, not its name. One Telegram test named for
|
|
47
|
+
retiring a progress window asserted the window was _not_ cleared.
|
|
48
|
+
|
|
49
|
+
Done when every declaration in the lane has a mark and an evidence line.
|
|
50
|
+
|
|
51
|
+
## 4. Layer plan per lane
|
|
52
|
+
|
|
53
|
+
Treat the per-test ledger as input, not as the edit list. A second read-only
|
|
54
|
+
pass, starting from the ledger, looks for the redundant **layer**. In Telegram,
|
|
55
|
+
several dispatch suites replayed the same shared compositor through one mocked
|
|
56
|
+
preview, around stronger real-stream and HTTP-fixture suites. Name the
|
|
57
|
+
**keeper** suite for each contract. Prefer the real transport boundary with a
|
|
58
|
+
fake network over a mocked collaborator. Correct any ledger errors this pass
|
|
59
|
+
finds.
|
|
60
|
+
|
|
61
|
+
Done when each lane plan names its retired files, its keeper per contract, the
|
|
62
|
+
assertions to carry into keepers, and the test-only production seams unlocked.
|
|
63
|
+
|
|
64
|
+
## 5. Cutover
|
|
65
|
+
|
|
66
|
+
Edit lane by lane. Serialize changes to shared harnesses and support files
|
|
67
|
+
through one owner. With each lane, remove the test-only production seams it
|
|
68
|
+
unlocks: injection parameters, getters, reset exports, and indirection layers.
|
|
69
|
+
Register moved suites in CI routing and test inventories. Update shrink-only
|
|
70
|
+
line-cap baselines. Put durable test-ownership rules in the subsystem's
|
|
71
|
+
`AGENTS.md`, drawn from mistakes this campaign actually found.
|
|
72
|
+
|
|
73
|
+
Done when every lane plan is applied and each lane's keepers pass.
|
|
74
|
+
|
|
75
|
+
## 6. Preservation review
|
|
76
|
+
|
|
77
|
+
Before claiming completion, have independent reviewers compare deleted
|
|
78
|
+
coverage against the keepers, one reviewer per boundary group. They look for
|
|
79
|
+
contracts that lost their only proof. They also look for new assertions that
|
|
80
|
+
cannot fail, such as a rejection row the production code never reaches. The
|
|
81
|
+
Telegram review found nine real gaps and one unreachable assertion.
|
|
82
|
+
|
|
83
|
+
For each restored contract, make one deliberate **mutation** of the production
|
|
84
|
+
owner and confirm the keeper goes red. Then restore the source byte for byte.
|
|
85
|
+
|
|
86
|
+
Done when every reported gap is restored or rejected with source evidence, and
|
|
87
|
+
every restored contract has a caught mutation.
|
|
88
|
+
|
|
89
|
+
## 7. Product defects
|
|
90
|
+
|
|
91
|
+
A baseline failure that survives into a keeper is a bug report. Fix it at its
|
|
92
|
+
owner as a separate commit, and prove it through the real user flow, with a
|
|
93
|
+
**control** run that reverts the fix and shows the old behavior. Record
|
|
94
|
+
unrelated product discrepancies you find as follow-ups instead of fixing them
|
|
95
|
+
in the campaign.
|
|
96
|
+
|
|
97
|
+
Done when each repaired defect has a failing control and a passing candidate
|
|
98
|
+
on the same harness.
|
|
99
|
+
|
|
100
|
+
## 8. Reconcile and hand off
|
|
101
|
+
|
|
102
|
+
Campaigns outlive many `main` commits. Merge `main` rather than rebasing a
|
|
103
|
+
long, many-commit campaign. When `main` modified a file the campaign
|
|
104
|
+
deleted, keep the deletion. Port the new contract into the keeper instead, and
|
|
105
|
+
confirm every new regression `main` added still has a home. Rerun the whole
|
|
106
|
+
subsystem suite and repeat live proof on the merged head.
|
|
107
|
+
|
|
108
|
+
Expect review tooling to see a truncated file list on a diff this large.
|
|
109
|
+
Record maintainer decisions for generic compatibility flags in the PR evidence
|
|
110
|
+
rather than editing gates.
|
|
111
|
+
|
|
112
|
+
Hand off with the [SKILL.md](SKILL.md) report, plus:
|
|
113
|
+
|
|
114
|
+
- baseline and final test/support line counts, with production counted separately;
|
|
115
|
+
- lanes, retired layers, and keepers;
|
|
116
|
+
- preservation gaps found and their mutations;
|
|
117
|
+
- product defects with control and candidate proof.
|