@awebai/oats 0.29.4 → 0.30.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 (263) hide show
  1. package/README.md +12 -6
  2. package/bin/oats.mjs +194 -50
  3. package/docs/capabilities.md +160 -171
  4. package/docs/capability-manifest.schema.json +6 -11
  5. package/docs/configuration.md +213 -64
  6. package/docs/design/2026-09-16-knowledge-capability-contract.md +36 -50
  7. package/docs/design/2026-09-23-workspace-module-contracts.md +377 -544
  8. package/docs/design/2026-09-26-okf-knowledge-operations.md +132 -357
  9. package/docs/design/2026-09-27-team-model-v2.md +97 -117
  10. package/docs/design/2026-09-28-automations-trust.md +38 -0
  11. package/docs/design/2026-09-28-soul-launch-preference.md +63 -0
  12. package/docs/design/HISTORY.md +65 -0
  13. package/docs/design/README.md +23 -54
  14. package/docs/desktop-cli-api.md +1787 -1777
  15. package/docs/desktop.md +30 -91
  16. package/docs/execution-targets.md +146 -292
  17. package/docs/first-team.md +31 -17
  18. package/docs/implementation.md +77 -288
  19. package/docs/integrations.md +118 -320
  20. package/docs/knowledge-capability-authoring.md +25 -52
  21. package/docs/knowledge-reference/acceptance.md +3 -3
  22. package/docs/knowledge-reference/adoption.md +1 -1
  23. package/docs/knowledge-reference/harvester.md +2 -2
  24. package/docs/knowledge-reference/package-craft.md +3 -3
  25. package/docs/knowledge-reference/provider-mapping.md +3 -6
  26. package/docs/knowledge-reference/reader-capture.md +3 -3
  27. package/docs/knowledge-theory.md +62 -166
  28. package/docs/knowledge.md +225 -404
  29. package/docs/layers.md +42 -97
  30. package/docs/oats-local.schema.json +58 -5
  31. package/docs/oats-membership.schema.json +1 -8
  32. package/docs/oats-package.schema.json +5 -5
  33. package/docs/oats-workspace.schema.json +8 -22
  34. package/docs/official-catalog.md +25 -28
  35. package/docs/packages.md +45 -63
  36. package/docs/plans/0.30-close-out.md +83 -0
  37. package/docs/release-lane.md +82 -0
  38. package/docs/release-notes/oats-framework-v1.1.3.md +10 -8
  39. package/docs/release-notes/v0.19.0.md +48 -147
  40. package/docs/release-notes/v0.19.1.md +2 -3
  41. package/docs/release-notes/v0.19.3.md +2 -15
  42. package/docs/release-notes/v0.20.0.md +0 -15
  43. package/docs/release-notes/v0.22.0.md +71 -138
  44. package/docs/release-notes/v0.22.1.md +42 -90
  45. package/docs/release-notes/v0.22.10.md +1 -1
  46. package/docs/release-notes/v0.22.11.md +1 -47
  47. package/docs/release-notes/v0.22.12.md +4 -13
  48. package/docs/release-notes/v0.22.13.md +1 -42
  49. package/docs/release-notes/v0.22.14.md +3 -11
  50. package/docs/release-notes/v0.22.15.md +1 -46
  51. package/docs/release-notes/v0.22.16.md +6 -8
  52. package/docs/release-notes/v0.22.18.md +1 -99
  53. package/docs/release-notes/v0.22.19.md +3 -14
  54. package/docs/release-notes/v0.22.2.md +6 -15
  55. package/docs/release-notes/v0.22.3.md +0 -1
  56. package/docs/release-notes/v0.22.4.md +1 -14
  57. package/docs/release-notes/v0.22.5.md +2 -12
  58. package/docs/release-notes/v0.22.6.md +0 -3
  59. package/docs/release-notes/v0.23.0.md +9 -25
  60. package/docs/release-notes/v0.23.1.md +9 -25
  61. package/docs/release-notes/v0.23.2.md +2 -4
  62. package/docs/release-notes/v0.24.0.md +56 -97
  63. package/docs/release-notes/v0.24.1.md +7 -11
  64. package/docs/release-notes/v0.24.10.md +34 -45
  65. package/docs/release-notes/v0.24.11.md +12 -20
  66. package/docs/release-notes/v0.24.12.md +35 -48
  67. package/docs/release-notes/v0.24.13.md +34 -41
  68. package/docs/release-notes/v0.24.2.md +9 -13
  69. package/docs/release-notes/v0.24.3.md +7 -11
  70. package/docs/release-notes/v0.24.4.md +6 -6
  71. package/docs/release-notes/v0.24.5.md +6 -10
  72. package/docs/release-notes/v0.24.6.md +2 -5
  73. package/docs/release-notes/v0.24.7.md +46 -75
  74. package/docs/release-notes/v0.24.8.md +58 -96
  75. package/docs/release-notes/v0.24.9.md +38 -54
  76. package/docs/release-notes/v0.25.0.md +59 -76
  77. package/docs/release-notes/v0.25.1.md +57 -81
  78. package/docs/release-notes/v0.25.2.md +51 -70
  79. package/docs/release-notes/v0.25.3.md +11 -13
  80. package/docs/release-notes/v0.25.4.md +9 -13
  81. package/docs/release-notes/v0.25.5.md +3 -5
  82. package/docs/release-notes/v0.25.6.md +20 -29
  83. package/docs/release-notes/v0.25.7.md +5 -7
  84. package/docs/release-notes/v0.25.8.md +26 -39
  85. package/docs/release-notes/v0.26.0.md +175 -646
  86. package/docs/release-notes/v0.27.0.md +4 -5
  87. package/docs/release-notes/v0.27.1.md +4 -6
  88. package/docs/release-notes/v0.27.2.md +1 -1
  89. package/docs/release-notes/v0.28.0.md +57 -124
  90. package/docs/release-notes/v0.29.0.md +89 -208
  91. package/docs/release-notes/v0.29.1.md +1 -1
  92. package/docs/release-notes/v0.29.2.md +3 -4
  93. package/docs/release-notes/v0.30.0.md +205 -0
  94. package/docs/release-notes/v0.30.1.md +123 -0
  95. package/docs/schedules.md +280 -363
  96. package/docs/servers.md +99 -117
  97. package/docs/soul.schema.json +2 -9
  98. package/docs/souls-and-instances.md +145 -158
  99. package/docs/workspaces.md +137 -215
  100. package/lib/automations.mjs +21 -6
  101. package/lib/core.mjs +226 -74
  102. package/lib/instance-events.mjs +1 -1
  103. package/lib/instance-inspect.mjs +109 -34
  104. package/lib/instance-lifecycle.mjs +14 -1
  105. package/lib/instance-resolution.mjs +26 -27
  106. package/lib/launch-preference.mjs +87 -0
  107. package/lib/materialize.mjs +3 -3
  108. package/lib/packages.mjs +1 -1
  109. package/lib/resolve.mjs +30 -88
  110. package/lib/schedule.mjs +1 -1
  111. package/lib/teams-verbs.mjs +195 -0
  112. package/lib/teams.mjs +190 -0
  113. package/lib/triggers.mjs +2 -2
  114. package/lib/workspace.mjs +54 -147
  115. package/package-catalog.json +10 -16
  116. package/package.json +1 -3
  117. package/skills/oats-getting-started/SKILL.md +25 -13
  118. package/capabilities/oats-authoring/LICENSE +0 -21
  119. package/capabilities/oats-authoring/oats-package.json +0 -11
  120. package/capabilities/oats-authoring/oats.json +0 -12
  121. package/capabilities/oats-authoring/skills/integration-authoring/SKILL.md +0 -84
  122. package/capabilities/oats-authoring/skills/skill-craft/SKILL.md +0 -109
  123. package/capabilities/oats-authoring/skills/soul-craft/SKILL.md +0 -116
  124. package/capabilities/oats-aweb/bin/oats-aweb-binding.mjs +0 -11
  125. package/capabilities/oats-aweb/bin/oats-aweb.mjs +0 -1338
  126. package/capabilities/oats-aweb/injects/aweb.md +0 -47
  127. package/capabilities/oats-aweb/lib/binding-wire.mjs +0 -356
  128. package/capabilities/oats-aweb/lib/captured-execution.mjs +0 -91
  129. package/capabilities/oats-aweb/lib/captured-native.mjs +0 -91
  130. package/capabilities/oats-aweb/lib/grant-custody.mjs +0 -38
  131. package/capabilities/oats-aweb/lib/invocation-shape.mjs +0 -135
  132. package/capabilities/oats-aweb/lib/portable-binding.mjs +0 -146
  133. package/capabilities/oats-aweb/lib/session-readiness.mjs +0 -56
  134. package/capabilities/oats-aweb/lib/wake-receive.mjs +0 -56
  135. package/capabilities/oats-aweb/oats.json +0 -208
  136. package/capabilities/oats-aweb/skills/LICENSE +0 -21
  137. package/capabilities/oats-aweb/skills/VENDORED.md +0 -31
  138. package/capabilities/oats-aweb/skills/aweb-identity/SKILL.md +0 -201
  139. package/capabilities/oats-aweb/skills/aweb-messaging/SKILL.md +0 -161
  140. package/capabilities/oats-aweb/skills/aweb-messaging/references/messaging-scenarios.md +0 -61
  141. package/capabilities/oats-aweb/skills/aweb-team-membership/SKILL.md +0 -116
  142. package/capabilities/oats-aweb/skills/aweb-team-membership/references/team-membership-reference.md +0 -74
  143. package/capabilities/oats-aweb/skills/oats-aweb/SKILL.md +0 -216
  144. package/capabilities/oats-jira/bin/oats-jira.mjs +0 -40
  145. package/capabilities/oats-jira/injects/jira.md +0 -10
  146. package/capabilities/oats-jira/oats.json +0 -22
  147. package/capabilities/oats-jira/skills/jira-tasks/SKILL.md +0 -179
  148. package/capabilities/oats-linear/bin/oats-linear-hook.mjs +0 -34
  149. package/capabilities/oats-linear/bin/oats-linear.mjs +0 -344
  150. package/capabilities/oats-linear/injects/linear.md +0 -8
  151. package/capabilities/oats-linear/oats.json +0 -24
  152. package/capabilities/oats-linear/skills/linear-tasks/SKILL.md +0 -223
  153. package/capabilities/oats-okf/bin/oats-okf-binding.mjs +0 -14
  154. package/capabilities/oats-okf/bin/oats-okf.mjs +0 -209
  155. package/capabilities/oats-okf/injects/okf.md +0 -42
  156. package/capabilities/oats-okf/lib/binding-wire.mjs +0 -348
  157. package/capabilities/oats-okf/lib/captured-worker.mjs +0 -109
  158. package/capabilities/oats-okf/lib/config.mjs +0 -124
  159. package/capabilities/oats-okf/lib/consult.mjs +0 -518
  160. package/capabilities/oats-okf/lib/harvest-status.mjs +0 -88
  161. package/capabilities/oats-okf/lib/harvest-switch.mjs +0 -94
  162. package/capabilities/oats-okf/lib/inspection.mjs +0 -119
  163. package/capabilities/oats-okf/lib/invocation-context.mjs +0 -111
  164. package/capabilities/oats-okf/lib/invocation-shape.mjs +0 -135
  165. package/capabilities/oats-okf/lib/io.mjs +0 -118
  166. package/capabilities/oats-okf/lib/migration.mjs +0 -137
  167. package/capabilities/oats-okf/lib/okf-validate.mjs +0 -123
  168. package/capabilities/oats-okf/lib/portable-binding.mjs +0 -199
  169. package/capabilities/oats-okf/lib/source-contract.mjs +0 -46
  170. package/capabilities/oats-okf/lib/sources.mjs +0 -424
  171. package/capabilities/oats-okf/lib/stores.mjs +0 -473
  172. package/capabilities/oats-okf/lib/worker.mjs +0 -497
  173. package/capabilities/oats-okf/oats.json +0 -148
  174. package/capabilities/oats-okf/schemas/okf-base.schema.json +0 -46
  175. package/capabilities/oats-okf/schemas/okf-bindings.schema.json +0 -112
  176. package/capabilities/oats-okf/schemas/okf-portable-declaration.schema.json +0 -87
  177. package/capabilities/oats-okf/schemas/okf-portable-payload.schema.json +0 -113
  178. package/capabilities/oats-okf/schemas/okf-soul.schema.json +0 -37
  179. package/capabilities/oats-okf/skills/okf-consultation/SKILL.md +0 -144
  180. package/capabilities/oats-okf/skills/okf-consultation/references/consult.md +0 -86
  181. package/capabilities/oats-okf/skills/okf-instance-knowledge/SKILL.md +0 -104
  182. package/capabilities/oats-okf-harvest/bin/okf-harvest.mjs +0 -140
  183. package/capabilities/oats-okf-harvest/injects/harvester.md +0 -12
  184. package/capabilities/oats-okf-harvest/oats.json +0 -26
  185. package/capabilities/oats-okf-harvest/skills/knowledge-harvest/SKILL.md +0 -168
  186. package/capabilities/oats-okf-harvest/skills/knowledge-theory/SKILL.md +0 -192
  187. package/capabilities/oats-okf-harvest/skills/okf-authoring/SKILL.md +0 -151
  188. package/capabilities/oats-okf-harvest/skills/okf-authoring/scripts/okf-validate.mjs +0 -123
  189. package/capabilities/oats-okf-maintenance/bin/okf-maintenance.mjs +0 -170
  190. package/capabilities/oats-okf-maintenance/injects/maintainer.md +0 -12
  191. package/capabilities/oats-okf-maintenance/lib/provenance.mjs +0 -50
  192. package/capabilities/oats-okf-maintenance/oats.json +0 -21
  193. package/capabilities/oats-okf-maintenance/skills/knowledge-review/SKILL.md +0 -159
  194. package/capabilities/oats-okf-maintenance/skills/knowledge-theory/SKILL.md +0 -192
  195. package/capabilities/oats-okf-maintenance/skills/okf-authoring/SKILL.md +0 -151
  196. package/capabilities/oats-okf-maintenance/skills/okf-authoring/scripts/okf-validate.mjs +0 -123
  197. package/capabilities/oats-okf-maintenance/skills/okf-trigger-setup/SKILL.md +0 -146
  198. package/capabilities/oats-review/injects/review.md +0 -69
  199. package/capabilities/oats-review/oats.json +0 -10
  200. package/capabilities/oats-review/skills/code-review/SKILL.md +0 -44
  201. package/capabilities/oats-review/skills/security-review/SKILL.md +0 -59
  202. package/docs/conventions.md +0 -90
  203. package/docs/design/2026-09-07-architecture-reassessment.md +0 -131
  204. package/docs/design/2026-09-07-desktop-souls-capabilities.md +0 -50
  205. package/docs/design/2026-09-07-mobile-agent-management-proposal.md +0 -228
  206. package/docs/design/2026-09-08-expert-assisted-deployment-proposal.md +0 -558
  207. package/docs/design/2026-09-13-knowledge-and-memory-direction.md +0 -744
  208. package/docs/design/2026-09-13-knowledge-implementation.md +0 -127
  209. package/docs/design/2026-09-13-knowledge-location-contract.md +0 -340
  210. package/docs/design/2026-09-14-artifact-retention-contract.md +0 -190
  211. package/docs/design/2026-09-14-portable-souls-and-git-workspaces.md +0 -708
  212. package/docs/design/2026-09-14-portable-souls-contract-amendments.md +0 -85
  213. package/docs/design/2026-09-14-portable-souls-explainer.md +0 -750
  214. package/docs/design/2026-09-15-captured-dispatch.md +0 -127
  215. package/docs/design/2026-09-15-captured-resolution-records.md +0 -143
  216. package/docs/design/2026-09-15-package-preparation.md +0 -100
  217. package/docs/design/2026-09-15-portable-data-contract.md +0 -121
  218. package/docs/design/2026-09-15-portable-declarations.md +0 -189
  219. package/docs/design/2026-09-15-portable-souls-handoff.md +0 -150
  220. package/docs/design/2026-09-15-portable-souls-implementation.md +0 -417
  221. package/docs/design/2026-09-15-selection-lock-and-approval.md +0 -122
  222. package/docs/design/2026-09-15-source-observation.md +0 -119
  223. package/docs/design/2026-09-16-captured-admission.md +0 -77
  224. package/docs/design/2026-09-16-captured-helper-dispatch.md +0 -105
  225. package/docs/design/2026-09-16-captured-launch-inputs.md +0 -42
  226. package/docs/design/2026-09-16-command-profile-preparation.md +0 -86
  227. package/docs/design/2026-09-16-fresh-install-first-rollout.md +0 -47
  228. package/docs/design/2026-09-16-fresh-operator-walkthrough.md +0 -282
  229. package/docs/design/2026-09-16-messaging-capability-contract.md +0 -59
  230. package/docs/design/2026-09-16-portable-migration-evidence.md +0 -158
  231. package/docs/design/2026-09-16-portable-onboarding.md +0 -179
  232. package/docs/design/2026-09-16-prepare-request-transport.md +0 -26
  233. package/docs/design/2026-09-16-provider-binding-codecs.md +0 -98
  234. package/docs/design/2026-09-16-provider-binding-wire.md +0 -274
  235. package/docs/design/2026-09-17-capability-helper-input-contract.md +0 -95
  236. package/docs/design/2026-09-17-captured-backend-parity.md +0 -53
  237. package/docs/design/2026-09-17-captured-native-start.md +0 -58
  238. package/docs/design/2026-09-17-portable-boundary-hookup.md +0 -19
  239. package/docs/design/2026-09-17-portable-boundary-resources.md +0 -52
  240. package/docs/design/2026-09-17-public-captured-start.md +0 -108
  241. package/docs/design/2026-09-17-public-prepare-request.md +0 -90
  242. package/docs/design/2026-09-18-captured-pi-host.md +0 -205
  243. package/docs/design/2026-09-18-first-cut-release-checklist.md +0 -131
  244. package/docs/design/2026-09-18-herdr-protocol-compatibility.md +0 -60
  245. package/docs/design/2026-09-20-redesign-program-board.md +0 -142
  246. package/docs/design/2026-09-20-workspace-and-portable-adoption-plan.md +0 -289
  247. package/docs/design/2026-09-20-workspace-onboarding-public.md +0 -207
  248. package/docs/design/2026-09-22-desktop-parity-seams.md +0 -58
  249. package/docs/design/2026-09-23-simplified-workspace-model.md +0 -711
  250. package/docs/design/2026-09-23-workspace-v2-implementation-plan.md +0 -65
  251. package/docs/design/2026-09-24-desktop-phase-f-boundary.md +0 -242
  252. package/docs/design/2026-09-24-phase-d-plan.md +0 -305
  253. package/docs/design/2026-09-25-teams-contract.md +0 -258
  254. package/docs/design/2026-09-26-desktop-design-brief-architecture.md +0 -241
  255. package/docs/design/desktop-ux-plan.md +0 -362
  256. package/docs/design/launch-configurations.md +0 -168
  257. package/docs/design/okf-mirror-provenance.md +0 -105
  258. package/docs/design/operations-contract.md +0 -141
  259. package/docs/oats-member.schema.json +0 -38
  260. package/skills/integration-authoring/SKILL.md +0 -84
  261. package/skills/oats-support/SKILL.md +0 -79
  262. package/skills/skill-craft/SKILL.md +0 -109
  263. package/skills/soul-craft/SKILL.md +0 -116
