@plainconceptsplatform/agent-harness 2.4.0 → 2.5.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/README.md +435 -437
- package/cli/fragments/archive/az.md +97 -95
- package/cli/fragments/archive/gh.md +96 -94
- package/cli/fragments/archive/gl.md +96 -94
- package/cli/fragments/archive/none.md +75 -73
- package/cli/fragments/guardrails/codegraph.md +5 -7
- package/cli/fragments/guardrails/humanizer.md +4 -4
- package/cli/fragments/guardrails/memory.md +4 -4
- package/cli/fragments/guardrails/rtk.md +3 -3
- package/cli/fragments/guardrails/simple-english.md +4 -4
- package/cli/fragments/ops-backlog/az.md +1 -1
- package/cli/fragments/ops-backlog/gh.md +1 -1
- package/cli/fragments/ops-backlog/jira.md +1 -1
- package/cli/fragments/ops-evidence/az.md +44 -41
- package/cli/fragments/ops-evidence/gh.md +54 -53
- package/cli/fragments/ops-evidence/jira.md +42 -38
- package/cli/fragments/ops-review/az.md +1 -1
- package/cli/fragments/ops-review/gh.md +1 -1
- package/cli/fragments/ops-review/gl.md +1 -1
- package/cli/fragments/ops-ship/az.md +81 -80
- package/cli/fragments/ops-ship/gh.md +68 -68
- package/cli/fragments/ops-ship/gl.md +85 -85
- package/cli/presets/agents-content.json +34 -53
- package/cli/steps/copy/agents.js +18 -17
- package/cli/steps/copy/opencode-json.js +5 -1
- package/cli/steps/copy/skills.js +98 -5
- package/cli/steps/optimization/patch-guardrails.js +5 -3
- package/cli/utils/copy.js +8 -3
- package/cli/utils/update-manifest.js +28 -2
- package/harness/.agents/skills/pc-guardrails-generic/SKILL.md +47 -68
- package/harness/.agents/skills/pc-make-architecture/SKILL.md +31 -51
- package/harness/.agents/skills/pc-make-design/SKILL.md +45 -68
- package/harness/.agents/skills/pc-make-engineer/SKILL.md +59 -219
- package/harness/.agents/skills/pc-make-engineer/signal-mapping.md +53 -68
- package/harness/.agents/skills/pc-make-engineer/template.md +42 -80
- package/harness/.agents/skills/pc-make-evidence-scaffold/SKILL.md +18 -18
- package/harness/.agents/skills/pc-make-evidence-scaffold/evidence-contract.md +29 -29
- package/harness/.agents/skills/pc-make-guardrails/SKILL.md +43 -74
- package/harness/.agents/skills/pc-make-guardrails/category-reference.md +10 -5
- package/harness/.agents/skills/pc-make-merge-risk-assess/category-reference.md +26 -7
- package/harness/.agents/skills/pc-make-user-model/SKILL.md +56 -66
- package/harness/.agents/skills/pc-ops-evidence/SKILL.md +133 -127
- package/harness/.agents/skills/pc-plan-apply/SKILL.md +14 -5
- package/harness/.agents/skills/pc-plan-apply/simple-mode.md +21 -21
- package/harness/.agents/skills/pc-plan-archive/SKILL.md +66 -66
- package/harness/.agents/skills/pc-plan-explore/SKILL.md +19 -2
- package/harness/.agents/skills/pc-plan-goal/SKILL.md +11 -7
- package/harness/.agents/skills/pc-plan-goal/output-mode.md +1 -0
- package/harness/.agents/skills/pc-plan-goal/output.md +71 -65
- package/harness/.agents/skills/pc-plan-propose/SKILL.md +1 -1
- package/harness/.agents/skills/pc-plan-quick/SKILL.md +46 -62
- package/harness/.agents/skills/pc-plan-story/SKILL.md +48 -149
- package/harness/.agents/skills/pc-repo-help/SKILL.md +89 -91
- package/harness/.agents/skills/pc-repo-initialize/SKILL.md +112 -130
- package/harness/.agents/skills/pc-repo-onboard/SKILL.md +32 -87
- package/harness/.agents/skills/pc-repo-verify/SKILL.md +2 -0
- package/harness/.agents/skills/pc-userstory-az/SKILL.md +71 -157
- package/harness/.agents/skills/pc-userstory-browser/SKILL.md +50 -122
- package/harness/.agents/skills/pc-userstory-gh/SKILL.md +63 -120
- package/harness/.agents/skills/pc-userstory-jira/SKILL.md +74 -131
- package/harness/.opencode/commands/init.md +5 -5
- package/harness/.opencode/commands/make-architecture.md +5 -5
- package/harness/.opencode/commands/make-design.md +5 -5
- package/harness/.opencode/commands/make-engineer.md +5 -5
- package/harness/.opencode/commands/make-evidence-scaffold.md +5 -5
- package/harness/.opencode/commands/make-guardrails.md +5 -5
- package/harness/.opencode/commands/make-user-model.md +5 -5
- package/harness/.opencode/commands/plan-apply.md +9 -9
- package/harness/.opencode/commands/plan-goal.md +5 -5
- package/harness/.opencode/commands/plan-quick.md +5 -5
- package/harness/.opencode/commands/plan-story.md +9 -9
- package/harness/.opencode/commands/repo-audit.md +5 -5
- package/harness/.opencode/commands/repo-initialize.md +5 -5
- package/harness/.opencode/commands/repo-onboard.md +5 -5
- package/harness/.opencode/commands/repo-verify.md +5 -5
- package/harness/.opencode/plugins/pc-subagent-monitor.js +82 -2
- package/harness/.opencode/plugins/pc-subagent-tiers.js +9 -6
- package/harness/.opencode/plugins/pc-system-reminders.js +312 -3
- package/harness/AGENTS.md +49 -71
- package/harness/opencode.jsonc +1 -1
- package/package.json +1 -1
|
@@ -1,219 +1,59 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: pc-make-engineer
|
|
3
|
-
description: Create a custom engineer agent via persona-driven interactive design. Invoked by the /make-engineer command.
|
|
4
|
-
license: MIT
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
Create one file
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
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
|
-
## Step 3: Persona-specific form (recommend and confirm)
|
|
64
|
-
|
|
65
|
-
Present a short form using the `question` tool. Each question is a closed choice or yes-no. Every option that matches a detected signal from Step 2 must be marked (Recommended) and pre-selected. The user just confirms or overrides.
|
|
66
|
-
|
|
67
|
-
Ask 2-5 questions total:
|
|
68
|
-
|
|
69
|
-
1. Architecture / patterns (always ask for `frontend`, `backend`, `layout`, `api` personas; optional otherwise). Use `multiple: true`. Pre-select the architecture detected in Step 2 and mark it (Recommended); offer common alternatives so the user can opt in even when the codebase does not signal one yet. Options map to the known sources in the [signal mapping](signal-mapping.md) reference:
|
|
70
|
-
- Feature-Sliced Design (FSD)
|
|
71
|
-
- Design patterns: singleton, observer, factory, hooks, HOC, compound, render-props, provider
|
|
72
|
-
- Rendering patterns: SSR, RSC, streaming, static, islands, progressive hydration
|
|
73
|
-
- Performance patterns: bundle splitting, tree-shaking, dynamic import, route-based
|
|
74
|
-
- Microservices
|
|
75
|
-
- Monolith / layered
|
|
76
|
-
2. Up to 4 more questions, only where Step 2 detected multiple options or where the user's choice genuinely matters (e.g. which test runner, which styling approach, which cloud). Skip anything with a single detected option and just use it silently.
|
|
77
|
-
|
|
78
|
-
Rules:
|
|
79
|
-
- Options matching a detected signal are (Recommended) and pre-selected.
|
|
80
|
-
- Never ask about things where only one option was detected.
|
|
81
|
-
- Keep the whole form to 5 questions max.
|
|
82
|
-
- The user's selections here (plus Step 2 signals) become the recommended skill set that Step 4 resolves, confirms, and installs.
|
|
83
|
-
|
|
84
|
-
## Step 4: Skill discovery, confirmation, and install
|
|
85
|
-
|
|
86
|
-
Complete this step fully before writing anything in Step 5. The agent file is worthless without real skills. The flow is: discover candidates, confirm with the user, install the confirmed set, verify.
|
|
87
|
-
|
|
88
|
-
### 4a. Pre-check already-installed skills
|
|
89
|
-
|
|
90
|
-
Before searching, build a map of what's already available:
|
|
91
|
-
|
|
92
|
-
1. List every directory in `.agents/skills/`
|
|
93
|
-
2. Read `skills-lock.json` for npx-installed skills
|
|
94
|
-
3. For each detected signal from Step 2, check if an already-installed skill covers it
|
|
95
|
-
4. Mark covered signals as already-satisfied
|
|
96
|
-
|
|
97
|
-
Report:
|
|
98
|
-
|
|
99
|
-
```
|
|
100
|
-
Already installed:
|
|
101
|
-
<skill-name> covers <signal>
|
|
102
|
-
...
|
|
103
|
-
Signals still needing skills:
|
|
104
|
-
- <signal-type>: <signal-value>
|
|
105
|
-
...
|
|
106
|
-
```
|
|
107
|
-
|
|
108
|
-
### 4b. Ensure `find-skills` is available
|
|
109
|
-
|
|
110
|
-
Check if `.agents/skills/find-skills/SKILL.md` exists. If not, install it:
|
|
111
|
-
|
|
112
|
-
```bash
|
|
113
|
-
npx skills add -y vercel-labs/skills@find-skills
|
|
114
|
-
```
|
|
115
|
-
|
|
116
|
-
If it can't be installed, stop and tell the user: "find-skills is required for skill discovery. Install it manually with `npx skills add -y vercel-labs/skills@find-skills` and re-run."
|
|
117
|
-
|
|
118
|
-
### 4c. Search and resolve
|
|
119
|
-
|
|
120
|
-
For each uncovered signal, run `npx skills find` with the query and resolve architecture/patterns via the known direct sources. Follow the [signal mapping](signal-mapping.md) reference for the full table of queries, known direct sources, quality filter, recommended set assembly, and post-install verification.
|
|
121
|
-
|
|
122
|
-
### 4d. Confirm the skill set (the form)
|
|
123
|
-
|
|
124
|
-
Present the recommended set to the user as a multi-select form using the `question` tool with `multiple: true`, and pre-select every recommended skill. This is the confirmation gate.
|
|
125
|
-
|
|
126
|
-
- Group the options by category: Architecture, Development, Testing, Infrastructure.
|
|
127
|
-
- For each skill show: name, one-line description, source (`owner/repo`), and install count (or "curated source" for known direct source entries).
|
|
128
|
-
- Every recommended skill is checked by default; the user unchecks anything unwanted.
|
|
129
|
-
- Include a short note that they can request additional skills by name.
|
|
130
|
-
- Nothing installs until the user submits this form.
|
|
131
|
-
|
|
132
|
-
The submitted selection is the confirmed set. Install only the confirmed set in the next step.
|
|
133
|
-
|
|
134
|
-
### 4e. Install the confirmed set
|
|
135
|
-
|
|
136
|
-
Install each confirmed skill (project-local). Always pass `-y` to skip the skills CLI's own prompt. Use the syntax that matches the source:
|
|
137
|
-
|
|
138
|
-
```bash
|
|
139
|
-
# skills.sh index entries (from npx skills find):
|
|
140
|
-
npx skills add -y <owner/repo@skill-name>
|
|
141
|
-
|
|
142
|
-
# known direct sources (Step 4c):
|
|
143
|
-
npx skills add -y feature-sliced/skills
|
|
144
|
-
npx skills add -y PatternsDev/skills --skill <skill-name>
|
|
145
|
-
```
|
|
146
|
-
|
|
147
|
-
Project-local only. Do not use the `-g` flag.
|
|
148
|
-
|
|
149
|
-
Then run the [post-install verification](signal-mapping.md) procedure for each installed skill.
|
|
150
|
-
|
|
151
|
-
## Step 5: Fill the template
|
|
152
|
-
|
|
153
|
-
Before creating the file, check if `.opencode/agents/{persona}-engineer.md` already exists. If it does, call the `question` tool:
|
|
154
|
-
|
|
155
|
-
```json
|
|
156
|
-
{
|
|
157
|
-
"questions": [
|
|
158
|
-
{
|
|
159
|
-
"header": "Overwrite engineer",
|
|
160
|
-
"question": "An engineer named \"{persona}-engineer\" already exists. Overwrite or cancel?",
|
|
161
|
-
"options": [
|
|
162
|
-
{ "label": "Overwrite", "description": "Proceed, preserving the existing color frontmatter value unless a new one is chosen." },
|
|
163
|
-
{ "label": "Cancel", "description": "Stop. Do not modify the existing file." }
|
|
164
|
-
]
|
|
165
|
-
}
|
|
166
|
-
]
|
|
167
|
-
}
|
|
168
|
-
```
|
|
169
|
-
|
|
170
|
-
- If `Overwrite`: proceed, but preserve the existing `color:` frontmatter value unless the user chose a new one.
|
|
171
|
-
- If `Cancel`: stop.
|
|
172
|
-
|
|
173
|
-
Fill the [template](template.md). All the research from Steps 2-4 (signal detection, project analysis, tech stack knowledge) was for selecting the right skills. The agent file itself is just the template. Do not write project knowledge, architecture notes, coding conventions, file maps, testing patterns, or workflow instructions into the file. Those belong in skills and guardrails.
|
|
174
|
-
|
|
175
|
-
Follow the [template](template.md) reference for the full structure, description quality bar, identity paragraph rules, category rules, and structural validation checklist.
|
|
176
|
-
|
|
177
|
-
## Step 6: Validate the file
|
|
178
|
-
|
|
179
|
-
After writing the agent file, run both checks from the [template](template.md) reference:
|
|
180
|
-
|
|
181
|
-
1. Structural validation: verify frontmatter, no `model:` field, `## Abilities` is the only `##` heading, one identity paragraph, abilities categorized, one file only.
|
|
182
|
-
2. Skill reference validation: verify every `@skill-name` in `## Abilities` exists in `.agents/skills/` and in `skills-lock.json`.
|
|
183
|
-
|
|
184
|
-
If either check fails, fix the file and re-validate.
|
|
185
|
-
|
|
186
|
-
## Step 7: Update fullstack-engineer.md abilities
|
|
187
|
-
|
|
188
|
-
`fullstack-engineer.md` is `mode: subagent`, but it is also the body that `pc-subagent-tiers` copies into `build.md` and `plan.md` on every startup. So every skill listed here reaches both primary agents, which is why it accumulates all of them: it plans and delegates rather than doing parallel implementation itself.
|
|
189
|
-
|
|
190
|
-
After creating the persona engineer and validating its references, additively merge new skills into fullstack:
|
|
191
|
-
|
|
192
|
-
1. Read `.agents/skills/` directory to list all installed skills.
|
|
193
|
-
2. Read `skills-lock.json` for npx-installed skills.
|
|
194
|
-
3. Read the current `fullstack-engineer.md`.
|
|
195
|
-
4. Parse its existing `## Abilities` section to find which skills are already listed.
|
|
196
|
-
5. Append-only: add only skills that are not already in the file (dedup by skill name).
|
|
197
|
-
6. Preserve the frontmatter (mode, color, permissions, model if stamped), the identity paragraph, and all existing ability lines.
|
|
198
|
-
7. Remove any old startup directive line. The `pc-system-reminders` plugin loads abilities for every session.
|
|
199
|
-
8. Write the file back.
|
|
200
|
-
|
|
201
|
-
Merge new skills into existing categories. If a new skill belongs to "Development" and that line already exists, append to it. If a new category is needed, add it. Do not overwrite the Abilities section.
|
|
202
|
-
|
|
203
|
-
## Step 8: Update AGENTS.md
|
|
204
|
-
|
|
205
|
-
Add the new agent to the agents table in AGENTS.md (if a table exists) or note it:
|
|
206
|
-
```
|
|
207
|
-
| `{persona}-engineer` | .opencode/agents/{persona}-engineer.md | <short role description> |
|
|
208
|
-
```
|
|
209
|
-
|
|
210
|
-
## Step 9: Show summary
|
|
211
|
-
|
|
212
|
-
Report:
|
|
213
|
-
- Engineer file created at `.opencode/agents/{persona}-engineer.md`
|
|
214
|
-
- Skills installed from skills.sh (list each with source and install count)
|
|
215
|
-
- Signals with no quality skill found on skills.sh (list each)
|
|
216
|
-
- Skills that failed validation or install (list each with reason)
|
|
217
|
-
- `fullstack-engineer.md` updated (additive, list new skills added)
|
|
218
|
-
- How to use: "This agent will be spawned by the lead during `/plan-apply` for tasks matching its specialty."
|
|
219
|
-
- "Restart opencode for the `pc-subagent-tiers` plugin to pick up the new engineer and rebuild `build.md` and `plan.md` from the updated fullstack abilities."
|
|
1
|
+
---
|
|
2
|
+
name: pc-make-engineer
|
|
3
|
+
description: Create a custom engineer agent via persona-driven interactive design. Invoked by the /make-engineer command.
|
|
4
|
+
license: MIT
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
Create one file, `.opencode/agents/{persona}-engineer.md`, from the [template](template.md). The research behind it is for choosing the right skills, not for filling the file: expertise notes, architecture, conventions, file maps and workflow steps belong in skills.
|
|
8
|
+
|
|
9
|
+
## Rules
|
|
10
|
+
|
|
11
|
+
- Never write the agent file before the user has confirmed the skill set and it is installed. An engineer whose abilities do not exist cannot work.
|
|
12
|
+
- Never write `model:` or `color:`. `pc-subagent-tiers` injects both at startup, so a hand-picked colour is overwritten.
|
|
13
|
+
- Never create `*.build.md`, `*.fast.md`, `*.plan.md`, `build.md` or `plan.md`. The plugin regenerates all of them every startup and anything written there is lost.
|
|
14
|
+
- `mode: subagent`. Engineers are reached through `task()`, and a primary would clutter the two-entry list a human picks from.
|
|
15
|
+
- The only `##` heading is `## Abilities`, and the identity paragraph is two or three sentences carrying no project knowledge.
|
|
16
|
+
- Every `@skill` under `## Abilities` exists in `.agents/skills/` and in `skills-lock.json`. A name that is not installed is skipped rather than blocking the worker, so a typo costs the agent that ability in silence.
|
|
17
|
+
- Project-local installs only: `npx skills add -y ...`, never `-g`.
|
|
18
|
+
- At most five form questions, and only where more than one option was detected. A signal with one option is used without asking.
|
|
19
|
+
|
|
20
|
+
## Contracts
|
|
21
|
+
|
|
22
|
+
Personas: `frontend`, `layout`, `backend`, `data`, `devops`, `security`, `mobile`, `api`, `qa`. A persona passed as an argument (`/make-engineer frontend`) or typed by the user is taken as given.
|
|
23
|
+
|
|
24
|
+
Signals to detect: language, framework, data layer, testing, styling, architecture, i18n, CI/CD, cloud and IaC, monitoring, linting, dependency injection.
|
|
25
|
+
|
|
26
|
+
Discovery needs `find-skills`, and has no fallback without it:
|
|
27
|
+
|
|
28
|
+
```bash
|
|
29
|
+
npx skills add -y vercel-labs/skills@find-skills
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
When `.opencode/agents/{persona}-engineer.md` already exists, ask before touching it:
|
|
33
|
+
|
|
34
|
+
```json
|
|
35
|
+
{
|
|
36
|
+
"questions": [
|
|
37
|
+
{
|
|
38
|
+
"header": "Overwrite engineer",
|
|
39
|
+
"question": "An engineer named \"{persona}-engineer\" already exists. Overwrite or cancel?",
|
|
40
|
+
"options": [
|
|
41
|
+
{ "label": "Overwrite", "description": "Rewrite the file from the template." },
|
|
42
|
+
{ "label": "Cancel", "description": "Stop. Do not modify the existing file." }
|
|
43
|
+
]
|
|
44
|
+
}
|
|
45
|
+
]
|
|
46
|
+
}
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
`fullstack-engineer.md` is the body `pc-subagent-tiers` copies into `build.md` and `plan.md`, so every skill listed there reaches both primaries. Merge into it additively: add only skills it does not already list, put them in the category lines that already exist where they fit, and leave its frontmatter, identity paragraph and existing ability lines alone.
|
|
50
|
+
|
|
51
|
+
## Flow
|
|
52
|
+
|
|
53
|
+
1. **Persona.** Ask with the `question` tool unless it arrived as an argument. The answer decides what to detect, what to ask, and which skills to look for.
|
|
54
|
+
2. **Signals.** Read `.opencode/source-roots.json` (if it is missing or empty, ask which directories to scan), then `ARCHITECTURE.md`, `DESIGN.md`, and the manifests (`package.json`, `tsconfig.json`, `*.csproj`, `pyproject.toml`, `go.mod`, `Cargo.toml`). Detect what the persona needs and report the inventory.
|
|
55
|
+
3. **Form.** Present the detected options with the `question` tool, pre-selected and marked `(Recommended)`. For `frontend`, `backend`, `layout` and `api`, one question is architecture and patterns, whose options come from the [signal mapping](signal-mapping.md) tables.
|
|
56
|
+
4. **Skills.** A signal already covered by a skill in `.agents/skills/` or `skills-lock.json` needs no search. Map each remaining signal to a query through the [signal mapping](signal-mapping.md), present the candidates as one multi-select `question` grouped by category (name, one line, `owner/repo`, install count), install what the user confirms, and verify each one landed in both `.agents/skills/` and the lockfile.
|
|
57
|
+
5. **Write** the file from the [template](template.md).
|
|
58
|
+
6. **Merge** the new skills into `fullstack-engineer.md`.
|
|
59
|
+
7. **Report** the file created, the skills installed, the signals with no quality skill, whatever failed, and that opencode has to restart before `pc-subagent-tiers` picks the engineer up.
|
|
@@ -1,68 +1,53 @@
|
|
|
1
|
-
# Signal-to-query mapping
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
| Signal type | Search query |
|
|
6
|
-
|---|---|
|
|
7
|
-
| Language | `npx skills find "<language-name>"` (e.g. `typescript`, `csharp`, `python`) |
|
|
8
|
-
| Framework | `npx skills find "<framework-name>"` (e.g. `react`, `ink`, `angular`, `django`) |
|
|
9
|
-
| Architecture | Use the known direct sources below. Optionally also `npx skills find "<pattern-name>"` |
|
|
10
|
-
| Testing | `npx skills find "<test-framework> testing"` (e.g. `vitest testing`, `jest testing`) |
|
|
11
|
-
| Styling | `npx skills find "<css-framework>"` (e.g. `tailwind`, `css modules`, `design tokens`) |
|
|
12
|
-
| Linting | `npx skills find "eslint prettier"` or `"lint format"` |
|
|
13
|
-
| CI/CD | `npx skills find "ci cd pipeline"` or `"<platform> actions"` |
|
|
14
|
-
| Cloud / IaC | `npx skills find "<cloud-provider> infrastructure"` (e.g. `azure infrastructure`) |
|
|
15
|
-
| Monitoring | `npx skills find "observability monitoring"` |
|
|
16
|
-
| i18n | `npx skills find "i18n internationalization"` |
|
|
17
|
-
| Data layer | `npx skills find "<orm-or-db> orm"` (e.g. `entity framework orm`, `prisma orm`) |
|
|
18
|
-
| Dependency Injection | `npx skills find "<di-framework>"` (e.g. `inversify`, `autofac`) |
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
## Known direct sources (architecture and patterns)
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
| Selection
|
|
27
|
-
|---|---|---|
|
|
28
|
-
| Feature-Sliced Design (FSD) | `npx skills add -y feature-sliced/skills` | `feature-sliced-design` |
|
|
29
|
-
| Design patterns | `npx skills add -y PatternsDev/skills --skill <name>` | `hooks-pattern`, `hoc-pattern`, `compound-pattern`, `render-props-pattern`, `provider-pattern`, `observer-pattern`, `factory-pattern`, `module-pattern` |
|
|
30
|
-
| Rendering patterns | `npx skills add -y PatternsDev/skills --skill <name>` | `server-side-rendering`, `client-side-rendering`, `static-rendering`, `streaming-ssr`, `react-server-components`, `progressive-hydration`, `islands-architecture` |
|
|
31
|
-
| Performance patterns | `npx skills add -y PatternsDev/skills --skill <name>` | `bundle-splitting`, `tree-shaking`, `dynamic-import`, `route-based`, `js-performance-patterns`, `react-render-optimization` |
|
|
32
|
-
| Modern React (2026 stack) | `npx skills add -y PatternsDev/skills --skill <name>` | `react-2026`, `react-composition-2026`, `react-data-fetching` |
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
-
|
|
54
|
-
- Ideal range: 5-8 for most engineers
|
|
55
|
-
- Hard cap: 10. If more candidates found, rank by install count and source reputation and keep the top 10.
|
|
56
|
-
- No redundant skills. If an already-selected skill covers the same scope as a new candidate (e.g. `vercel-react-best-practices` already covers TypeScript basics), skip the new candidate unless it provides genuinely deeper coverage for a different concern.
|
|
57
|
-
- If fewer than 5 skills are found after all searches, note it. The user can still add more in the confirmation form.
|
|
58
|
-
|
|
59
|
-
## Post-install verification
|
|
60
|
-
|
|
61
|
-
After each `npx skills add`, verify the skill actually landed and tracked itself in the lockfile:
|
|
62
|
-
|
|
63
|
-
1. Check `.agents/skills/<skill-name>/SKILL.md` exists
|
|
64
|
-
2. Check `skills-lock.json` now contains the skill entry (read it back, do not assume the entry was written)
|
|
65
|
-
|
|
66
|
-
If `.agents/skills/<skill-name>/SKILL.md` exists but `skills-lock.json` does not contain the entry: manually patch the lockfile using the Edit tool. Open `skills-lock.json`, add a new entry inside the `"skills"` object using the `owner/repo` from the install command and the structure `"source": "<owner/repo>", "sourceType": "github", "skillPath": "skills/<skill-name>/SKILL.md", "computedHash": "<skill-name>-placeholder"`. Match the existing entries' key naming. Re-read `skills-lock.json` to confirm the entry is valid JSON.
|
|
67
|
-
|
|
68
|
-
If `.agents/skills/<skill-name>/SKILL.md` is missing (network glitch, wrong repo name, auth issue): retry the install once. If still failing, drop the skill from the selection and note it in the summary as "install failed".
|
|
1
|
+
# Signal-to-query mapping
|
|
2
|
+
|
|
3
|
+
Every uncovered signal gets its own search.
|
|
4
|
+
|
|
5
|
+
| Signal type | Search query |
|
|
6
|
+
|---|---|
|
|
7
|
+
| Language | `npx skills find "<language-name>"` (e.g. `typescript`, `csharp`, `python`) |
|
|
8
|
+
| Framework | `npx skills find "<framework-name>"` (e.g. `react`, `ink`, `angular`, `django`) |
|
|
9
|
+
| Architecture | Use the known direct sources below. Optionally also `npx skills find "<pattern-name>"` |
|
|
10
|
+
| Testing | `npx skills find "<test-framework> testing"` (e.g. `vitest testing`, `jest testing`) |
|
|
11
|
+
| Styling | `npx skills find "<css-framework>"` (e.g. `tailwind`, `css modules`, `design tokens`) |
|
|
12
|
+
| Linting | `npx skills find "eslint prettier"` or `"lint format"` |
|
|
13
|
+
| CI/CD | `npx skills find "ci cd pipeline"` or `"<platform> actions"` |
|
|
14
|
+
| Cloud / IaC | `npx skills find "<cloud-provider> infrastructure"` (e.g. `azure infrastructure`) |
|
|
15
|
+
| Monitoring | `npx skills find "observability monitoring"` |
|
|
16
|
+
| i18n | `npx skills find "i18n internationalization"` |
|
|
17
|
+
| Data layer | `npx skills find "<orm-or-db> orm"` (e.g. `entity framework orm`, `prisma orm`) |
|
|
18
|
+
| Dependency Injection | `npx skills find "<di-framework>"` (e.g. `inversify`, `autofac`) |
|
|
19
|
+
|
|
20
|
+
A signal that fits no row derives its query from its own value: `npx skills find "<signal-value>"`.
|
|
21
|
+
|
|
22
|
+
## Known direct sources (architecture and patterns)
|
|
23
|
+
|
|
24
|
+
These live in dedicated repos and install by `owner/repo`, so `npx skills find` never surfaces them. They are the option list for the architecture question, and the source for it when the user picks one.
|
|
25
|
+
|
|
26
|
+
| Selection | Install command | Skill(s) to pick |
|
|
27
|
+
|---|---|---|
|
|
28
|
+
| Feature-Sliced Design (FSD) | `npx skills add -y feature-sliced/skills` | `feature-sliced-design` |
|
|
29
|
+
| Design patterns | `npx skills add -y PatternsDev/skills --skill <name>` | `hooks-pattern`, `hoc-pattern`, `compound-pattern`, `render-props-pattern`, `provider-pattern`, `observer-pattern`, `factory-pattern`, `module-pattern` |
|
|
30
|
+
| Rendering patterns | `npx skills add -y PatternsDev/skills --skill <name>` | `server-side-rendering`, `client-side-rendering`, `static-rendering`, `streaming-ssr`, `react-server-components`, `progressive-hydration`, `islands-architecture` |
|
|
31
|
+
| Performance patterns | `npx skills add -y PatternsDev/skills --skill <name>` | `bundle-splitting`, `tree-shaking`, `dynamic-import`, `route-based`, `js-performance-patterns`, `react-render-optimization` |
|
|
32
|
+
| Modern React (2026 stack) | `npx skills add -y PatternsDev/skills --skill <name>` | `react-2026`, `react-composition-2026`, `react-data-fetching` |
|
|
33
|
+
| Microservices, monolith / layered | `npx skills find "<pattern-name> architecture"` | best result per the quality filter |
|
|
34
|
+
|
|
35
|
+
Take only what the persona and the user's selection call for, at most two or three patterns.dev picks (full catalog: https://www.patterns.dev/ai/skills/catalog/). These sources are curated, so the install-count filter does not apply to them.
|
|
36
|
+
|
|
37
|
+
## Quality filter
|
|
38
|
+
|
|
39
|
+
From each search result, in order:
|
|
40
|
+
|
|
41
|
+
1. Install count at least 100, preferably 1000. Below 100, record "no quality skill found on skills.sh for \<signal\>" and move on.
|
|
42
|
+
2. Prefer an official or canonical source (`vercel-labs`, `anthropics`, `microsoft`, `feature-sliced`, `wshobson`, `github`) over an unknown author.
|
|
43
|
+
3. The description has to match the signal. A React skill with 500K installs does not cover TypeScript.
|
|
44
|
+
4. No redundancy: skip a candidate whose scope an already-selected skill covers, unless it goes genuinely deeper on a different concern.
|
|
45
|
+
|
|
46
|
+
One skill per detected signal is the floor, five to eight is the usual range, ten is the cap: past that, rank by install count and source and keep the top ten. Fewer than five found is worth saying out loud, since the user can add more in the confirmation form.
|
|
47
|
+
|
|
48
|
+
## Verifying an install
|
|
49
|
+
|
|
50
|
+
`npx skills add` is not proof of anything. Read back both `.agents/skills/<skill-name>/SKILL.md` and `skills-lock.json`.
|
|
51
|
+
|
|
52
|
+
- Skill present, lockfile entry missing: add the entry with the Edit tool, matching the existing keys' naming, as `"source": "<owner/repo>", "sourceType": "github", "skillPath": "skills/<skill-name>/SKILL.md", "computedHash": "<skill-name>-placeholder"`, then re-read the file to confirm it is still valid JSON.
|
|
53
|
+
- Skill missing: retry once, then drop it from the set and report the failure.
|
|
@@ -1,80 +1,42 @@
|
|
|
1
|
-
# Agent file template
|
|
2
|
-
|
|
3
|
-
The
|
|
4
|
-
|
|
5
|
-
```markdown
|
|
6
|
-
---
|
|
7
|
-
description: <one sentence naming the persona + top 3-5 detected technologies>
|
|
8
|
-
mode: subagent
|
|
9
|
-
permission:
|
|
10
|
-
edit: allow
|
|
11
|
-
bash: allow
|
|
12
|
-
read: allow
|
|
13
|
-
glob: allow
|
|
14
|
-
grep: allow
|
|
15
|
-
---
|
|
16
|
-
|
|
17
|
-
<One paragraph: "You are a {persona} engineer specializing in {top technologies}. You own all work in {scope/files}." Keep it to 2-3 sentences max.>
|
|
18
|
-
|
|
19
|
-
## Abilities
|
|
20
|
-
- Guardrails: @pc-guardrails-generic, @pc-guardrails-project
|
|
21
|
-
- Development: <@installed-skill-1>, <@installed-skill-2>, ...
|
|
22
|
-
- Testing: <@installed-skill-for-testing>, ...
|
|
23
|
-
- Infrastructure: <@installed-skill-for-devops>, ...
|
|
24
|
-
```
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
## Description quality bar
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
Bad: `"A frontend engineer for React"`
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
Bad: 5 paragraphs of architecture details, FSD rules, design tokens, file maps, testing patterns.
|
|
45
|
-
Good: `"You are a frontend engineer specializing in terminal UI development with Ink 7 + React 19. You own all work in the FSD layers: src/app/, src/widgets/, src/features/, src/entities/, and src/shared/."`
|
|
46
|
-
|
|
47
|
-
Rules:
|
|
48
|
-
- State the persona and specialization in one sentence
|
|
49
|
-
- State what files or layers the engineer owns in one sentence
|
|
50
|
-
- Never exceed 3 sentences
|
|
51
|
-
|
|
52
|
-
## Category rules
|
|
53
|
-
|
|
54
|
-
- Development = language/framework/UI/DI skills. Testing = test/lint/typecheck skills. Infrastructure = DevOps/CI/CD/cloud skills.
|
|
55
|
-
- Only include ability categories that have at least one real skill (besides Guardrails which is always present).
|
|
56
|
-
- Name follows `{persona}-engineer` pattern (e.g. `frontend-engineer`, `backend-engineer`).
|
|
57
|
-
- Read existing agents' `color:` frontmatter first: pick a color not already used.
|
|
58
|
-
- `warning` is reserved for the lead (fullstack) engineer, the planning agent. Never assign it to a spawned specialist.
|
|
59
|
-
|
|
60
|
-
## Structural validation checklist
|
|
61
|
-
|
|
62
|
-
After writing the agent file, verify:
|
|
63
|
-
|
|
64
|
-
1. Frontmatter exists: starts with `---`, has `description`, `mode: subagent`, `permission` block. No `color`: the `pc-subagent-tiers` plugin derives one from the agent name at startup.
|
|
65
|
-
2. No `model:` field in the frontmatter. The `pc-subagent-tiers` plugin injects it.
|
|
66
|
-
3. `## Abilities` is the only `##` heading. No other `##` sections exist in the file.
|
|
67
|
-
4. One identity paragraph before `## Abilities`: 2-3 sentences max, not multiple paragraphs.
|
|
68
|
-
5. Abilities are categorized: each line starts with `- Guardrails:`, `- Development:`, `- Testing:`, or `- Infrastructure:`. No bare `@skill-name` lines.
|
|
69
|
-
6. One file only: no `.build.md`, `.fast.md`, or `.plan.md` variant was created.
|
|
70
|
-
|
|
71
|
-
If any check fails, rewrite the file to match the template exactly.
|
|
72
|
-
|
|
73
|
-
## Skill reference validation
|
|
74
|
-
|
|
75
|
-
1. Parse every `@skill-name` from the `## Abilities` section (excluding `@pc-guardrails-generic` and `@pc-guardrails-project` which are installed at init).
|
|
76
|
-
2. For each: check `.agents/skills/<skill-name>/SKILL.md` exists.
|
|
77
|
-
3. For each: check `skills-lock.json` contains the skill.
|
|
78
|
-
4. If `.agents/skills/<skill-name>/SKILL.md` exists but `skills-lock.json` is missing the entry: manually patch `skills-lock.json` using the Edit tool (same procedure as in the signal mapping reference). Re-read `skills-lock.json` to confirm it is valid JSON.
|
|
79
|
-
5. If `.agents/skills/<skill-name>/SKILL.md` is missing: try to install it: `npx skills add -y <owner/repo@skill-name>` (search `skills-lock.json` or `npx skills find` for the owner/repo). If install fails or the skill can't be found on skills.sh, remove the reference from the file, warn the user, and note it in the summary.
|
|
80
|
-
6. Re-read the file to confirm all remaining `@skill-name` references are valid.
|
|
1
|
+
# Agent file template
|
|
2
|
+
|
|
3
|
+
The whole file, with nothing else in it:
|
|
4
|
+
|
|
5
|
+
```markdown
|
|
6
|
+
---
|
|
7
|
+
description: <one sentence naming the persona + top 3-5 detected technologies>
|
|
8
|
+
mode: subagent
|
|
9
|
+
permission:
|
|
10
|
+
edit: allow
|
|
11
|
+
bash: allow
|
|
12
|
+
read: allow
|
|
13
|
+
glob: allow
|
|
14
|
+
grep: allow
|
|
15
|
+
---
|
|
16
|
+
|
|
17
|
+
<One paragraph: "You are a {persona} engineer specializing in {top technologies}. You own all work in {scope/files}." Keep it to 2-3 sentences max.>
|
|
18
|
+
|
|
19
|
+
## Abilities
|
|
20
|
+
- Guardrails: @pc-guardrails-generic, @pc-guardrails-project
|
|
21
|
+
- Development: <@installed-skill-1>, <@installed-skill-2>, ...
|
|
22
|
+
- Testing: <@installed-skill-for-testing>, ...
|
|
23
|
+
- Infrastructure: <@installed-skill-for-devops>, ...
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
Replace every `<...>` placeholder with real values, and drop any category line with no skills in it (Guardrails always stays). Development is language, framework, UI and DI skills; Testing is test, lint and typecheck skills; Infrastructure is DevOps, CI/CD and cloud skills.
|
|
27
|
+
|
|
28
|
+
## Description quality bar
|
|
29
|
+
|
|
30
|
+
`description:` is the matching key for `/plan-apply`: the lead compares a task's domain text against it to pick a specialist, so a vague one gets the wrong engineer spawned.
|
|
31
|
+
|
|
32
|
+
Bad: `"A frontend engineer for React"`
|
|
33
|
+
|
|
34
|
+
Good: `"Frontend engineer for Ink 7 + React 19 TUI, FSD architecture, Inversify DI, design tokens, and i18n"`
|
|
35
|
+
|
|
36
|
+
Name the persona, list the three to five technologies actually detected, one sentence, no padding.
|
|
37
|
+
|
|
38
|
+
## Identity paragraph
|
|
39
|
+
|
|
40
|
+
Two or three sentences: who the engineer is, and what files or layers it owns. A knowledge dump here is knowledge the lead cannot reuse and the engineer did not ask for.
|
|
41
|
+
|
|
42
|
+
Good: `"You are a frontend engineer specializing in terminal UI development with Ink 7 + React 19. You own all work in the FSD layers: src/app/, src/widgets/, src/features/, src/entities/, and src/shared/."`
|
|
@@ -1,18 +1,18 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: pc-make-evidence-scaffold
|
|
3
|
-
description: DEPRECATED. Visual evidence is now built into pc-ops-evidence using playwright-cli + pnpm run dev. No per-project scaffold is needed. This skill is kept for backward compatibility but should not be used.
|
|
4
|
-
license: MIT
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
# DEPRECATED
|
|
8
|
-
|
|
9
|
-
This skill is no longer needed. Visual evidence uses a two-phase architecture:
|
|
10
|
-
|
|
11
|
-
1. **Agent phase:** `pc-ops-evidence` writes a `capturePlan` in `evidence.json` (the agent sandbox cannot run Docker or headless Chromium)
|
|
12
|
-
2. **CI phase:** A separate "Visual evidence" CI workflow reads the capturePlan and captures screenshots on a runner with full Docker and Chrome access
|
|
13
|
-
|
|
14
|
-
No per-project scaffold, fixture apps, or scenario registries are required. The `pc-ops-evidence` skill handles everything generically.
|
|
15
|
-
|
|
16
|
-
If you previously ran `/make-evidence-scaffold` and have a `src/visual-evidence/` directory or `visual-evidence` scripts in `package.json`, you can delete them — the new system does not use them.
|
|
17
|
-
|
|
18
|
-
To capture evidence for a change,
|
|
1
|
+
---
|
|
2
|
+
name: pc-make-evidence-scaffold
|
|
3
|
+
description: DEPRECATED. Visual evidence is now built into pc-ops-evidence using playwright-cli + pnpm run dev. No per-project scaffold is needed. This skill is kept for backward compatibility but should not be used.
|
|
4
|
+
license: MIT
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# DEPRECATED
|
|
8
|
+
|
|
9
|
+
This skill is no longer needed. Visual evidence uses a two-phase architecture:
|
|
10
|
+
|
|
11
|
+
1. **Agent phase:** `pc-ops-evidence` writes a `capturePlan` in `evidence.json` (the agent sandbox cannot run Docker or headless Chromium)
|
|
12
|
+
2. **CI phase:** A separate "Visual evidence" CI workflow reads the capturePlan and captures screenshots on a runner with full Docker and Chrome access
|
|
13
|
+
|
|
14
|
+
No per-project scaffold, fixture apps, or scenario registries are required. The `pc-ops-evidence` skill handles everything generically.
|
|
15
|
+
|
|
16
|
+
If you previously ran `/make-evidence-scaffold` and have a `src/visual-evidence/` directory or `visual-evidence` scripts in `package.json`, you can delete them — the new system does not use them.
|
|
17
|
+
|
|
18
|
+
To capture evidence for a change, run `/ops-evidence`.
|