@bastani/atomic 0.9.19-alpha.5 → 0.9.19-alpha.7

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 (209) hide show
  1. package/CHANGELOG.md +32 -0
  2. package/README.md +2 -2
  3. package/dist/builtin/intercom/CHANGELOG.md +6 -0
  4. package/dist/builtin/intercom/broker/client.ts +19 -1
  5. package/dist/builtin/intercom/index.bundle.mjs +8 -1
  6. package/dist/builtin/intercom/package.json +1 -1
  7. package/dist/builtin/mcp/package.json +1 -1
  8. package/dist/builtin/subagents/CHANGELOG.md +6 -0
  9. package/dist/builtin/subagents/README.md +3 -1
  10. package/dist/builtin/subagents/agents/codebase-online-researcher.md +7 -7
  11. package/dist/builtin/subagents/package.json +1 -1
  12. package/dist/builtin/subagents/skills/subagent/SKILL.md +3 -1
  13. package/dist/builtin/subagents/src/extension/index.bundle.mjs +2 -1
  14. package/dist/builtin/web-access/CHANGELOG.md +13 -0
  15. package/dist/builtin/web-access/README.md +31 -24
  16. package/dist/builtin/web-access/index.bundle.mjs +16121 -80
  17. package/dist/builtin/web-access/package.json +2 -1
  18. package/dist/builtin/workflows/CHANGELOG.md +15 -0
  19. package/dist/builtin/workflows/README.md +1 -1
  20. package/dist/builtin/workflows/builtin/adversarial-verification.js +2 -2
  21. package/dist/builtin/workflows/builtin/{chunk-vhmnzdj9.js → chunk-1jth021m.js} +1 -1
  22. package/dist/builtin/workflows/builtin/{chunk-p8jjwfg6.js → chunk-2377r57g.js} +4 -2
  23. package/dist/builtin/workflows/builtin/{chunk-hbnwv56f.js → chunk-31j2gs7h.js} +2 -2
  24. package/dist/builtin/workflows/builtin/{chunk-n8zysf1t.js → chunk-ngkqkzej.js} +1 -1
  25. package/dist/builtin/workflows/builtin/{chunk-1nbq96fh.js → chunk-nkrafh9s.js} +1 -1
  26. package/dist/builtin/workflows/builtin/{chunk-1kx4aggw.js → chunk-wf741bv3.js} +2 -2
  27. package/dist/builtin/workflows/builtin/{chunk-t6x2d78s.js → chunk-z29qbehr.js} +1 -1
  28. package/dist/builtin/workflows/builtin/generate-and-filter.js +2 -2
  29. package/dist/builtin/workflows/builtin/goal.js +3 -3
  30. package/dist/builtin/workflows/builtin/index.js +7 -7
  31. package/dist/builtin/workflows/builtin/ralph.js +3 -3
  32. package/dist/builtin/workflows/builtin/tournament.js +2 -2
  33. package/dist/builtin/workflows/package.json +1 -1
  34. package/dist/builtin/workflows/src/extension/index.bundle.mjs +339 -31
  35. package/dist/builtin/workflows/src/index.js +67 -19
  36. package/dist/builtin/workflows/src/shared/authoring-contract-stage.d.ts +2 -0
  37. package/dist/core/agent-session-tool-registry.d.ts.map +1 -1
  38. package/dist/core/agent-session-tool-registry.js +10 -0
  39. package/dist/core/agent-session-tool-registry.js.map +1 -1
  40. package/dist/core/bash-executor.js.map +1 -1
  41. package/dist/core/tools/bash.d.ts +1 -1
  42. package/dist/core/tools/bash.d.ts.map +1 -1
  43. package/dist/core/tools/bash.js +3 -2
  44. package/dist/core/tools/bash.js.map +1 -1
  45. package/dist/core/tools/edit.d.ts +3 -0
  46. package/dist/core/tools/edit.d.ts.map +1 -1
  47. package/dist/core/tools/edit.js +91 -12
  48. package/dist/core/tools/edit.js.map +1 -1
  49. package/dist/core/tools/file-mutation-coordinator.d.ts +255 -0
  50. package/dist/core/tools/file-mutation-coordinator.d.ts.map +1 -0
  51. package/dist/core/tools/file-mutation-coordinator.js +300 -0
  52. package/dist/core/tools/file-mutation-coordinator.js.map +1 -0
  53. package/dist/core/tools/file-mutation-queue.d.ts +14 -1
  54. package/dist/core/tools/file-mutation-queue.d.ts.map +1 -1
  55. package/dist/core/tools/file-mutation-queue.js +15 -3
  56. package/dist/core/tools/file-mutation-queue.js.map +1 -1
  57. package/dist/core/tools/hashline.d.ts +9 -0
  58. package/dist/core/tools/hashline.d.ts.map +1 -1
  59. package/dist/core/tools/hashline.js +12 -1
  60. package/dist/core/tools/hashline.js.map +1 -1
  61. package/dist/core/tools/index.d.ts +9 -1
  62. package/dist/core/tools/index.d.ts.map +1 -1
  63. package/dist/core/tools/index.js +67 -12
  64. package/dist/core/tools/index.js.map +1 -1
  65. package/dist/core/tools/non-minting-snapshot-store.d.ts +49 -0
  66. package/dist/core/tools/non-minting-snapshot-store.d.ts.map +1 -0
  67. package/dist/core/tools/non-minting-snapshot-store.js +64 -0
  68. package/dist/core/tools/non-minting-snapshot-store.js.map +1 -0
  69. package/dist/core/tools/powershell.d.ts +2 -2
  70. package/dist/core/tools/powershell.d.ts.map +1 -1
  71. package/dist/core/tools/powershell.js +2 -5
  72. package/dist/core/tools/powershell.js.map +1 -1
  73. package/dist/core/tools/read-document-extract.js.map +1 -1
  74. package/dist/core/tools/render-utils.js.map +1 -1
  75. package/dist/core/tools/write.d.ts +30 -1
  76. package/dist/core/tools/write.d.ts.map +1 -1
  77. package/dist/core/tools/write.js +97 -8
  78. package/dist/core/tools/write.js.map +1 -1
  79. package/dist/index.d.ts +1 -1
  80. package/dist/index.d.ts.map +1 -1
  81. package/dist/index.js.map +1 -1
  82. package/dist/modes/interactive/components/bash-execution.js.map +1 -1
  83. package/dist/modes/interactive/components/task-live-transcript.d.ts +1 -1
  84. package/dist/modes/interactive/components/task-live-transcript.d.ts.map +1 -1
  85. package/dist/modes/interactive/components/task-live-transcript.js +19 -11
  86. package/dist/modes/interactive/components/task-live-transcript.js.map +1 -1
  87. package/dist/modes/interactive/interactive-mode-base.d.ts +1 -0
  88. package/dist/modes/interactive/interactive-mode-base.d.ts.map +1 -1
  89. package/dist/modes/interactive/interactive-mode-base.js +3 -1
  90. package/dist/modes/interactive/interactive-mode-base.js.map +1 -1
  91. package/dist/modes/interactive/interactive-mode-surface.d.ts +1 -1
  92. package/dist/modes/interactive/interactive-mode-surface.d.ts.map +1 -1
  93. package/dist/modes/interactive/interactive-mode-surface.js.map +1 -1
  94. package/dist/modes/interactive/interactive-render-chat.js +28 -4
  95. package/dist/modes/interactive/interactive-render-chat.js.map +1 -1
  96. package/dist/modes/interactive/interactive-startup.d.ts.map +1 -1
  97. package/dist/modes/interactive/interactive-startup.js +3 -0
  98. package/dist/modes/interactive/interactive-startup.js.map +1 -1
  99. package/dist/modes/interactive-engine/activity-watchdog.d.ts +2 -2
  100. package/dist/modes/interactive-engine/activity-watchdog.d.ts.map +1 -1
  101. package/dist/modes/interactive-engine/activity-watchdog.js.map +1 -1
  102. package/dist/modes/interactive-engine/engine-diagnostic-view.d.ts +3 -1
  103. package/dist/modes/interactive-engine/engine-diagnostic-view.d.ts.map +1 -1
  104. package/dist/modes/interactive-engine/engine-diagnostic-view.js +11 -0
  105. package/dist/modes/interactive-engine/engine-diagnostic-view.js.map +1 -1
  106. package/dist/modes/interactive-engine/isolated-runtime.js +2 -1
  107. package/dist/modes/interactive-engine/isolated-runtime.js.map +1 -1
  108. package/dist/modes/rpc/rpc-client-process.d.ts +2 -0
  109. package/dist/modes/rpc/rpc-client-process.d.ts.map +1 -1
  110. package/dist/modes/rpc/rpc-client-process.js +23 -1
  111. package/dist/modes/rpc/rpc-client-process.js.map +1 -1
  112. package/dist/modes/rpc/rpc-client.d.ts.map +1 -1
  113. package/dist/modes/rpc/rpc-client.js +20 -3
  114. package/dist/modes/rpc/rpc-client.js.map +1 -1
  115. package/dist/utils/markit.d.ts +2 -0
  116. package/dist/utils/markit.d.ts.map +1 -1
  117. package/dist/utils/markit.js +65 -5
  118. package/dist/utils/markit.js.map +1 -1
  119. package/docs/background-tasks.md +15 -11
  120. package/docs/build.md +51 -0
  121. package/docs/changelog.mdx +8 -8
  122. package/docs/compaction/reference.md +267 -0
  123. package/docs/compaction.md +36 -219
  124. package/docs/computer-use.md +35 -0
  125. package/docs/containerization.md +9 -5
  126. package/docs/custom-provider/api-reference.md +145 -0
  127. package/docs/custom-provider/oauth.md +131 -0
  128. package/docs/custom-provider/override.md +34 -0
  129. package/docs/custom-provider/registration.md +163 -0
  130. package/docs/custom-provider/streaming.md +214 -0
  131. package/docs/custom-provider.md +43 -607
  132. package/docs/development.md +87 -0
  133. package/docs/docs.json +199 -76
  134. package/docs/environment-variables.md +1 -1
  135. package/docs/extensions/api-reference.md +1001 -0
  136. package/docs/extensions/authoring.md +676 -0
  137. package/docs/extensions/events.md +793 -0
  138. package/docs/extensions/examples.md +94 -0
  139. package/docs/extensions/ui.md +470 -0
  140. package/docs/extensions.md +270 -2768
  141. package/docs/getting-started/authentication.md +55 -0
  142. package/docs/getting-started/first-session.md +172 -0
  143. package/docs/getting-started/installation.md +154 -0
  144. package/docs/getting-started/project-instructions.md +43 -0
  145. package/docs/guides/configuration.md +65 -0
  146. package/docs/guides/intercom.md +24 -0
  147. package/docs/guides/non-interactive.md +33 -0
  148. package/docs/guides/subagents.md +24 -0
  149. package/docs/guides/workflows.md +27 -0
  150. package/docs/guides.md +41 -0
  151. package/docs/index.md +13 -45
  152. package/docs/intercom/operations.md +178 -0
  153. package/docs/intercom/reference.md +146 -0
  154. package/docs/intercom.md +54 -259
  155. package/docs/json.md +17 -0
  156. package/docs/llama-cpp.md +5 -0
  157. package/docs/models/artificial-analysis-index.md +89 -0
  158. package/docs/models/evals.md +2 -2
  159. package/docs/models/model-selection.md +3 -3
  160. package/docs/models/pareto-efficiency.md +2 -2
  161. package/docs/models/reference.md +601 -0
  162. package/docs/models.md +45 -550
  163. package/docs/packages/authoring.md +88 -0
  164. package/docs/packages/reference.md +43 -0
  165. package/docs/packages.md +28 -107
  166. package/docs/programmatic.md +29 -0
  167. package/docs/prompt-templates.md +11 -0
  168. package/docs/providers/reference.md +23 -0
  169. package/docs/providers.md +10 -15
  170. package/docs/quickstart.md +44 -238
  171. package/docs/reference/cli.md +252 -0
  172. package/docs/reference.md +52 -0
  173. package/docs/rpc/examples.md +64 -0
  174. package/docs/rpc/extension-ui.md +198 -0
  175. package/docs/rpc/protocol.md +1341 -0
  176. package/docs/rpc.md +109 -1346
  177. package/docs/sdk/reference.md +1090 -0
  178. package/docs/sdk.md +56 -1002
  179. package/docs/session-format.md +2 -0
  180. package/docs/sessions.md +6 -10
  181. package/docs/settings.md +6 -45
  182. package/docs/skills/authoring.md +95 -0
  183. package/docs/skills/reference.md +60 -0
  184. package/docs/skills.md +20 -122
  185. package/docs/subagents/authoring.md +37 -0
  186. package/docs/subagents/reference.md +60 -0
  187. package/docs/subagents.md +42 -96
  188. package/docs/terminal-setup.md +1 -1
  189. package/docs/themes/reference.md +176 -0
  190. package/docs/themes.md +21 -135
  191. package/docs/tmux.md +5 -0
  192. package/docs/tools/edit.md +5 -0
  193. package/docs/tools.md +31 -0
  194. package/docs/tui/reference.md +343 -0
  195. package/docs/tui.md +23 -286
  196. package/docs/usage.md +26 -209
  197. package/docs/web-access.md +40 -0
  198. package/docs/windows.md +2 -1
  199. package/docs/workflows/api-reference.md +11 -4
  200. package/docs/workflows/authoring.md +4 -2
  201. package/docs/workflows/builtins.md +2 -2
  202. package/docs/workflows/operations.md +11 -7
  203. package/docs/workflows/reliable-design.md +21 -3
  204. package/docs/workflows/verification.md +8 -0
  205. package/examples/extensions/gondolin/index.ts +116 -148
  206. package/examples/extensions/gondolin/package.json +1 -1
  207. package/examples/extensions/ssh.ts +56 -34
  208. package/npm-shrinkwrap.json +33 -33
  209. package/package.json +4 -4