@@ -1,84 +0,0 @@
1
- ---
2
- name: integration-authoring
3
- description: >-
4
- Route custom OATS capability-package and integration work to the framework's
5
- integrations expert. Use when building, adapting, or debugging a reusable
6
- capability, new tasks/messaging/knowledge core capability, oats.json manifest,
7
- lifecycle hook, or operational command—not merely activating an existing
8
- package. Triggers: "custom integration", "capability package", "integrate
9
- our tracker", "new messaging integration", "write an oats.json".
10
- ---
11
-
12
- # Capability and integration authoring — delegate
13
-
14
- A capability package may ship skills, instance instructions, requirements,
15
- namespaced commands, and declared hooks. A core capability is the constrained
16
- kind that fills one of the knowledge, messaging or tasks positions (its
17
- manifest's `layer` field names which). Building either requires
18
- manifest, security, targeting-boundary, collision, and probe discipline; use
19
- the framework's **integrations-expert** soul rather than improvising.
20
-
21
- If the user only wants an existing package, declare it and give it to souls;
22
- no build is needed:
23
-
24
- ```yaml
25
- # oats-workspace.yaml (host repository): declaring the package is the trust decision
26
- packages:
27
- vendor.review: git:github.com/vendor/review@v1.0.0
28
- # a soul's soul.yaml, or the workspace defaults: a capability the package exports
29
- # (a package may export several; the soul names each one it wants)
30
- capabilities:
31
- vendor.review: { from: package }
32
- ```
33
-
34
- Then run `oats sync` (fetch, verify integrity, lock). The oats.setup
35
- capability's **oats-package-pins** skill has the procedure.
36
-
37
- ## 1. Verify the expert is available
38
-
39
- Run `oats souls` in the deployment and confirm it resolves the
40
- `integrations-expert` soul (a member repository or package provides it). If it
41
- is absent, ask the human which OATS deployment owns reusable package work;
42
- never locate or import private kernel files.
43
-
44
- ## 2. Spawn the expert against the package's repository
45
-
46
- The package lives in its own repository. Make that repository a member of the
47
- workspace (or use the member that already holds it), then spawn the expert on
48
- it:
49
-
50
- ```bash
51
- oats spawn integrations-expert --preview \
52
- --purpose <package-slug> \
53
- --repo <member clone of the package repository> \
54
- --work worktree \
55
- --task '<capability intent; layer if any; skills/instructions/commands/hooks; external tools; which souls should get it; distribution path>'
56
- # review the preview, then run the same command without --preview
57
- ```
58
-
59
- Use `--relation child --relative-to <your-instance>` only when the documented
60
- workflow makes the expert your child; otherwise leave the spawn unrelated. A
61
- package is distributed from its own repository as `oats-package/` with a
62
- version tag; a framework contribution belongs in the framework's repository.
63
-
64
- ## 3. Brief the design boundary
65
-
66
- Tell the expert:
67
-
68
- - whether it is additive or implements exactly one of knowledge/messaging/tasks;
69
- - external requirements and executable surfaces (commands, hooks);
70
- - intended distribution and version/compatibility;
71
- - which souls or workspace defaults should receive it, and its settings; and
72
- - expected skill/instruction collisions (a duplicate skill name fails the spawn).
73
-
74
- Which souls get a capability is declared by the workspace (`defaults`) and the
75
- souls (`soul.yaml` `capabilities`), never in the manifest. The expert must
76
- test exact pi/Claude/Codex instance materialization, generated instructions,
77
- command gating, deterministic hooks, and the lock's integrity check as
78
- applicable.
79
-
80
- ## 4. Hand off
81
-
82
- Report the new instance (`oats status`). The expert follows its
83
- package/integration craft, runs a preview-only probe, and leaves the
84
- `packages:` pin and the `oats sync` for the user.
@@ -1,109 +0,0 @@
1
- ---
2
- name: skill-craft
3
- description: >-
4
- How to create, evaluate, and maintain agent skills (SKILL.md files per the
5
- Agent Skills standard). Use when writing a new skill, improving or debugging
6
- an existing one (skill not triggering, agent ignoring instructions, skill too
7
- long), turning a repeated procedure or correction into a skill, deciding
8
- whether knowledge belongs in a skill versus the knowledge base versus
9
- AGENTS.md, bundling scripts into skills, or evaluating whether a skill
10
- actually helps. Based on the agentskills.io creator guides and Anthropic
11
- best practices.
12
- ---
13
-
14
- # Skill craft — create, evaluate, maintain
15
-
16
- A skill is a directory with a `SKILL.md` (YAML frontmatter + markdown body),
17
- optionally `scripts/`, `references/`, `assets/`. Agents load only `name` +
18
- `description` at startup; the body loads **only when the description matches
19
- the task** — the description carries the entire burden of triggering.
20
-
21
- ## Where does this knowledge belong? (decide first)
22
-
23
- - **Repeatable procedure** ("how to do X, again and again") → **skill**.
24
- - **Declarative fact/decision/lesson** ("what is true and why") → **OKF
25
- concept** in the knowledge base (see `okf` skill). Skills may reference
26
- concepts for the why.
27
- - **Applies to every session of this agent** (role, boundaries, core workflow)
28
- → **AGENTS.md** (see `soul-craft`). Rule of thumb: AGENTS.md is loaded
29
- always — keep it minimal; skills load on demand — put domain workflows there.
30
-
31
- ## Creating a skill
32
-
33
- **Ground it in real expertise — never generate from thin air.** The valuable
34
- content is what a capable model *doesn't* already know: your APIs, your
35
- conventions, the corrections you had to make. Best sources: a hands-on task
36
- you just completed (extract the steps that worked, the corrections given, the
37
- formats used), runbooks, review comments, real failures and their fixes. A
38
- skill with generic content ("handle errors appropriately") is worthless — cut
39
- or ground it.
40
-
41
- **Frontmatter rules** (spec + hard-won):
42
- - `name`: lowercase alphanum + hyphens, ≤64 chars, **must match the directory
43
- name**, no leading/trailing/double hyphens.
44
- - `description`: ≤1024 chars, non-empty. ⚠️ **Use a `>-` block scalar if it
45
- contains any `: ` colon-space** — an unquoted colon breaks YAML parsing and
46
- the skill silently fails to load. Verify new skills actually load.
47
-
48
- **Write the description for triggering** (it's the only thing the agent sees
49
- before deciding):
50
- - Imperative: "Use when..." not "This skill does...".
51
- - Name the **user intents** it serves, not the implementation. Include
52
- trigger phrases users actually say, and cover cases where they don't name
53
- the domain ("even if they don't mention X").
54
- - Precise beats broad: an over-broad description fires on near-miss tasks
55
- and pollutes context.
56
-
57
- **Write the body for a loaded context window** — it competes with everything
58
- else once loaded:
59
- - **Only what the agent would get wrong without it.** For every line ask:
60
- "would removing this cause mistakes?" No → cut.
61
- - ≤500 lines / ~5k tokens. Larger → move detail to `references/` and tell the
62
- agent **when** to load each file ("read references/errors.md if the API
63
- returns non-200"), not just that it exists.
64
- - **Defaults, not menus**: pick one tool/approach, mention alternatives in
65
- one line. Match prescriptiveness to fragility: fragile sequences get exact
66
- commands ("run exactly this"); judgment tasks get goals + why.
67
- - Procedures over answers: teach the approach that generalizes, with one
68
- concrete worked example.
69
- - **Gotchas section** — often the highest-value part: concrete corrections to
70
- mistakes the agent *will* make ("the /health endpoint lies; use /ready").
71
- - For multi-step workflows: an explicit checklist. For fragile output: a
72
- template (agents pattern-match better than they follow prose). For
73
- correctness-critical work: a validation loop (do → validate → fix → repeat)
74
- or plan-validate-execute with a validator script.
75
-
76
- **Scripts**: when you see an agent reinventing the same logic across runs,
77
- write it once, test it, bundle it in `scripts/`, and reference it from the
78
- body with exact invocations. Prefer zero-dependency scripts; pin versions for
79
- `npx`/`uvx` one-offs. Scripts should print errors an agent can self-correct
80
- from ("field X not found — available: a, b, c").
81
-
82
- ## Evaluating (before trusting)
83
-
84
- - **Trigger check**: draft ~10 realistic prompts that *should* fire the skill
85
- (varied phrasing, some not naming the domain) and ~10 near-misses that
86
- *shouldn't* (share keywords, need something else). Run them; the skill
87
- triggered if its body was loaded. Fix the description, not the body, for
88
- trigger failures.
89
- - **Output check**: run 2-3 real tasks **with and without** the skill. If
90
- with-skill isn't clearly better, the skill isn't earning its context — cut
91
- or sharpen it. Read execution traces, not just outputs: wasted steps mean
92
- vague instructions, inapplicable instructions being followed, or menus
93
- without defaults.
94
-
95
- ## Maintaining
96
-
97
- - **Every correction is a candidate gotcha.** When a human (or reviewer)
98
- corrects an agent following the skill, add the correction to the gotchas —
99
- this is the single best maintenance loop.
100
- - Treat skills like code: prune on every edit; if the agent ignores a rule,
101
- the skill is probably too long and the rule is drowning. Test behavior
102
- changes by observing runs, not by rereading the text.
103
- - Never let a skill grow past one coherent unit of work — split like you'd
104
- split a function.
105
- - Log skill changes in the soul's `knowledge/log.md` (`**Update**: skills/x —
106
- added gotcha about …`) so knowledge history and skill history stay one
107
- timeline. Knowledge maintenance and skill maintenance are the same duty:
108
- declarative lessons go to OKF concepts, procedural lessons go to skills,
109
- and each should link to the other.
@@ -1,116 +0,0 @@
1
- ---
2
- name: soul-craft
3
- description: >-
4
- How to author and maintain an agent's soul — its AGENTS.md/CLAUDE.md
5
- operating doc, soul.yaml config, and the balance between AGENTS.md, skills,
6
- and the OKF knowledge base. Use when creating a new agent (writing its first
7
- AGENTS.md), refining an existing soul that underperforms (agent ignores
8
- instructions, drifts from its role, bloated operating doc), reviewing a
9
- soul's setup, or deciding what goes in AGENTS.md versus a skill versus
10
- knowledge. Based on the agents.md standard and Anthropic CLAUDE.md guidance.
11
- ---
12
-
13
- # Soul craft — author and maintain agent operating docs
14
-
15
- A soul's `AGENTS.md` is loaded **every session of
16
- every instance**. It is the most expensive real estate in the agent's context:
17
- everything in it taxes every task, relevant or not. The craft is keeping it
18
- minimal and pushing everything else to on-demand layers.
19
-
20
- **Canonical files:** `AGENTS.md` and `.agents/skills/` are the canonical
21
- sources; `CLAUDE.md` and `.claude/skills` must always be relative symlinks to
22
- them, never independent files (the spawner creates these links — if you find a
23
- real CLAUDE.md file diverging from AGENTS.md, that's a defect: merge and relink).
24
-
25
- ## The three-layer rule
26
-
27
- | Layer | Loaded | Belongs there |
28
- |---|---|---|
29
- | **AGENTS.md** | always | Role, boundaries, the default workflow, memory pointers — only what applies to *every* session |
30
- | **skills/** | on demand (description match) | Domain workflows, repeatable procedures ("how") — see `skill-craft` |
31
- | **knowledge/** | on demand (index-first) | Facts, decisions, lessons ("what/why") — format per the knowledge capability (default okf) |
32
-
33
- The test for every AGENTS.md line: **"would removing this cause mistakes in
34
- most sessions?"** No → move it to a skill or a knowledge concept, or cut it.
35
- Bloated operating docs cause agents to ignore the rules that matter — a rule
36
- being ignored is usually a symptom of too many rules.
37
-
38
- ## Writing a soul's AGENTS.md
39
-
40
- Structure that works (keep the whole thing short — a screen or two):
41
-
42
- 1. **Role, one paragraph.** Who this agent is, what it owns, where it stops.
43
- Boundaries beat capabilities: "you never merge", "you never modify the
44
- assignee", "UI belongs to the ui agent" prevent more damage than feature
45
- lists add value.
46
- 2. **Operating loop.** The default shape of a work session — for a developer:
47
- read ticket → plan in STATE.md → implement in ./work → verify → commit →
48
- review loop → hand off. Concrete, not aspirational.
49
- 3. **Verification.** How this agent checks its own work: the build/test/lint
50
- commands that must pass, what "done" means. An agent with a check it can
51
- run closes its own loop; without one, "looks done" is the only signal.
52
- Include exact commands the agent can't guess (`make test-unit`, not
53
- "run the tests").
54
- 4. **Memory pointers.** Where its knowledge and state live (knowledge base
55
- index, STATE.md discipline). Point, don't duplicate — the protocol lives
56
- with your knowledge capability (default okf: the memory-harvest skill).
57
- 5. **Escalation.** When to stop and ask the human or coordinator: the
58
- human-gate triggers (security, authz, migrations, contract breaks),
59
- plus "report to your spawner, don't self-fix" for infrastructure faults.
60
-
61
- Style rules (from the agents.md standard + field experience):
62
- - Write commands, not prose: `pnpm vitest run -t "<name>"` beats "run the
63
- relevant test".
64
- - Include only what can't be inferred from the repo: conventions that differ
65
- from defaults, env quirks, etiquette (branch naming, PR format).
66
- - Exclude: standard language conventions, file-by-file codebase tours, API
67
- docs (link instead), anything that changes weekly (that's knowledge),
68
- self-evident advice ("write clean code").
69
- - Emphasis (**IMPORTANT**, YOU MUST) sparingly — it works, and it stops
70
- working when everything is emphasized.
71
- - The repo's own AGENTS.md (in ./work) covers repo mechanics — the soul doc
72
- covers the *role*. Don't duplicate the repo doc; instruct reading it.
73
-
74
- ## soul.yaml
75
-
76
- Keep honest: `description` (one line; shows in rosters and pickers), `work`
77
- (`worktree` for builders, `checkout` for reviewers/coordinators, `directory`
78
- or `workspace` where the role needs them), and the capabilities the role
79
- actually uses (`capabilities: { <cap>: { from: package | here | <repo key> } }`,
80
- plus `knowledge` / `messaging` / `tasks` slots; `none` empties one). The
81
- soul lives in its member repository, which is also what it works on.
82
-
83
- Runtime, model and permission bypass are not soul fields: they are chosen at
84
- spawn (`--runtime`, `--model`, `--yolo`) or by a host's named launch
85
- configuration, so the same soul runs on any harness a host provides. Check a
86
- soul with `oats spawn <soul> --preview` before committing it.
87
-
88
- ## Maintaining a soul
89
-
90
- - **Change AGENTS.md rarely and deliberately** — it defines the agent. The
91
- bar: a change in how the agent fundamentally operates, proven by instance
92
- experience. Day-to-day lessons go to knowledge; procedures to skills.
93
- - When an instance repeatedly misbehaves, diagnose in order: (1) is the rule
94
- drowning in a bloated doc? → prune the doc; (2) is it ambiguous? → sharpen
95
- with a command or example; (3) is it missing? → add it, minimally. Test by
96
- observing the next instance's behavior, not by rereading.
97
- - **Prune on every edit.** Adding a line? Look for two to cut.
98
- - Log every soul change in `knowledge/log.md` (`**Update**: AGENTS.md — …`)
99
- so the soul's evolution is reconstructible.
100
- - Agents never rewrite their own role or safety boundaries; soul changes that
101
- alter behavior go through the human (or a documented review workflow).
102
- - Periodic review (worth doing when spawning feels off): does the role still
103
- match reality? Do skills cover the recurring procedures? Is the knowledge
104
- index current? Are the verification commands still correct?
105
-
106
- ## Bootstrapping a new soul
107
-
108
- Fastest path to a *grounded* soul (never write one from imagination):
109
- 1. Do (or supervise) the role's work once in a plain session, noting
110
- corrections, commands, and conventions as you go.
111
- 2. Distill: role/boundaries/loop/verification/escalation → AGENTS.md;
112
- repeated procedures → first skills; facts and decisions → first knowledge
113
- concepts.
114
- 3. Spawn an instance on a real task; watch where it stumbles; fold the
115
- corrections back (doc, skill gotcha, or concept — per the three-layer rule).
116
- Two rounds of this beat any amount of upfront authoring.
@@ -1,11 +0,0 @@
1
- #!/usr/bin/env node
2
- import { runBindingWire } from '../lib/binding-wire.mjs';
3
-
4
- const args=process.argv.slice(2);
5
- if(args.includes('--help') || args.includes('-h')) {
6
- process.stdout.write('oats aweb provider binding phase (manifest-owned JSON stdin/stdout)\n');
7
- } else {
8
- const phase=args[0];
9
- if(args.length!==1) await runBindingWire(phase,[],process.stdout);
10
- else await runBindingWire(phase);
11
- }