@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.
Files changed (53) hide show
  1. package/.claude-plugin/marketplace.json +14 -0
  2. package/.claude-plugin/plugin.json +6 -0
  3. package/CHANGELOG.md +46 -0
  4. package/LICENSE +21 -0
  5. package/README.md +209 -0
  6. package/bin/academy +2 -0
  7. package/conformance/README.md +60 -0
  8. package/conformance/discovery.test.mjs +140 -0
  9. package/conformance/envelope.test.mjs +185 -0
  10. package/conformance/error-codes.test.mjs +125 -0
  11. package/conformance/harness.mjs +180 -0
  12. package/conformance/identity.test.mjs +125 -0
  13. package/docs/integration-guide.md +1026 -0
  14. package/hooks/hook_runtime.mjs +100 -0
  15. package/hooks/hooks.json +26 -0
  16. package/hooks/inject_surface.py +122 -0
  17. package/hooks/memory_bridge.mjs +120 -0
  18. package/hooks/memory_store.mjs +66 -0
  19. package/hooks/register_session.mjs +51 -0
  20. package/hooks/sync_memory.mjs +27 -0
  21. package/package.json +41 -0
  22. package/scripts/agent.mjs +3 -0
  23. package/scripts/cli/archive.mjs +161 -0
  24. package/scripts/cli/archived.mjs +82 -0
  25. package/scripts/cli/args.mjs +282 -0
  26. package/scripts/cli/codex.mjs +216 -0
  27. package/scripts/cli/core.mjs +389 -0
  28. package/scripts/cli/create.mjs +242 -0
  29. package/scripts/cli/doctor.mjs +203 -0
  30. package/scripts/cli/eventlog.mjs +129 -0
  31. package/scripts/cli/events.mjs +80 -0
  32. package/scripts/cli/hire-headless.mjs +229 -0
  33. package/scripts/cli/hire-spec.mjs +164 -0
  34. package/scripts/cli/hire.mjs +92 -0
  35. package/scripts/cli/inspect.mjs +286 -0
  36. package/scripts/cli/lifecycle.mjs +296 -0
  37. package/scripts/cli/main.mjs +102 -0
  38. package/scripts/cli/migrate.mjs +183 -0
  39. package/scripts/cli/notes.mjs +104 -0
  40. package/scripts/cli/rename.mjs +172 -0
  41. package/scripts/cli/run.mjs +227 -0
  42. package/scripts/cli/runtime.mjs +47 -0
  43. package/scripts/cli/scaffold.mjs +332 -0
  44. package/scripts/cli/sessions.mjs +98 -0
  45. package/scripts/cli/templates.mjs +104 -0
  46. package/scripts/cli/yaml.mjs +124 -0
  47. package/skills/hire/SKILL.md +669 -0
  48. package/templates/agents/claude-code/knowledge-curator.md +14 -0
  49. package/templates/agents/codex/knowledge-curator.toml +9 -0
  50. package/templates/skills/check-in/SKILL.md +122 -0
  51. package/templates/skills/knowledge-curation/SKILL.md +132 -0
  52. package/templates/skills/nightly-consolidation/SKILL.md +240 -0
  53. 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
+ """