@@ -67,6 +67,8 @@ interface ToolCall {
67
67
  }
68
68
  ```
69
69
 
70
+ <a id="base-message-types-from-bastani/pi-ai"></a>
71
+
70
72
  ### Base Message Types (from `@bastani/pi-ai`)
71
73
 
72
74
  ```typescript
package/docs/sessions.md CHANGED
@@ -2,6 +2,10 @@
2
2
 
3
3
  Atomic saves conversations as sessions so you can continue work, branch from earlier turns, and revisit previous paths.
4
4
 
5
+ ## On this page
6
+
7
+ This page covers working with sessions: storage, commands, resuming, naming, and branching. Branch summarization behavior is documented with the rest of context management in [Compaction](/compaction#branch-summarization).
8
+
5
9
  ## Session Storage
6
10
 
7
11
  Sessions auto-save to `~/.atomic/agent/sessions/`, organized by working directory. Each session is a JSONL file with a tree structure.
@@ -152,17 +156,9 @@ Use `/tree` when you want to keep alternatives together. Use `/fork` or `/clone`
152
156
 
153
157
  ## Branch Summaries
154
158
 
155
- When `/tree` switches away from one branch to another, Atomic can summarize the abandoned branch and attach that summary at the new position. This preserves important context from the path you left without replaying the whole branch.
156
-
157
- When prompted, choose one of:
158
-
159
- 1. no summary
160
- 2. summarize with the default prompt
161
- 3. summarize with custom focus instructions
162
-
163
- Branch summaries are separate from `/compact`: branch navigation can generate summary prose (optionally with focus instructions), while Verbatim Compaction lets a model select numbered line ranges and reconstructs retained text mechanically.
159
+ Branch summaries are compact records of what happened on a session branch. When `/tree` switches away from one branch to another, Atomic can optionally summarize the abandoned branch. The prompt lets you choose no summary, the default summary prompt, or custom focus instructions; when `branchSummary.skipPrompt` is enabled, Atomic skips the prompt and defaults to no summary.
164
160
 
165
- See [Compaction](/compaction) for Verbatim Compaction, branch summarization internals, and extension hooks.
161
+ Moved to [Compaction & Branch Summarization](/compaction#branch-summaries).
166
162
 
167
163
  ## Session Format
168
164
 
package/docs/settings.md CHANGED
@@ -11,6 +11,10 @@ Edit directly or use `/settings` for common options. Choosing a model or thinkin
11
11
 
12
12
  Saving an Atomic setting applies only the changed fields to the corresponding `.atomic` file; it does not copy untouched fallback fields out of `.pi`. To intentionally override an inherited array such as `packages`, set it in `.atomic`, including an explicit empty array (`"packages": []`) when the inherited list should be disabled.
13
13
 
14
+ ## On this page and its guide
15
+
16
+ This page is the exhaustive settings reference: every field, its default, and its constraints. If you are writing your first settings file or setting up a project-scoped override, start with the [Configure Atomic](/guides/configuration) guide.
17
+
14
18
  ## Project Trust
15
19
 
16
20
  On interactive startup, Atomic asks before trusting a project folder that contains trust-gated project inputs and has no saved decision for the folder or a parent folder in `~/.atomic/agent/trust.json`. Trusting a project allows Atomic to load project-local `.atomic/settings.json` and `.atomic` resources, legacy `.pi/settings.json` and `.pi` resources, project-local context files, install missing project packages, and execute project extensions.
@@ -475,51 +479,8 @@ See [Atomic packages](/packages) for package management details.
475
479
 
476
480
  ## Example
477
481
 
478
- ```json
479
- {
480
- "defaultProvider": "anthropic",
481
- "defaultModel": "claude-sonnet-4-20250514",
482
- "defaultThinkingLevel": "medium",
483
- "theme": "dark",
484
- "compaction": {
485
- "enabled": true,
486
- "reserveTokens": 16384,
487
- "compression_ratio": 0.5,
488
- "preserve_recent": 2
489
- },
490
- "retry": {
491
- "enabled": true,
492
- "maxRetries": 3
493
- },
494
- "httpIdleTimeoutMs": 300000,
495
- "enabledModels": ["claude-*", "gpt-4o"],
496
- "warnings": {
497
- "anthropicExtraUsage": true
498
- },
499
- "packages": ["pi-skills"],
500
- "workflows": ["./workflows/*.ts"]
501
- }
502
- ```
482
+ Moved to [Configure Atomic](/guides/configuration#example).
503
483
 
504
484
  ## Project Overrides
505
485
 
506
- Project settings (`.atomic/settings.json`) override global settings. Nested objects merge recursively; arrays and scalar values replace global values:
507
-
508
- ```json
509
- // ~/.atomic/agent/settings.json (global)
510
- {
511
- "theme": "dark",
512
- "compaction": { "enabled": true, "reserveTokens": 16384 }
513
- }
514
-
515
- // .atomic/settings.json (project)
516
- {
517
- "compaction": { "reserveTokens": 8192 }
518
- }
519
-
520
- // Result
521
- {
522
- "theme": "dark",
523
- "compaction": { "enabled": true, "reserveTokens": 8192 }
524
- }
525
- ```
486
+ Moved to [Configure Atomic](/guides/configuration#project-overrides).
@@ -0,0 +1,95 @@
1
+ ---
2
+ title: Writing skills
3
+ description: Skill directory structure and a complete worked example.
4
+ ---
5
+
6
+ # Writing skills
7
+
8
+ ## Skill Structure
9
+
10
+ A skill is a directory with a `SKILL.md` file. Everything else is freeform.
11
+
12
+ ```
13
+ my-skill/
14
+ ├── SKILL.md # Required: frontmatter + instructions
15
+ ├── scripts/ # Helper scripts
16
+ │ └── process.sh
17
+ ├── references/ # Detailed docs loaded on-demand
18
+ │ └── api-reference.md
19
+ └── assets/
20
+ └── template.json
21
+ ```
22
+
23
+ ### SKILL.md Format
24
+
25
+ ````markdown
26
+ ---
27
+ name: my-skill
28
+ description: What this skill does and when to use it. Be specific.
29
+ ---
30
+
31
+ # My Skill
32
+
33
+ ## Setup
34
+
35
+ Run once before first use:
36
+ ```bash
37
+ cd /path/to/skill && bun install
38
+ ```
39
+
40
+ ## Usage
41
+
42
+ ```bash
43
+ ./scripts/process.sh <input>
44
+ ```
45
+ ````
46
+
47
+ Use relative file paths from the skill directory (these are bundled skill files, not docs routes):
48
+
49
+ ```markdown
50
+ See the API reference at `references/api-reference.md` for details.
51
+ ```
52
+
53
+ Keep authored instructions outcome-first and concise. State observable completion and stop conditions, give a short reason for material constraints, and use decision rules for judgment calls instead of `ALWAYS`/`NEVER` language. Put detailed or model-specific material in `references/` so it loads only when needed. Do not ask models to reproduce private reasoning or repeatedly verify their own work; require evidence or validation results where correctness matters.
54
+
55
+ ## Example
56
+
57
+ ```
58
+ brave-search/
59
+ ├── SKILL.md
60
+ ├── search.js
61
+ └── content.js
62
+ ```
63
+
64
+ **SKILL.md:**
65
+ ````markdown
66
+ ---
67
+ name: brave-search
68
+ description: Web search and content extraction via Brave Search API. Use for searching documentation, facts, or any web content.
69
+ ---
70
+
71
+ # Brave Search
72
+
73
+ ## Setup
74
+
75
+ ```bash
76
+ cd /path/to/brave-search && bun install
77
+ ```
78
+
79
+ ## Search
80
+
81
+ ```bash
82
+ ./search.js "query" # Basic search
83
+ ./search.js "query" --content # Include page content
84
+ ```
85
+
86
+ ## Extract Page Content
87
+
88
+ ```bash
89
+ ./content.js https://example.com
90
+ ```
91
+ ````
92
+
93
+ ## Next steps
94
+
95
+ Check the skill reference for [frontmatter fields](/skills/reference#frontmatter) and [validation rules](/skills/reference#validation) before sharing your skill.
@@ -0,0 +1,60 @@
1
+ ---
2
+ title: Skill reference
3
+ description: SKILL.md frontmatter fields and validation rules.
4
+ ---
5
+
6
+ # Skill reference
7
+
8
+ ## Frontmatter
9
+
10
+ Per the [Agent Skills specification](https://agentskills.io/specification#frontmatter-required):
11
+
12
+ | Field | Required | Description |
13
+ |-------|----------|-------------|
14
+ | `name` | Yes | Max 64 chars. Lowercase a-z, 0-9, hyphens. Must match parent directory. |
15
+ | `description` | Yes | Max 1024 chars. What the skill does and when to use it. |
16
+ | `license` | No | License name or reference to bundled file. |
17
+ | `compatibility` | No | Max 500 chars. Environment requirements. |
18
+ | `metadata` | No | Arbitrary key-value mapping. |
19
+ | `allowed-tools` | No | Space-delimited list of pre-approved tools (experimental). |
20
+ | `disable-model-invocation` | No | When `true`, skill is hidden from system prompt. Users must use `/skill:name`. |
21
+
22
+ ### Name Rules
23
+
24
+ - 1-64 characters
25
+ - Lowercase letters, numbers, hyphens only
26
+ - No leading/trailing hyphens
27
+ - No consecutive hyphens
28
+ - Must match parent directory name
29
+
30
+ Valid: `pdf-processing`, `data-analysis`, `code-review`
31
+ Invalid: `PDF-Processing`, `-pdf`, `pdf--processing`
32
+
33
+ ### Description Best Practices
34
+
35
+ The description determines when the agent loads the skill. Be specific.
36
+
37
+ Good:
38
+ ```yaml
39
+ description: Extracts text and tables from PDF files, fills PDF forms, and merges multiple PDFs. Use when working with PDF documents.
40
+ ```
41
+
42
+ Poor:
43
+ ```yaml
44
+ description: Helps with PDFs.
45
+ ```
46
+
47
+ ## Validation
48
+
49
+ Atomic validates skills against the Agent Skills standard. Most issues produce warnings but still load the skill:
50
+
51
+ - Name doesn't match parent directory
52
+ - Name exceeds 64 characters or contains invalid characters
53
+ - Name starts/ends with hyphen or has consecutive hyphens
54
+ - Description exceeds 1024 characters
55
+
56
+ Unknown frontmatter fields are ignored.
57
+
58
+ Declared skills with missing descriptions are not loaded. Malformed `SKILL.md` files and `SKILL.md` files without a description produce warnings and are not loaded. Other Markdown files without valid skill frontmatter are ignored.
59
+
60
+ Name collisions (the same name from different real files) produce diagnostics and keep the existing first-winner precedence for `/skill:name`. Atomic also retains the other files as source-qualified candidates as described in [Skill Commands](/skills#skill-commands).
package/docs/skills.md CHANGED
@@ -6,20 +6,29 @@ Skills are self-contained capability packages that the agent loads on-demand. A
6
6
 
7
7
  Atomic implements the [Agent Skills standard](https://agentskills.io/specification), warning about violations but remaining lenient.
8
8
 
9
+ ## Where to go next
10
+
11
+ Skills are on-demand instructions the agent loads when a task matches. Read this page to install and use them, then continue:
12
+
13
+ - [Writing skills](/skills/authoring) — directory structure and a complete worked example.
14
+ - [Skill reference](/skills/reference) — `SKILL.md` frontmatter fields and validation rules.
15
+
9
16
  ## Table of Contents
10
17
 
11
18
  - [Locations](#locations)
12
19
  - [How Skills Work](#how-skills-work)
13
20
  - [Skill Commands](#skill-commands)
14
- - [Skill Structure](#skill-structure)
15
- - [Frontmatter](#frontmatter)
16
- - [Validation](#validation)
17
- - [Example](#example)
21
+ - [Skill Structure](/skills/authoring#skill-structure)
22
+ - [Frontmatter](/skills/reference#frontmatter)
23
+ - [Validation](/skills/reference#validation)
24
+ - [Example](/skills/authoring#example)
18
25
  - [Skill Repositories](#skill-repositories)
19
26
 
20
27
  ## Locations
21
28
 
22
29
  > **Security:** Skills can instruct the model to perform any action and may include executable code the model invokes. Review skill content before use.
30
+ >
31
+ > Read [Security](/security) for the project-trust boundary that governs which skills load at all.
23
32
 
24
33
  Atomic loads skills from:
25
34
 
@@ -145,142 +154,31 @@ See [workflow stage chat controls](/workflows/operations#skills-in-attached-stag
145
154
 
146
155
  ## Skill Structure
147
156
 
148
- A skill is a directory with a `SKILL.md` file. Everything else is freeform.
149
-
150
- ```
151
- my-skill/
152
- ├── SKILL.md # Required: frontmatter + instructions
153
- ├── scripts/ # Helper scripts
154
- │ └── process.sh
155
- ├── references/ # Detailed docs loaded on-demand
156
- │ └── api-reference.md
157
- └── assets/
158
- └── template.json
159
- ```
157
+ Moved to [Writing skills](/skills/authoring#skill-structure).
160
158
 
161
159
  ### SKILL.md Format
162
160
 
163
- ````markdown
164
- ---
165
- name: my-skill
166
- description: What this skill does and when to use it. Be specific.
167
- ---
168
-
169
- # My Skill
170
-
171
- ## Setup
172
-
173
- Run once before first use:
174
- ```bash
175
- cd /path/to/skill && bun install
176
- ```
177
-
178
- ## Usage
179
-
180
- ```bash
181
- ./scripts/process.sh <input>
182
- ```
183
- ````
184
-
185
- Use relative file paths from the skill directory (these are bundled skill files, not docs routes):
186
-
187
- ```markdown
188
- See the API reference at `references/api-reference.md` for details.
189
- ```
190
-
191
- Keep authored instructions outcome-first and concise. State observable completion and stop conditions, give a short reason for material constraints, and use decision rules for judgment calls instead of `ALWAYS`/`NEVER` language. Put detailed or model-specific material in `references/` so it loads only when needed. Do not ask models to reproduce private reasoning or repeatedly verify their own work; require evidence or validation results where correctness matters.
161
+ Moved to [Writing skills](/skills/authoring#skill-md-format).
192
162
 
193
163
  ## Frontmatter
194
164
 
195
- Per the [Agent Skills specification](https://agentskills.io/specification#frontmatter-required):
196
-
197
- | Field | Required | Description |
198
- |-------|----------|-------------|
199
- | `name` | Yes | Max 64 chars. Lowercase a-z, 0-9, hyphens. Must match parent directory. |
200
- | `description` | Yes | Max 1024 chars. What the skill does and when to use it. |
201
- | `license` | No | License name or reference to bundled file. |
202
- | `compatibility` | No | Max 500 chars. Environment requirements. |
203
- | `metadata` | No | Arbitrary key-value mapping. |
204
- | `allowed-tools` | No | Space-delimited list of pre-approved tools (experimental). |
205
- | `disable-model-invocation` | No | When `true`, skill is hidden from system prompt. Users must use `/skill:name`. |
165
+ Moved to [Skill reference](/skills/reference#frontmatter).
206
166
 
207
167
  ### Name Rules
208
168
 
209
- - 1-64 characters
210
- - Lowercase letters, numbers, hyphens only
211
- - No leading/trailing hyphens
212
- - No consecutive hyphens
213
- - Must match parent directory name
214
-
215
- Valid: `pdf-processing`, `data-analysis`, `code-review`
216
- Invalid: `PDF-Processing`, `-pdf`, `pdf--processing`
169
+ Moved to [Skill reference](/skills/reference#name-rules).
217
170
 
218
171
  ### Description Best Practices
219
172
 
220
- The description determines when the agent loads the skill. Be specific.
221
-
222
- Good:
223
- ```yaml
224
- description: Extracts text and tables from PDF files, fills PDF forms, and merges multiple PDFs. Use when working with PDF documents.
225
- ```
226
-
227
- Poor:
228
- ```yaml
229
- description: Helps with PDFs.
230
- ```
173
+ Moved to [Skill reference](/skills/reference#description-best-practices).
231
174
 
232
175
  ## Validation
233
176
 
234
- Atomic validates skills against the Agent Skills standard. Most issues produce warnings but still load the skill:
235
-
236
- - Name doesn't match parent directory
237
- - Name exceeds 64 characters or contains invalid characters
238
- - Name starts/ends with hyphen or has consecutive hyphens
239
- - Description exceeds 1024 characters
240
-
241
- Unknown frontmatter fields are ignored.
242
-
243
- Declared skills with missing descriptions are not loaded. Malformed `SKILL.md` files and `SKILL.md` files without a description produce warnings and are not loaded. Other Markdown files without valid skill frontmatter are ignored.
244
-
245
- Name collisions (the same name from different real files) produce diagnostics and keep the existing first-winner precedence for `/skill:name`. Atomic also retains the other files as source-qualified candidates as described in [Skill Commands](#skill-commands).
177
+ Moved to [Skill reference](/skills/reference#validation).
246
178
 
247
179
  ## Example
248
180
 
249
- ```
250
- brave-search/
251
- ├── SKILL.md
252
- ├── search.js
253
- └── content.js
254
- ```
255
-
256
- **SKILL.md:**
257
- ````markdown
258
- ---
259
- name: brave-search
260
- description: Web search and content extraction via Brave Search API. Use for searching documentation, facts, or any web content.
261
- ---
262
-
263
- # Brave Search
264
-
265
- ## Setup
266
-
267
- ```bash
268
- cd /path/to/brave-search && bun install
269
- ```
270
-
271
- ## Search
272
-
273
- ```bash
274
- ./search.js "query" # Basic search
275
- ./search.js "query" --content # Include page content
276
- ```
277
-
278
- ## Extract Page Content
279
-
280
- ```bash
281
- ./content.js https://example.com
282
- ```
283
- ````
181
+ Moved to [Writing skills](/skills/authoring#example).
284
182
 
285
183
  ## Skill Repositories
286
184
 
@@ -0,0 +1,37 @@
1
+ ---
2
+ title: Custom subagents
3
+ description: Define, scope, and configure your own subagents.
4
+ ---
5
+
6
+ # Custom subagents
7
+
8
+ ## Custom agents
9
+
10
+ Custom agents are Markdown files with YAML frontmatter and a system prompt body. Keep the body outcome-first and locally complete: state the role or goal, observable success criteria, constraints and context-dependent tool routes, required output shape, and stop conditions. Reserve absolute wording for true invariants, request evidence and conclusions rather than private reasoning, and avoid repeated self-check instructions. Common locations are:
11
+
12
+ | Scope | Path |
13
+ |---|---|
14
+ | User | `~/.atomic/agent/agents/**/*.md` |
15
+ | Project | `.atomic/agents/**/*.md` |
16
+
17
+ A small custom read-only inspection agent:
18
+
19
+ ```markdown
20
+ ---
21
+ name: strict-inspector
22
+ description: Inspect code for correctness and regressions
23
+ tools: read, search, bash
24
+ model: anthropic/claude-sonnet-4
25
+ fallbackModels: openai/gpt-5-mini
26
+ inheritProjectContext: true
27
+ ---
28
+
29
+ ## Role and goal
30
+ Inspect the current diff for correctness and regressions without editing files.
31
+
32
+ ## Success criteria
33
+ Cite each actionable issue with file:line evidence and the observed failure or risk.
34
+
35
+ ## Output and stop rule
36
+ Return only issues worth fixing now. Stop when the relevant diff and affected call paths have been inspected, or name the evidence you could not access.
37
+ ```
@@ -0,0 +1,60 @@
1
+ ---
2
+ title: Subagent reference
3
+ description: Fallback model resolution and reasoning-level contracts.
4
+ ---
5
+
6
+ # Subagent reference
7
+
8
+ ## Fallback models
9
+
10
+ Agents can define ordered `fallbackModels` for retryable provider or model failures such as rate limits, quota/usage-limit exhaustion (for example a provider reporting `The usage limit has been reached`, or `usage_limit_reached`/`insufficient_quota` codes), auth problems, unavailable models, network timeouts, or 5xx errors. Atomic tries the requested primary model first, then configured fallbacks, and finally appends the current user-selected model as the last fallback candidate when available. The main chat and workflow stages share one failure classifier, so auth, model-availability, request-incompatibility, and transport signals are handled consistently. Cancellations, safety refusals, and task/tool failures are never retried on another model.
11
+
12
+ A candidate that cannot serve the current request — for example an HTTP 400/413/422 bad/unprocessable/payload-too-large request, an unsupported tool or parameter, a context-length/context-window overflow, or a `too large` / `invalid_request` error — is treated as request/context incompatible and the fallback sequence advances to the next candidate rather than stopping. This means that if none of the configured candidates are applicable to the request, Atomic falls back to the currently selected user model instead of failing outright.
13
+
14
+ Model fallback decisions use structured provider and attempt causes. There is no per-attempt idle watchdog, no child wall-clock kill cap, and no timeout-regex classification: a quiet provider response is allowed to finish, and only an explicit termination or provider failure supplies a retryable cause. Numeric process exit codes are not used as an outcome discriminator.
15
+
16
+ When registry availability shows that a known candidate provider has no configured auth, Atomic records a skipped model attempt before starting the in-process turn. Unknown/custom providers are still attempted, and the current user-selected model appended as the final fallback is never filtered out by this pre-admission check.
17
+
18
+ Fallbacks do not retry ordinary task failures, validation failures, tool failures, cancellations, or workflow-code errors. Because a fallback may send the same prompt and context to a different provider, choose models that match your cost, privacy, and data-handling requirements.
19
+
20
+ Each candidate can also carry its own reasoning effort — see [Reasoning levels](#reasoning-levels).
21
+
22
+ ## Reasoning levels
23
+
24
+ Set the reasoning (thinking) effort for each model candidate with a `model_name:thinking_effort` suffix on `model` and on every `fallbackModels` entry. Valid efforts are `off`, `minimal`, `low`, `medium`, `high`, `xhigh`, and `max` — the same shorthand used by `atomic --model sonnet:high`. `xhigh` and `max` are used only when the selected model's capability map supports them.
25
+
26
+ ```markdown
27
+ ---
28
+ name: deep-reviewer
29
+ description: Adversarial reviewer for risky diffs
30
+ tools: read, search, bash
31
+ model: anthropic/claude-sonnet-4:high
32
+ fallbackModels: openai/gpt-5:medium, anthropic/claude-haiku-4-5:off
33
+ ---
34
+ ```
35
+
36
+ Because the effort travels with each model string, every primary and fallback candidate is self-contained: a fallback can run at a different effort than the primary, so a high-effort primary degrades gracefully to a cheaper, lower-effort fallback.
37
+
38
+ **Migrate off the legacy `thinking` field.** The separate `thinking:` frontmatter field is deprecated. It still works as a default for any candidate that has no suffix, and a suffix always wins, but new agents should encode the effort directly on `model` and `fallbackModels`:
39
+
40
+ ```diff
41
+ -model: openai/gpt-5.5
42
+ -fallbackModels: anthropic/claude-opus-4-8
43
+ -thinking: xhigh
44
+ +model: openai/gpt-5.5:xhigh
45
+ +fallbackModels: anthropic/claude-opus-4-8:xhigh
46
+ ```
47
+
48
+ `fallbackThinkingLevels` exists only as an optional compatibility helper: it is aligned by index to `fallbackModels` and supplies a fallback candidate's effort only when that fallback entry has no suffix. Prefer suffixed model strings instead. Attempt metadata reports the resolved model and the effective reasoning effort used for each attempt.
49
+
50
+ ## Owner-bound task projection
51
+
52
+ Host adapters can construct an `OwnerTaskStore` from their existing supervisor and owner lease, check the `store.connect()` result, then call `bindOwnerTaskStore(session, store)` for that exact live session. Binding does not create or connect an owner. The store observes snapshot/cursor reconciliation and notifies already-mounted chats even when the producer binds lazily. Disposing the view does not cancel the owner. Reattachment uses existing identities rather than replaying launch tools.
53
+
54
+ Native task snapshots retain `wasBackground` once a designated observation yields, so a fresh projection can distinguish completed background work from foreground-only commands. Trusted hosts recover authentic command settlement receipts independently of the bounded event journal. Neither recovery path registers a new wait or restarts execution.
55
+
56
+ Main and workflow-stage chats use below-prompt background counts instead of persistent task rows in the transcript. Session replacement clears the previous owner's status before a replacement store binds. A workflow question retains the background count below its input area. Completion notifications use the same shared renderer in both chats.
57
+
58
+ Custom `ChatSessionHost` adapters can still use live task rows; set `taskRowsInChat: false` for footer-only status. Those rows show agent labels, state, duration, and bounded activity previews. Display-colliding labels get a stable short suffix derived from the task ID. Retention is at most 64 reports and 8 KiB of encoded preview records per task; omitted previews are labelled rather than presented as a complete transcript.
59
+
60
+ This is a host integration API above the SDK task foundation. Existing subagent and command producers are not automatically migrated by binding a projection. Full task transcript retrieval and `/tasks` navigation are separate integrations; unavailable transcript content is not inferred from activity reports.