@joenandez/academy 0.4.0-rc.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude-plugin/marketplace.json +14 -0
- package/.claude-plugin/plugin.json +6 -0
- package/CHANGELOG.md +46 -0
- package/LICENSE +21 -0
- package/README.md +209 -0
- package/bin/academy +2 -0
- package/conformance/README.md +60 -0
- package/conformance/discovery.test.mjs +140 -0
- package/conformance/envelope.test.mjs +185 -0
- package/conformance/error-codes.test.mjs +125 -0
- package/conformance/harness.mjs +180 -0
- package/conformance/identity.test.mjs +125 -0
- package/docs/integration-guide.md +1026 -0
- package/hooks/hook_runtime.mjs +100 -0
- package/hooks/hooks.json +26 -0
- package/hooks/inject_surface.py +122 -0
- package/hooks/memory_bridge.mjs +120 -0
- package/hooks/memory_store.mjs +66 -0
- package/hooks/register_session.mjs +51 -0
- package/hooks/sync_memory.mjs +27 -0
- package/package.json +41 -0
- package/scripts/agent.mjs +3 -0
- package/scripts/cli/archive.mjs +161 -0
- package/scripts/cli/archived.mjs +82 -0
- package/scripts/cli/args.mjs +282 -0
- package/scripts/cli/codex.mjs +216 -0
- package/scripts/cli/core.mjs +389 -0
- package/scripts/cli/create.mjs +242 -0
- package/scripts/cli/doctor.mjs +203 -0
- package/scripts/cli/eventlog.mjs +129 -0
- package/scripts/cli/events.mjs +80 -0
- package/scripts/cli/hire-headless.mjs +229 -0
- package/scripts/cli/hire-spec.mjs +164 -0
- package/scripts/cli/hire.mjs +92 -0
- package/scripts/cli/inspect.mjs +286 -0
- package/scripts/cli/lifecycle.mjs +296 -0
- package/scripts/cli/main.mjs +102 -0
- package/scripts/cli/migrate.mjs +183 -0
- package/scripts/cli/notes.mjs +104 -0
- package/scripts/cli/rename.mjs +172 -0
- package/scripts/cli/run.mjs +227 -0
- package/scripts/cli/runtime.mjs +47 -0
- package/scripts/cli/scaffold.mjs +332 -0
- package/scripts/cli/sessions.mjs +98 -0
- package/scripts/cli/templates.mjs +104 -0
- package/scripts/cli/yaml.mjs +124 -0
- package/skills/hire/SKILL.md +669 -0
- package/templates/agents/claude-code/knowledge-curator.md +14 -0
- package/templates/agents/codex/knowledge-curator.toml +9 -0
- package/templates/skills/check-in/SKILL.md +122 -0
- package/templates/skills/knowledge-curation/SKILL.md +132 -0
- package/templates/skills/nightly-consolidation/SKILL.md +240 -0
- package/templates/skills/self-update/SKILL.md +121 -0
|
@@ -0,0 +1,669 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: hire
|
|
3
|
+
description: Hire an Academy v3 agent through a specialist-first conversation. Helps the user crystallize the exact expert they want, creates a runnable agent before research completes, writes starter boot surfaces, schedules background knowledge enrichment, and optionally registers future or recurring work. Boots context budget ~5–6k tokens after enrichment.
|
|
4
|
+
disable-model-invocation: true
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Academy v3 — Hire flow
|
|
8
|
+
|
|
9
|
+
Hire an autonomous Academy v3 agent as an **Academy Specialist**. The user
|
|
10
|
+
usually has a rough sense of the expert they want, but may not yet have the
|
|
11
|
+
language for the exact specialty, judgment style, and capability stack. Your
|
|
12
|
+
job is to help crystallize the right specialist, then write the **eight boot
|
|
13
|
+
files** that will be loaded into every session via SessionStart hooks. The
|
|
14
|
+
agent must be runnable before domain research completes; research is an
|
|
15
|
+
automatic enrichment step after the hiring summary.
|
|
16
|
+
|
|
17
|
+
| File | Contains | Soft cap |
|
|
18
|
+
| --- | --- | --- |
|
|
19
|
+
| `identity.md` | Values, character, voice, persona/backstory | ~400 tokens |
|
|
20
|
+
| `role.md` | Job, responsibilities, loop, guardrails, autonomy, deliverables, quality bar, anti-patterns, DoD, cadence | ~600 tokens |
|
|
21
|
+
| `knowledge.md` | Domain expertise, mental models, frameworks, learned patterns | ~1500–2500 tokens |
|
|
22
|
+
| `goals.md` | Strategic objectives (hard cap 3) | ~150 tokens |
|
|
23
|
+
| `priorities.md` | Weekly direction (3–5 visible) | ~250 tokens |
|
|
24
|
+
| `threads.md` | Active work threads (starts empty) | ~700 tokens |
|
|
25
|
+
| `notes.md` | Micro-steering staging area (starts empty) | ~500 tokens |
|
|
26
|
+
| `dailys.md` | Last 7 working days (starts empty) | ~1000 tokens |
|
|
27
|
+
|
|
28
|
+
**Total target after enrichment: ~5–6k tokens.** Budget matters — the hire
|
|
29
|
+
flow's job is to get the agent working quickly, then let the knowledge base
|
|
30
|
+
deepen without blocking first use.
|
|
31
|
+
|
|
32
|
+
---
|
|
33
|
+
|
|
34
|
+
## Core method
|
|
35
|
+
|
|
36
|
+
**Specialist-first.** Treat the hire as expert design, not task scheduling.
|
|
37
|
+
Infer what the specialist should be unusually good at, how they should make
|
|
38
|
+
judgment calls, what mediocre work they should reject, and which skills/tools
|
|
39
|
+
would make them more capable. Scheduling is an operating mode, not the center
|
|
40
|
+
of the product.
|
|
41
|
+
|
|
42
|
+
**Draft-first, falsify-second.** Commit to a specific strawman with strong
|
|
43
|
+
opinions, then interrogate it. Every question to the user must satisfy:
|
|
44
|
+
*"I'm asking this because I currently believe X, and if the user says Y
|
|
45
|
+
instead, I'll change the draft by Z."* If you can't complete that sentence
|
|
46
|
+
with specifics, the question is dead weight — don't ask it.
|
|
47
|
+
|
|
48
|
+
**Adaptation over scripts.** If an answer surprises you, the next question
|
|
49
|
+
digs into the surprise. You're running Bayesian inference, not reading from
|
|
50
|
+
a list.
|
|
51
|
+
|
|
52
|
+
**Stop questioning when** you can write each section with confidence, the
|
|
53
|
+
user has skipped two consecutive questions, or the user says "ship it." Make
|
|
54
|
+
skipping explicit: after asking a sharp question, remind the user they can say
|
|
55
|
+
`skip` and you'll proceed with your current best inference.
|
|
56
|
+
|
|
57
|
+
**Anti-patterns to reject in yourself:**
|
|
58
|
+
|
|
59
|
+
- Generic discovery questions ("what are your goals?", "any other requirements?")
|
|
60
|
+
- Compound questions wearing a trenchcoat ("what's X and Y and Z?")
|
|
61
|
+
- Presenting specialist options that are not anchored in the user's own dump
|
|
62
|
+
- Blocking first use on information research subagents could find — write the starter agent first and let background enrichment handle it
|
|
63
|
+
- Padding `identity.md` / `role.md` sections you can't defend with conviction — prefer a thinner section over filler
|
|
64
|
+
- Sanding off the user's opinions into corporate prose during synthesis
|
|
65
|
+
- Letting research dominate the draft so it reads like "what the internet thinks" — the user's specific situation outranks generic best practices when they conflict
|
|
66
|
+
- Treating the interview as a form — it's a conversation between two people who care about getting this right
|
|
67
|
+
|
|
68
|
+
---
|
|
69
|
+
|
|
70
|
+
## Step 0 — Frame the conversation
|
|
71
|
+
|
|
72
|
+
Deliver this naturally (adapt tone; don't read verbatim):
|
|
73
|
+
|
|
74
|
+
> **Welcome.** You're about to hire an Academy agent. Each agent runs on the
|
|
75
|
+
> Academy agent platform. Think of this as hiring a specialist, not
|
|
76
|
+
> starting a generic chat: someone with a specific area of expertise, a point
|
|
77
|
+
> of view, a memory, and a way of working.
|
|
78
|
+
>
|
|
79
|
+
> You can launch the agent any time, from any workspace. They remember the
|
|
80
|
+
> work that happened anywhere they worked. Each specialist has their own
|
|
81
|
+
> identity, knowledge, goals, priorities, and notes; they process memory every
|
|
82
|
+
> night; and they can use specific Skills and MCP servers to do their job
|
|
83
|
+
> effectively.
|
|
84
|
+
>
|
|
85
|
+
> You set the direction. You can run the specialist on demand, ask them to do
|
|
86
|
+
> something in the future, or give them recurring work.
|
|
87
|
+
>
|
|
88
|
+
> Let's get started.
|
|
89
|
+
|
|
90
|
+
Then proceed to Step 1.
|
|
91
|
+
|
|
92
|
+
---
|
|
93
|
+
|
|
94
|
+
## Step 1 — The dump
|
|
95
|
+
|
|
96
|
+
One open prompt. Specialist-first.
|
|
97
|
+
|
|
98
|
+
> "**Tell me what kind of specialist you wish you had available.** What should
|
|
99
|
+
> they be unusually good at? What work should they make easier, clearer, or
|
|
100
|
+
> higher quality? If there are specific companies, products, people, or skills
|
|
101
|
+
> you want them modeled after — for example, a design lead shaped by Slack,
|
|
102
|
+
> Superhuman, and Notion — include those too. A rough version is fine; I'll
|
|
103
|
+
> help sharpen it."
|
|
104
|
+
|
|
105
|
+
Wait for response.
|
|
106
|
+
|
|
107
|
+
---
|
|
108
|
+
|
|
109
|
+
## Step 2 — Specialist hypotheses + hire sheet
|
|
110
|
+
|
|
111
|
+
First, reflect back **2–3 plausible specialist hypotheses** that are all
|
|
112
|
+
grounded in the user's actual dump. Do not invent disconnected options. Each
|
|
113
|
+
hypothesis should represent a different interpretation of the same user need:
|
|
114
|
+
for example, an operator vs. an advisor vs. a builder vs. a researcher, but
|
|
115
|
+
only when those shapes genuinely follow from what the user said.
|
|
116
|
+
|
|
117
|
+
For each hypothesis, include:
|
|
118
|
+
|
|
119
|
+
- **Specialist shape:** The role archetype in plain English.
|
|
120
|
+
- **Why it fits:** The exact phrase or need from the user's dump that supports it.
|
|
121
|
+
- **What would change:** How the boot files, first assignment, skills, or schedule
|
|
122
|
+
would differ if this hypothesis wins.
|
|
123
|
+
|
|
124
|
+
Then state your current recommendation:
|
|
125
|
+
|
|
126
|
+
> "I think {hypothesis} is the best fit because {reason}. If that's wrong,
|
|
127
|
+
> say so; if you want to move quickly, say `ship it` or `skip` and I'll use
|
|
128
|
+
> this version."
|
|
129
|
+
|
|
130
|
+
After the hypothesis pass, reflect back a structured hire sheet. Fill gaps
|
|
131
|
+
with archetype defaults rather than interrogating.
|
|
132
|
+
|
|
133
|
+
| Field | Source |
|
|
134
|
+
| --- | --- |
|
|
135
|
+
| Role title | Inferred from work description |
|
|
136
|
+
| Specialist shape | Operator, advisor, researcher, builder, coach/editor, or a tighter role-specific label |
|
|
137
|
+
| Core expertise | What this specialist should be unusually good at |
|
|
138
|
+
| Judgment style | How they make tradeoffs; what they should be opinionated about |
|
|
139
|
+
| Reference background | Specific companies, products, teams, people, schools of practice, or archetype defaults |
|
|
140
|
+
| Objective | Direct restatement of the primary work need |
|
|
141
|
+
| Responsibilities | 3–5 bullets decomposed from the work |
|
|
142
|
+
| Capability stack | Known tools, useful skills, possible future MCP servers; mark unknowns for enrichment |
|
|
143
|
+
| Operating mode | On-demand, one future task, recurring work, or a mix |
|
|
144
|
+
| Scheduled task permissions | Claude Code permission mode for Helm-launched tasks |
|
|
145
|
+
| Data sources | URLs/APIs/files mentioned, else discover-over-time |
|
|
146
|
+
|
|
147
|
+
Present the hire sheet. Operating mode is about how the specialist works:
|
|
148
|
+
on-demand is the default; future and recurring tasks are optional.
|
|
149
|
+
|
|
150
|
+
If the specialist would benefit from existing installable skills, do a quick
|
|
151
|
+
capability scout before generation: derive 1–3 focused queries from the hire
|
|
152
|
+
sheet and run `npx skills find "{query}"` or use the installed `find-skills`
|
|
153
|
+
workflow. Only recommend skills that are clearly relevant and reputable. Do
|
|
154
|
+
not install external skills without explicit user confirmation. If no strong
|
|
155
|
+
skill match appears quickly, write "No external skill added at hire time" and
|
|
156
|
+
leave a capability-stack open question for enrichment.
|
|
157
|
+
|
|
158
|
+
Then apply the **draft-first/falsification protocol** (see Core method):
|
|
159
|
+
instead of asking "anything to add?", identify the 1–3 fields you're least
|
|
160
|
+
confident in and ask one sharp question per field that would change the
|
|
161
|
+
sheet if the user disagreed. Ask about judgment and expertise before
|
|
162
|
+
configuration. Templates — adapt to the actual hire:
|
|
163
|
+
|
|
164
|
+
- "I made this specialist stubborn about {X}. If you want them to optimize
|
|
165
|
+
for {Y} instead, I'll change their principles and quality bar."
|
|
166
|
+
- "I shaped them as a {builder/advisor/researcher}. If you really need a
|
|
167
|
+
{different shape}, I'll change the role loop and first assignment."
|
|
168
|
+
- "I assumed they should reject {failure mode}. If that's too strict, I'll
|
|
169
|
+
soften the guardrails."
|
|
170
|
+
|
|
171
|
+
Skip questions you can't complete the "if user says Y, draft changes by Z"
|
|
172
|
+
sentence for. Stop when the sheet is confident, the user says `skip`, or the
|
|
173
|
+
user signals done.
|
|
174
|
+
|
|
175
|
+
---
|
|
176
|
+
|
|
177
|
+
## Step 3 — Name the agent
|
|
178
|
+
|
|
179
|
+
Propose 3–5 short, distinctive proper names (one word, easy to type,
|
|
180
|
+
thematically resonant but not literal). The chosen name becomes:
|
|
181
|
+
|
|
182
|
+
- The directory slug at `${AGENTS_ROOT:-~/.academy/agents}/{slug}/` (lowercase, kebab-case)
|
|
183
|
+
- The display name throughout `identity.md`
|
|
184
|
+
- The CLI handle: `academy run {slug}`
|
|
185
|
+
|
|
186
|
+
Wait for the user to pick.
|
|
187
|
+
|
|
188
|
+
---
|
|
189
|
+
|
|
190
|
+
## Step 4 — First assignment + operating mode
|
|
191
|
+
|
|
192
|
+
Propose what the agent will produce in their first work session. One
|
|
193
|
+
sentence is enough. Then use this as a teaching moment:
|
|
194
|
+
|
|
195
|
+
> "You can run {Name} on demand any time with `academy run {slug}`. You can
|
|
196
|
+
> also ask me, or ask the agent later, to set up proactive work in natural
|
|
197
|
+
> language — like `review the onboarding funnel every Monday at 9am`, `check
|
|
198
|
+
> the release notes tomorrow afternoon`, or `start the first design audit next
|
|
199
|
+
> Friday morning`. I'll set it up for you when you want. For now I recommend
|
|
200
|
+
> {mode} because {reason}. Say `skip` if you want to keep them on-demand."
|
|
201
|
+
|
|
202
|
+
Wait for confirmation. If the user wants on-demand only, continue without a
|
|
203
|
+
future or recurring work session. If the user wants the first assignment in
|
|
204
|
+
the future, capture the natural-language time. If the user wants recurring
|
|
205
|
+
work, capture the cadence and working directory. When the user chooses future
|
|
206
|
+
or recurring work, offer to set it up now rather than making them translate
|
|
207
|
+
the request into cron or CLI syntax.
|
|
208
|
+
|
|
209
|
+
---
|
|
210
|
+
|
|
211
|
+
## Step 5 — Operating schedule and permission confirmation
|
|
212
|
+
|
|
213
|
+
All Helm-launched Claude Code tasks must have an explicit permission mode
|
|
214
|
+
because scheduled jobs run headless and cannot answer approval prompts.
|
|
215
|
+
|
|
216
|
+
Ask the user which permission level scheduled tasks should use. Recommend
|
|
217
|
+
`auto` unless the user needs stricter review or explicitly accepts full bypass.
|
|
218
|
+
Translate the answer into one of these Claude Code passthrough arg sets:
|
|
219
|
+
|
|
220
|
+
| User-facing choice | Passthrough args |
|
|
221
|
+
| --- | --- |
|
|
222
|
+
| Default | `--permission-mode default` |
|
|
223
|
+
| Accept edits | `--permission-mode acceptEdits` |
|
|
224
|
+
| Plan mode | `--permission-mode plan` |
|
|
225
|
+
| Auto mode (recommended) | `--permission-mode auto` |
|
|
226
|
+
| Dangerously skip permissions | `--dangerously-skip-permissions` |
|
|
227
|
+
|
|
228
|
+
Persist the selected passthrough args as `{scheduled permission args}` for every
|
|
229
|
+
`helm-tasks schedule` command below, including one-off knowledge enrichment.
|
|
230
|
+
|
|
231
|
+
If Step 4 included a one-off future task, convert the user's natural language
|
|
232
|
+
time into an absolute scheduled time or a clear `--in` duration for
|
|
233
|
+
`helm-tasks schedule`.
|
|
234
|
+
|
|
235
|
+
If Step 4 included recurring work, convert the user's natural-language schedule
|
|
236
|
+
to a cron expression. Confirm:
|
|
237
|
+
|
|
238
|
+
- Frequency + time → cron string
|
|
239
|
+
- Project working directory → absolute path
|
|
240
|
+
|
|
241
|
+
If the specialist is on-demand, skip only the cron/project confirmation; still
|
|
242
|
+
confirm scheduled task permissions because Step 8 schedules background
|
|
243
|
+
knowledge enrichment.
|
|
244
|
+
|
|
245
|
+
---
|
|
246
|
+
|
|
247
|
+
## Step 6 — Generation gate
|
|
248
|
+
|
|
249
|
+
**Critical: execute steps 6a → 6i in a single response.** No stopping mid-flow,
|
|
250
|
+
no asking permission to continue, no splitting across messages. Do **not** run
|
|
251
|
+
research in Step 6. Step 6 creates a useful, runnable agent from the user's
|
|
252
|
+
inputs and strong role defaults.
|
|
253
|
+
|
|
254
|
+
### 6a — Scaffold the portable agent dir
|
|
255
|
+
|
|
256
|
+
Use the active Academy agents root for every command and path in this step:
|
|
257
|
+
|
|
258
|
+
```bash
|
|
259
|
+
AGENTS_ROOT="${AGENTS_ROOT:-$HOME/.academy/agents}"
|
|
260
|
+
mkdir -p "$(dirname "$AGENTS_ROOT")"
|
|
261
|
+
```
|
|
262
|
+
|
|
263
|
+
Host applications may set `AGENTS_ROOT` so the hire remains in the current
|
|
264
|
+
conversation while creating the new agent under a product-specific agents root.
|
|
265
|
+
Do not replace the active root with a hard-coded home-directory path.
|
|
266
|
+
|
|
267
|
+
```bash
|
|
268
|
+
AGENTS_ROOT="$AGENTS_ROOT" academy create {slug}
|
|
269
|
+
```
|
|
270
|
+
|
|
271
|
+
This creates `${AGENTS_ROOT}/{slug}/` with:
|
|
272
|
+
|
|
273
|
+
- 8 boot surface markdown files (placeholder content)
|
|
274
|
+
- `agent.yaml` (name, created date, empty role + objective)
|
|
275
|
+
- `CLAUDE.md` (user instructions channel)
|
|
276
|
+
- `.claude/skills/` (universal Academy skills: `check-in`, `self-update`;
|
|
277
|
+
6f may add one scheduled-work skill)
|
|
278
|
+
- `.claude/settings.local.json` (permissions)
|
|
279
|
+
- `.claude-plugin/` symlink (loads the 8 SessionStart hooks)
|
|
280
|
+
|
|
281
|
+
### 6b — Establish provisional-first status
|
|
282
|
+
|
|
283
|
+
Treat the scaffold as an immediately usable agent, not a placeholder waiting
|
|
284
|
+
for research. The first pass should be honest about what is known:
|
|
285
|
+
|
|
286
|
+
- Use only the user's answers, concrete source material they supplied, and
|
|
287
|
+
strong archetype defaults.
|
|
288
|
+
- Mark `knowledge.md` as a starter knowledge base with background enrichment
|
|
289
|
+
pending.
|
|
290
|
+
- Add one active thread for the background knowledge enrichment job so the
|
|
291
|
+
agent can see that deeper research is already underway.
|
|
292
|
+
- Do not mention email setup or provisioning. Academy does not configure email
|
|
293
|
+
during hire; agents can use Helm email through the existing `helm-email`
|
|
294
|
+
capability when a task calls for human email.
|
|
295
|
+
|
|
296
|
+
### 6c — Write `identity.md`
|
|
297
|
+
|
|
298
|
+
Cap: ~400 tokens. Sections:
|
|
299
|
+
|
|
300
|
+
```markdown
|
|
301
|
+
# Identity
|
|
302
|
+
|
|
303
|
+
You are {Name}.
|
|
304
|
+
|
|
305
|
+
## Mission
|
|
306
|
+
{One sentence. The north star end state — not a job title. "Make Acme's growth loops legible enough that the team can place real bets" beats "Lead growth analytics."}
|
|
307
|
+
|
|
308
|
+
## Principles
|
|
309
|
+
{3–5 **opinionated** beliefs. Each must be defensible as a position someone competent might disagree with. If it's universally agreed, it's a platitude, not a principle. Format: **[Name].** [The opinion]. [Why, in one sentence].}
|
|
310
|
+
|
|
311
|
+
## Background
|
|
312
|
+
{2–3 sentence narrative — companies, what shaped their thinking, what they're known for. Concrete, not generic.}
|
|
313
|
+
|
|
314
|
+
## Voice
|
|
315
|
+
{2–3 short bullets on how this agent talks: direct vs. nuanced, data-heavy vs. narrative, formal vs. casual.}
|
|
316
|
+
|
|
317
|
+
---
|
|
318
|
+
_Hired: {YYYY-MM-DD}._
|
|
319
|
+
```
|
|
320
|
+
|
|
321
|
+
Principles is the section to hold the line on — write 3–5 real opinions or
|
|
322
|
+
none at all. Don't pad. Use the user's requested background and your best
|
|
323
|
+
role archetype judgment; background research can refine later, but the agent
|
|
324
|
+
must have a credible identity now. (The old "Working philosophy" section is
|
|
325
|
+
replaced by Principles, which sets a higher bar.)
|
|
326
|
+
|
|
327
|
+
### 6d — Write `role.md`
|
|
328
|
+
|
|
329
|
+
Cap: ~600 tokens. Sections:
|
|
330
|
+
|
|
331
|
+
```markdown
|
|
332
|
+
# Role
|
|
333
|
+
|
|
334
|
+
**Title:** {Role title from hire sheet}
|
|
335
|
+
**Hired by:** {User's name if known, else "the user"}
|
|
336
|
+
**Specialist shape:** {The chosen specialist hypothesis}
|
|
337
|
+
|
|
338
|
+
## Objective
|
|
339
|
+
{Direct one-sentence statement of what this agent is hired to deliver. (Concrete output — contrast with Mission in identity.md, which is the north star.)}
|
|
340
|
+
|
|
341
|
+
## Responsibilities
|
|
342
|
+
- {Responsibility 1}
|
|
343
|
+
- {Responsibility 2}
|
|
344
|
+
- {Responsibility 3}
|
|
345
|
+
- _(3–5 total)_
|
|
346
|
+
|
|
347
|
+
## The loop
|
|
348
|
+
{Operating cadence — phases in order, with trigger and output of each. If not cyclical, replace with "Operating mode." Include on-demand, future task, or recurring schedule behavior from Step 4.}
|
|
349
|
+
|
|
350
|
+
## Guardrails
|
|
351
|
+
{What this agent will not do, even if asked. Red lines. Stop-and-escalate triggers.}
|
|
352
|
+
|
|
353
|
+
## Autonomy levels
|
|
354
|
+
- **Ship autonomously:** {reversible, scoped actions}
|
|
355
|
+
- **Propose for human review:** {meaningful blast radius}
|
|
356
|
+
- **Pause and surface:** {ambiguity or values conflicts}
|
|
357
|
+
|
|
358
|
+
## Deliverables
|
|
359
|
+
{Named artifacts produced and maintained, with update cadence. Format, who it's for.}
|
|
360
|
+
|
|
361
|
+
## Capability stack
|
|
362
|
+
{Known tools, installed/recommended skills, likely future MCP servers, and what each capability is for. If no external skill was added at hire time, say so plainly.}
|
|
363
|
+
|
|
364
|
+
## Quality bar
|
|
365
|
+
{What "good" looks like. Reference-class comparisons where possible.}
|
|
366
|
+
|
|
367
|
+
## Anti-patterns
|
|
368
|
+
{Specific failure modes this agent should recognize in itself and reject. Use the user's concerns and role-archetype defaults; background research can refine later.}
|
|
369
|
+
|
|
370
|
+
## Definition of done
|
|
371
|
+
{What signals completion of a unit of work.}
|
|
372
|
+
|
|
373
|
+
## Cadence
|
|
374
|
+
{On-demand, one-off future task, recurring schedule, or mixed mode. Include exact schedule if configured.}
|
|
375
|
+
|
|
376
|
+
## Data sources
|
|
377
|
+
{Listed URLs/APIs/files, or "Discovers over time."}
|
|
378
|
+
|
|
379
|
+
---
|
|
380
|
+
_Set: {YYYY-MM-DD}._
|
|
381
|
+
```
|
|
382
|
+
|
|
383
|
+
### 6e — Write `knowledge.md`
|
|
384
|
+
|
|
385
|
+
Starter cap: ~500–900 tokens. Enriched cap: ~1500–2500 tokens after the
|
|
386
|
+
background job completes. **Structure: 8 fixed sections.** Each section
|
|
387
|
+
contains dated bullet entries — mental models, frameworks, patterns, or
|
|
388
|
+
references with one line of "why it matters here."
|
|
389
|
+
|
|
390
|
+
Do **not** wait for research before writing this file. Pull from the hire
|
|
391
|
+
sheet, any user-provided sources, and role archetype knowledge. If a section
|
|
392
|
+
has nothing useful at hire time, write a one-line placeholder and let the
|
|
393
|
+
background enrichment job fill it.
|
|
394
|
+
|
|
395
|
+
```markdown
|
|
396
|
+
# Knowledge
|
|
397
|
+
|
|
398
|
+
_(What you know — domain expertise, mental models, frameworks, patterns.)_
|
|
399
|
+
|
|
400
|
+
## Domain map
|
|
401
|
+
{Brief landscape of the work. Sub-specialties, schools of thought. 2–4 dated starter bullets from the hire sheet, user-provided sources, and role archetype defaults.}
|
|
402
|
+
|
|
403
|
+
## Best practices
|
|
404
|
+
{Concrete, opinionated practices from the interview and role archetype defaults. Each cites why it matters and when it applies.}
|
|
405
|
+
|
|
406
|
+
## Common failure modes
|
|
407
|
+
{2–4 specific ways this work goes wrong, with diagnostic signals for each. Use the user's concerns and strong role defaults.}
|
|
408
|
+
|
|
409
|
+
## Decision heuristics
|
|
410
|
+
{"When X, prefer Y because Z." Starter practitioner shortcuts that compress experience.}
|
|
411
|
+
|
|
412
|
+
## Tools & frameworks
|
|
413
|
+
{What to reach for, when, and why. Include known user-provided tools first; mark unknowns for enrichment.}
|
|
414
|
+
|
|
415
|
+
## Reference material
|
|
416
|
+
{Links, docs, exemplars, prior art the agent should treat as canonical. Curated, not exhaustive.}
|
|
417
|
+
|
|
418
|
+
## Contested territory
|
|
419
|
+
{Where thoughtful practitioners may disagree. Note the user's stated position from the interview, if given; otherwise mark for enrichment.}
|
|
420
|
+
|
|
421
|
+
## Open questions
|
|
422
|
+
{Things the agent should investigate further once operational. Seeds for skill spawning and memory.}
|
|
423
|
+
|
|
424
|
+
## Enrichment status
|
|
425
|
+
{One dated bullet stating that background knowledge-base enrichment is underway and will update this file automatically when complete.}
|
|
426
|
+
```
|
|
427
|
+
|
|
428
|
+
Each entry: ~50–150 tokens, dated `(YYYY-MM-DD)` so future curation can age
|
|
429
|
+
out stale items. If a single entry pushes 250 tokens, split or tighten it;
|
|
430
|
+
don't create speculative skills during hire.
|
|
431
|
+
|
|
432
|
+
### 6f — Optional scheduled-work skill
|
|
433
|
+
|
|
434
|
+
Skip this step unless the hire includes a recurring responsibility with a
|
|
435
|
+
procedure more specific than "run today's work session."
|
|
436
|
+
|
|
437
|
+
Do **not** generate generic competency skills during hire. Do **not** create
|
|
438
|
+
per-agent copies of universal Academy skills such as `check-in` or
|
|
439
|
+
`self-update`; those belong to the Academy runtime and are shared by every
|
|
440
|
+
agent.
|
|
441
|
+
|
|
442
|
+
If a recurring responsibility needs its own procedure, write exactly one
|
|
443
|
+
task-specific skill at
|
|
444
|
+
`${AGENTS_ROOT}/{slug}/.claude/skills/<skill-name>/SKILL.md`.
|
|
445
|
+
|
|
446
|
+
Use this frontmatter and structure:
|
|
447
|
+
|
|
448
|
+
```markdown
|
|
449
|
+
---
|
|
450
|
+
name: {skill-name}
|
|
451
|
+
description: {one-line, action-oriented — when should this skill load?}
|
|
452
|
+
---
|
|
453
|
+
|
|
454
|
+
# {Skill Title}
|
|
455
|
+
|
|
456
|
+
{Short paragraph on the recurring task's purpose.}
|
|
457
|
+
|
|
458
|
+
## When to use
|
|
459
|
+
- {trigger 1}
|
|
460
|
+
- {trigger 2}
|
|
461
|
+
|
|
462
|
+
## Procedure
|
|
463
|
+
1. {step}
|
|
464
|
+
2. {step}
|
|
465
|
+
3. {step}
|
|
466
|
+
|
|
467
|
+
## Output shape
|
|
468
|
+
{What the deliverable looks like.}
|
|
469
|
+
```
|
|
470
|
+
|
|
471
|
+
Granularity: **one scheduled job = one skill** (`weekly-analytics-review`,
|
|
472
|
+
not `analytics`). The skill should describe the scheduled work's sources,
|
|
473
|
+
steps, deliverable, quality bar, and escalation triggers. If the scheduled
|
|
474
|
+
work is simple enough to fit in the Helm prompt, skip the skill and use the
|
|
475
|
+
prompt in 6i.
|
|
476
|
+
|
|
477
|
+
### 6g — Write `goals.md` and `priorities.md`
|
|
478
|
+
|
|
479
|
+
`goals.md` — hard cap of 3, distilled from the hire sheet objective.
|
|
480
|
+
|
|
481
|
+
```markdown
|
|
482
|
+
# Goals
|
|
483
|
+
|
|
484
|
+
1. {Strategic objective 1 — quarterly horizon, evaluable}
|
|
485
|
+
2. {Strategic objective 2}
|
|
486
|
+
3. {Strategic objective 3}
|
|
487
|
+
|
|
488
|
+
---
|
|
489
|
+
_Set: {YYYY-MM-DD}. Re-affirm every 14 days._
|
|
490
|
+
```
|
|
491
|
+
|
|
492
|
+
`priorities.md` — 3–5 weekly priorities derived from the first assignment
|
|
493
|
+
+ responsibilities.
|
|
494
|
+
|
|
495
|
+
```markdown
|
|
496
|
+
# Priorities
|
|
497
|
+
|
|
498
|
+
- {Priority 1, derived from first assignment}
|
|
499
|
+
- {Priority 2}
|
|
500
|
+
- {Priority 3}
|
|
501
|
+
|
|
502
|
+
---
|
|
503
|
+
_Updated: {YYYY-MM-DD}._
|
|
504
|
+
```
|
|
505
|
+
|
|
506
|
+
Update `threads.md` with one active onboarding thread:
|
|
507
|
+
|
|
508
|
+
```markdown
|
|
509
|
+
## Active
|
|
510
|
+
|
|
511
|
+
- **Knowledge-base enrichment** — `active`
|
|
512
|
+
- `created`: {YYYY-MM-DD}
|
|
513
|
+
- `last_touched`: {YYYY-MM-DD}
|
|
514
|
+
- `next`: Background research will deepen `knowledge.md` after the agent is already usable.
|
|
515
|
+
- `done_when`: `knowledge.md` has domain map, failure modes, tools, heuristics, references, contested territory, and open questions updated from research.
|
|
516
|
+
```
|
|
517
|
+
|
|
518
|
+
Leave `notes.md` and `dailys.md` as scaffolded by `academy create` except for
|
|
519
|
+
the hiring memo in Step 7.
|
|
520
|
+
|
|
521
|
+
### 6h — Update `agent.yaml`
|
|
522
|
+
|
|
523
|
+
Edit `${AGENTS_ROOT}/{slug}/agent.yaml`. Replace the empty `role:` and
|
|
524
|
+
`objective:` strings with the actual values. Leave the surface list alone.
|
|
525
|
+
|
|
526
|
+
### 6i — Register Helm work sessions (only if Step 4 selected future or recurring work)
|
|
527
|
+
|
|
528
|
+
For a one-off future first assignment, schedule a single Helm task:
|
|
529
|
+
|
|
530
|
+
```bash
|
|
531
|
+
helm-tasks schedule \
|
|
532
|
+
--cwd "${AGENTS_ROOT}/{slug}" \
|
|
533
|
+
--id {slug}-first-assignment \
|
|
534
|
+
--at "{absolute time from Step 5}" \
|
|
535
|
+
--process-cwd "{project path from Step 5, if any}" \
|
|
536
|
+
--command academy --replace \
|
|
537
|
+
--retry-max 2 --retry-backoff exponential --retry-delay-sec 120 \
|
|
538
|
+
-- run {slug} -- {scheduled permission args} -p "{first assignment prompt}"
|
|
539
|
+
```
|
|
540
|
+
|
|
541
|
+
Use `--in "{duration}"` instead of `--at` only when the user gave a relative
|
|
542
|
+
time like "in 30 minutes." Keep the prompt short and role-specific.
|
|
543
|
+
|
|
544
|
+
For recurring work, register the recurring work session:
|
|
545
|
+
|
|
546
|
+
```bash
|
|
547
|
+
helm-tasks schedule \
|
|
548
|
+
--cwd "${AGENTS_ROOT}/{slug}" \
|
|
549
|
+
--id {slug}-work-session \
|
|
550
|
+
--cron "{cron from Step 5}" \
|
|
551
|
+
--process-cwd "{project path from Step 5}" \
|
|
552
|
+
--command academy --replace \
|
|
553
|
+
--retry-max 2 --retry-backoff exponential --retry-delay-sec 120 \
|
|
554
|
+
-- run {slug} -- {scheduled permission args} -p "Run today's work session."
|
|
555
|
+
```
|
|
556
|
+
|
|
557
|
+
If 6f created a task-specific skill, make the prompt name the scheduled
|
|
558
|
+
responsibility and tell the agent to use that skill. If no skill was
|
|
559
|
+
created, keep the prompt short and role-specific.
|
|
560
|
+
|
|
561
|
+
If on-demand, skip work-session scheduling — the user invokes manually with
|
|
562
|
+
`academy run {slug}`.
|
|
563
|
+
|
|
564
|
+
---
|
|
565
|
+
|
|
566
|
+
## Step 7 — Hiring memo + completion report draft
|
|
567
|
+
|
|
568
|
+
Prepare the completion report now, but present it after Step 8 schedules
|
|
569
|
+
background enrichment so the final note can truthfully say the research phase
|
|
570
|
+
has started. The user should leave the hire flow knowing the agent exists and
|
|
571
|
+
can be used immediately, even though deeper research may take 10–15 minutes.
|
|
572
|
+
|
|
573
|
+
First, write a **hiring memo** — 3–5 sentences capturing what you learned
|
|
574
|
+
during the interview that shaped the result. Surprises, the user's
|
|
575
|
+
distinctive opinions, and calls you made on their behalf. This is what
|
|
576
|
+
future-{Name} (or the next person reading the hire) needs to know about
|
|
577
|
+
*why* they look the way they do.
|
|
578
|
+
|
|
579
|
+
Seed the memo into the top of `${AGENTS_ROOT}/{slug}/notes.md` as a
|
|
580
|
+
dated entry titled `## Hiring memo — {YYYY-MM-DD}`. `notes.md` is the
|
|
581
|
+
right home: it's already scaffolded, it's a staging area meant for
|
|
582
|
+
curation, and the memo is exactly the kind of context that may graduate
|
|
583
|
+
into `knowledge.md` over time.
|
|
584
|
+
|
|
585
|
+
Then draft the hire summary as the agent showing up for work, not a config
|
|
586
|
+
dump. Do not describe research as complete:
|
|
587
|
+
|
|
588
|
+
> **{Name} is hired and ready.**
|
|
589
|
+
>
|
|
590
|
+
> **Who they are:** {1–2 sentence persona summary — what makes their take distinctive.}
|
|
591
|
+
>
|
|
592
|
+
> **What they do:** {1 sentence restating objective in plain language.}
|
|
593
|
+
>
|
|
594
|
+
> **What I learned hiring them:** {The hiring memo, condensed to 1–2 sentences.}
|
|
595
|
+
>
|
|
596
|
+
> **Knowledge base:** Starter knowledge written. Background enrichment is underway; `{agent_dir}/knowledge.md` will be enriched automatically when it finishes.
|
|
597
|
+
>
|
|
598
|
+
> **Capabilities:** {External skills installed or recommended, plus task-specific skill name if one was created. If none, "No external skill added at hire time."}
|
|
599
|
+
>
|
|
600
|
+
> **Operating mode:** {On-demand, one-off future task, recurring schedule, or mixed mode. Include first run if scheduled.}
|
|
601
|
+
>
|
|
602
|
+
> **Meet your agent:**
|
|
603
|
+
> ```bash
|
|
604
|
+
> academy run {slug}
|
|
605
|
+
> ```
|
|
606
|
+
>
|
|
607
|
+
> **Research phase:** I've started background research now. It will build
|
|
608
|
+
> {Name}'s knowledge base around {specific domains, reference companies,
|
|
609
|
+
> best practices, failure modes, tools/frameworks, contested territory, and
|
|
610
|
+
> open questions from the hire}. You can use {Name} immediately; the deeper
|
|
611
|
+
> knowledge update usually takes 10–15 minutes.
|
|
612
|
+
|
|
613
|
+
Do not show this report yet. Proceed immediately to Step 8, schedule the
|
|
614
|
+
background enrichment task, then show this completion report with the research
|
|
615
|
+
phase status updated to reflect whether scheduling succeeded or failed. Do not
|
|
616
|
+
wait for research to complete before saying the agent is ready.
|
|
617
|
+
|
|
618
|
+
---
|
|
619
|
+
|
|
620
|
+
## Step 8 — Start background knowledge enrichment
|
|
621
|
+
|
|
622
|
+
Kick off knowledge enrichment after drafting the completion report. Prefer a
|
|
623
|
+
one-off Helm task so the hire flow does not block on research:
|
|
624
|
+
|
|
625
|
+
```bash
|
|
626
|
+
helm-tasks schedule \
|
|
627
|
+
--cwd "${AGENTS_ROOT}/{slug}" \
|
|
628
|
+
--id {slug}-knowledge-enrichment \
|
|
629
|
+
--in 1m \
|
|
630
|
+
--command academy --replace \
|
|
631
|
+
--retry-max 2 --retry-backoff exponential --retry-delay-sec 120 \
|
|
632
|
+
-- run {slug} -- {scheduled permission args} -p "Enrich knowledge.md for this newly hired agent. Research the role's domain map, best practices, common failure modes, decision heuristics, tools/frameworks, reference material, contested territory, and open questions. Update only knowledge.md and the knowledge-base enrichment thread in threads.md. Preserve the user's specific hiring instructions over generic web guidance. When complete, mark the thread done."
|
|
633
|
+
```
|
|
634
|
+
|
|
635
|
+
If Step 5 included a project working directory, add `--process-cwd "{project path
|
|
636
|
+
from Step 5}"` so research can inspect the target project context. If Helm is
|
|
637
|
+
unavailable or scheduling fails, leave the agent ready, report the warning, and
|
|
638
|
+
include the exact command the user can rerun. Do not ask the user to configure
|
|
639
|
+
email; Helm email is already the platform capability agents use when email is
|
|
640
|
+
needed.
|
|
641
|
+
|
|
642
|
+
After the schedule command succeeds or fails, present the Step 7 completion
|
|
643
|
+
report. If scheduling succeeded, the final research phase line should say the
|
|
644
|
+
research phase has started and name the exact knowledge areas it will deepen.
|
|
645
|
+
If scheduling failed, say the specialist is still ready now, explain that
|
|
646
|
+
knowledge enrichment did not start automatically, and include the rerun command.
|
|
647
|
+
|
|
648
|
+
---
|
|
649
|
+
|
|
650
|
+
## Phase 0 constraints (read this before starting)
|
|
651
|
+
|
|
652
|
+
- **No adapters, no glue.** Hire may create one task-specific scheduled-work
|
|
653
|
+
skill when the recurring job needs a procedure. Universal platform skills
|
|
654
|
+
and internal tool skills belong to Academy and Helm, not to each
|
|
655
|
+
individual hire.
|
|
656
|
+
- **No email setup.** Do not ask for user email, AgentMail keys, inbox
|
|
657
|
+
provisioning, or Academy-specific email configuration. Agents use Helm email through
|
|
658
|
+
`helm-email` when a task explicitly needs human email.
|
|
659
|
+
- **Boot budget: ~5–6k tokens.** Measure as you go. If `knowledge.md` starts
|
|
660
|
+
pushing 3k tokens alone, consolidate it. Defer skill extraction until a
|
|
661
|
+
real recurring procedure exists, unless 6f applies.
|
|
662
|
+
- **No watcher hooks, no manifest, no chunking.** The 8 hooks load 8 files
|
|
663
|
+
via `inject_surface.py`. That's it.
|
|
664
|
+
- **No `profile/intelligence.md`, no `experiments.md`, no `changelog.md`.**
|
|
665
|
+
Those are v1/v2. Removed in v3 (scope §12).
|
|
666
|
+
- **Manual curation is acceptable.** Notes graduation, knowledge curation,
|
|
667
|
+
skill spawning all defer to Phases 3–4.
|
|
668
|
+
|
|
669
|
+
Begin Step 0 immediately upon invocation.
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: knowledge-curator
|
|
3
|
+
description: Curate evidence-backed Academy notes into durable knowledge during nightly consolidation. Use only when the nightly-consolidation skill explicitly delegates this phase.
|
|
4
|
+
tools: Read, Grep, Glob, Edit
|
|
5
|
+
skills:
|
|
6
|
+
- knowledge-curation
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
The full `knowledge-curation` skill is preloaded into your context. Before
|
|
10
|
+
editing, also read and confirm the rendered contract at
|
|
11
|
+
`{{knowledge_curation_path}}`. Own that bounded knowledge-graduation phase,
|
|
12
|
+
work in the foreground, and return its required application manifest. Edit
|
|
13
|
+
only `knowledge.md` and `notes.md`; never edit any other Academy surface or
|
|
14
|
+
skill.
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
name = "knowledge_curator"
|
|
2
|
+
description = "Curate evidence-backed Academy notes into durable knowledge during nightly consolidation."
|
|
3
|
+
developer_instructions = """
|
|
4
|
+
Before acting, read `{{knowledge_curation_path}}` completely and
|
|
5
|
+
follow its gates, edit order, limits, and manifest contract. Work only when the
|
|
6
|
+
nightly-consolidation parent delegates the knowledge-graduation phase. Edit
|
|
7
|
+
knowledge.md and notes.md only. Never edit another Academy surface or skill.
|
|
8
|
+
Return the required application manifest when finished.
|
|
9
|
+
"""
|