@open-agent-toolkit/cli 0.2.65 → 0.2.67
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/assets/bundle-metadata.json +1 -1
- package/assets/docs/cli-utilities/configuration.md +33 -2
- package/assets/docs/cli-utilities/index.md +3 -0
- package/assets/docs/cli-utilities/project-log.md +63 -4
- package/assets/docs/cli-utilities/remote-project-management.md +191 -0
- package/assets/docs/contributing/code.md +8 -4
- package/assets/docs/contributing/skills.md +29 -17
- package/assets/docs/docs-tooling/commands.md +3 -1
- package/assets/docs/provider-sync/manifest-and-drift.md +2 -18
- package/assets/docs/reference/cli-reference.md +12 -1
- package/assets/docs/reference/file-locations.md +22 -0
- package/assets/docs/reference/oat-directory-structure.md +30 -17
- package/assets/docs/reference/troubleshooting.md +44 -0
- package/assets/docs/workflows/projects/lifecycle.md +17 -0
- package/assets/docs/workflows/projects/picking-up-projects.md +18 -0
- package/assets/docs/workflows/skills/index.md +33 -0
- package/assets/docs/workflows/skills/repo-improve.md +7 -3
- package/assets/public-package-versions.json +4 -4
- package/assets/skills/create-agnostic-skill/SKILL.md +19 -37
- package/assets/skills/create-agnostic-skill/references/docs/skills-guide.md +58 -15
- package/assets/skills/create-agnostic-skill/references/skill-template.md +17 -15
- package/assets/skills/oat-agent-instructions-apply/SKILL.md +1 -1
- package/assets/skills/oat-agent-instructions-apply/references/instruction-file-templates/glob-scoped-rule.md +1 -4
- package/assets/skills/oat-doctor/SKILL.md +3 -6
- package/assets/skills/oat-pjm-remote/SKILL.md +101 -0
- package/assets/skills/oat-pjm-remote/references/external-action-protocol.md +43 -0
- package/assets/skills/oat-project-autonomous/references/gate-inventory.md +1 -1
- package/assets/skills/oat-project-complete/SKILL.md +158 -30
- package/assets/skills/oat-project-complete/scripts/finalize-synced-archive.mjs +26 -7
- package/assets/skills/oat-project-complete/scripts/validate-durable-archive-receipt.mjs +183 -0
- package/assets/skills/oat-project-document/references/docs/autonomy-contract.md +1 -1
- package/assets/skills/oat-project-implement/references/docs/autonomy-contract.md +1 -1
- package/assets/skills/oat-project-lite/references/docs/autonomy-contract.md +1 -1
- package/assets/skills/oat-project-pr-final/references/docs/autonomy-contract.md +1 -1
- package/assets/skills/oat-project-quick-start/references/docs/autonomy-contract.md +1 -1
- package/assets/skills/oat-project-retro/SKILL.md +1 -1
- package/assets/skills/oat-project-retro/references/apply-procedure.md +11 -0
- package/assets/skills/oat-project-review-provide/SKILL.md +4 -4
- package/assets/skills/oat-project-summary/SKILL.md +24 -2
- package/assets/skills/oat-repo-improve/SKILL.md +9 -2
- package/assets/skills/oat-repo-improve/references/plan-template.md +4 -6
- package/assets/skills/oat-repo-knowledge-index/SKILL.md +11 -9
- package/assets/skills/oat-wave-execute/SKILL.md +20 -6
- package/assets/skills/oat-wave-program/SKILL.md +9 -4
- package/dist/commands/backlog/new.d.ts +1 -0
- package/dist/commands/backlog/new.d.ts.map +1 -1
- package/dist/commands/backlog/new.js +3 -1
- package/dist/commands/config/index.d.ts +3 -1
- package/dist/commands/config/index.d.ts.map +1 -1
- package/dist/commands/config/index.js +362 -36
- package/dist/commands/docs/index-generate/index.d.ts.map +1 -1
- package/dist/commands/docs/index-generate/index.js +68 -12
- package/dist/commands/docs/init/index.d.ts +11 -0
- package/dist/commands/docs/init/index.d.ts.map +1 -1
- package/dist/commands/docs/init/index.js +19 -1
- package/dist/commands/gate/index.d.ts.map +1 -1
- package/dist/commands/gate/index.js +10 -2
- package/dist/commands/instructions/instructions.utils.d.ts.map +1 -1
- package/dist/commands/instructions/instructions.utils.js +42 -9
- package/dist/commands/internal/validate-skill-version-bumps.d.ts.map +1 -1
- package/dist/commands/internal/validate-skill-version-bumps.js +5 -5
- package/dist/commands/pjm/doctor.d.ts +2 -0
- package/dist/commands/pjm/doctor.d.ts.map +1 -1
- package/dist/commands/pjm/doctor.js +71 -1
- package/dist/commands/pjm/index.d.ts +2 -0
- package/dist/commands/pjm/index.d.ts.map +1 -1
- package/dist/commands/pjm/index.js +3 -0
- package/dist/commands/pjm/remote/__integration__/lifecycle-harness.d.ts +60 -0
- package/dist/commands/pjm/remote/__integration__/lifecycle-harness.d.ts.map +1 -0
- package/dist/commands/pjm/remote/__integration__/lifecycle-harness.js +151 -0
- package/dist/commands/pjm/remote/association.d.ts +27 -0
- package/dist/commands/pjm/remote/association.d.ts.map +1 -0
- package/dist/commands/pjm/remote/association.js +68 -0
- package/dist/commands/pjm/remote/authority.d.ts +210 -0
- package/dist/commands/pjm/remote/authority.d.ts.map +1 -0
- package/dist/commands/pjm/remote/authority.js +341 -0
- package/dist/commands/pjm/remote/batch.d.ts +15 -0
- package/dist/commands/pjm/remote/batch.d.ts.map +1 -0
- package/dist/commands/pjm/remote/batch.js +126 -0
- package/dist/commands/pjm/remote/closeout.d.ts +69 -0
- package/dist/commands/pjm/remote/closeout.d.ts.map +1 -0
- package/dist/commands/pjm/remote/closeout.js +208 -0
- package/dist/commands/pjm/remote/create-binding.d.ts +62 -0
- package/dist/commands/pjm/remote/create-binding.d.ts.map +1 -0
- package/dist/commands/pjm/remote/create-binding.js +126 -0
- package/dist/commands/pjm/remote/credential-safety.d.ts +7 -0
- package/dist/commands/pjm/remote/credential-safety.d.ts.map +1 -0
- package/dist/commands/pjm/remote/credential-safety.js +21 -0
- package/dist/commands/pjm/remote/discussion.d.ts +49 -0
- package/dist/commands/pjm/remote/discussion.d.ts.map +1 -0
- package/dist/commands/pjm/remote/discussion.js +124 -0
- package/dist/commands/pjm/remote/doctor.d.ts +22 -0
- package/dist/commands/pjm/remote/doctor.d.ts.map +1 -0
- package/dist/commands/pjm/remote/doctor.js +380 -0
- package/dist/commands/pjm/remote/external-action.d.ts +208 -0
- package/dist/commands/pjm/remote/external-action.d.ts.map +1 -0
- package/dist/commands/pjm/remote/external-action.js +367 -0
- package/dist/commands/pjm/remote/host-execution.d.ts +28 -0
- package/dist/commands/pjm/remote/host-execution.d.ts.map +1 -0
- package/dist/commands/pjm/remote/host-execution.js +63 -0
- package/dist/commands/pjm/remote/index.d.ts +41 -0
- package/dist/commands/pjm/remote/index.d.ts.map +1 -0
- package/dist/commands/pjm/remote/index.js +280 -0
- package/dist/commands/pjm/remote/jira-adf.d.ts +35 -0
- package/dist/commands/pjm/remote/jira-adf.d.ts.map +1 -0
- package/dist/commands/pjm/remote/jira-adf.js +169 -0
- package/dist/commands/pjm/remote/lifecycle.d.ts +163 -0
- package/dist/commands/pjm/remote/lifecycle.d.ts.map +1 -0
- package/dist/commands/pjm/remote/lifecycle.js +224 -0
- package/dist/commands/pjm/remote/local-projection.d.ts +30 -0
- package/dist/commands/pjm/remote/local-projection.d.ts.map +1 -0
- package/dist/commands/pjm/remote/local-projection.js +95 -0
- package/dist/commands/pjm/remote/managed-markdown.d.ts +30 -0
- package/dist/commands/pjm/remote/managed-markdown.d.ts.map +1 -0
- package/dist/commands/pjm/remote/managed-markdown.js +128 -0
- package/dist/commands/pjm/remote/migrate.d.ts +14 -0
- package/dist/commands/pjm/remote/migrate.d.ts.map +1 -0
- package/dist/commands/pjm/remote/migrate.js +32 -0
- package/dist/commands/pjm/remote/operation-state.d.ts +15 -0
- package/dist/commands/pjm/remote/operation-state.d.ts.map +1 -0
- package/dist/commands/pjm/remote/operation-state.js +143 -0
- package/dist/commands/pjm/remote/outbound-projection-safety.d.ts +25 -0
- package/dist/commands/pjm/remote/outbound-projection-safety.d.ts.map +1 -0
- package/dist/commands/pjm/remote/outbound-projection-safety.js +99 -0
- package/dist/commands/pjm/remote/output.d.ts +60 -0
- package/dist/commands/pjm/remote/output.d.ts.map +1 -0
- package/dist/commands/pjm/remote/output.js +48 -0
- package/dist/commands/pjm/remote/preview.d.ts +88 -0
- package/dist/commands/pjm/remote/preview.d.ts.map +1 -0
- package/dist/commands/pjm/remote/preview.js +154 -0
- package/dist/commands/pjm/remote/provider-conformance.d.ts +13 -0
- package/dist/commands/pjm/remote/provider-conformance.d.ts.map +1 -0
- package/dist/commands/pjm/remote/provider-conformance.js +37 -0
- package/dist/commands/pjm/remote/provider.d.ts +57 -0
- package/dist/commands/pjm/remote/provider.d.ts.map +1 -0
- package/dist/commands/pjm/remote/provider.js +28 -0
- package/dist/commands/pjm/remote/providers/github-publication-safety.d.ts +46 -0
- package/dist/commands/pjm/remote/providers/github-publication-safety.d.ts.map +1 -0
- package/dist/commands/pjm/remote/providers/github-publication-safety.js +126 -0
- package/dist/commands/pjm/remote/providers/github.d.ts +207 -0
- package/dist/commands/pjm/remote/providers/github.d.ts.map +1 -0
- package/dist/commands/pjm/remote/providers/github.js +1456 -0
- package/dist/commands/pjm/remote/providers/jira.d.ts +245 -0
- package/dist/commands/pjm/remote/providers/jira.d.ts.map +1 -0
- package/dist/commands/pjm/remote/providers/jira.js +1650 -0
- package/dist/commands/pjm/remote/providers/linear.d.ts +182 -0
- package/dist/commands/pjm/remote/providers/linear.d.ts.map +1 -0
- package/dist/commands/pjm/remote/providers/linear.js +1289 -0
- package/dist/commands/pjm/remote/purpose-policy.d.ts +29 -0
- package/dist/commands/pjm/remote/purpose-policy.d.ts.map +1 -0
- package/dist/commands/pjm/remote/purpose-policy.js +118 -0
- package/dist/commands/pjm/remote/reconcile.d.ts +42 -0
- package/dist/commands/pjm/remote/reconcile.d.ts.map +1 -0
- package/dist/commands/pjm/remote/reconcile.js +101 -0
- package/dist/commands/pjm/remote/resolution.d.ts +122 -0
- package/dist/commands/pjm/remote/resolution.d.ts.map +1 -0
- package/dist/commands/pjm/remote/resolution.js +243 -0
- package/dist/commands/pjm/remote/schema.d.ts +9309 -0
- package/dist/commands/pjm/remote/schema.d.ts.map +1 -0
- package/dist/commands/pjm/remote/schema.js +1503 -0
- package/dist/commands/pjm/remote/service.d.ts +20 -0
- package/dist/commands/pjm/remote/service.d.ts.map +1 -0
- package/dist/commands/pjm/remote/service.js +5121 -0
- package/dist/commands/pjm/remote/shared-storage.d.ts +36 -0
- package/dist/commands/pjm/remote/shared-storage.d.ts.map +1 -0
- package/dist/commands/pjm/remote/shared-storage.js +110 -0
- package/dist/commands/pjm/remote/snapshot.d.ts +32 -0
- package/dist/commands/pjm/remote/snapshot.d.ts.map +1 -0
- package/dist/commands/pjm/remote/snapshot.js +140 -0
- package/dist/commands/pjm/remote/storage-locator.d.ts +29 -0
- package/dist/commands/pjm/remote/storage-locator.d.ts.map +1 -0
- package/dist/commands/pjm/remote/storage-locator.js +62 -0
- package/dist/commands/pjm/remote/store.d.ts +85 -0
- package/dist/commands/pjm/remote/store.d.ts.map +1 -0
- package/dist/commands/pjm/remote/store.js +553 -0
- package/dist/commands/pjm/remote/verification.d.ts +40 -0
- package/dist/commands/pjm/remote/verification.d.ts.map +1 -0
- package/dist/commands/pjm/remote/verification.js +100 -0
- package/dist/commands/project/dispatch-ceiling/index.d.ts.map +1 -1
- package/dist/commands/project/dispatch-ceiling/index.js +32 -18
- package/dist/commands/project/log/append.d.ts +48 -0
- package/dist/commands/project/log/append.d.ts.map +1 -1
- package/dist/commands/project/log/append.js +207 -30
- package/dist/commands/project/log/check.d.ts +87 -1
- package/dist/commands/project/log/check.d.ts.map +1 -1
- package/dist/commands/project/log/check.js +139 -5
- package/dist/commands/project/log/grammar.d.ts +165 -0
- package/dist/commands/project/log/grammar.d.ts.map +1 -1
- package/dist/commands/project/log/grammar.js +219 -1
- package/dist/commands/project/log/rollup.d.ts +16 -1
- package/dist/commands/project/log/rollup.d.ts.map +1 -1
- package/dist/commands/project/log/rollup.js +22 -2
- package/dist/commands/project/log/synthesize.d.ts +16 -0
- package/dist/commands/project/log/synthesize.d.ts.map +1 -1
- package/dist/commands/project/log/synthesize.js +85 -9
- package/dist/commands/status/index.d.ts.map +1 -1
- package/dist/commands/status/index.js +24 -2
- package/dist/commands/sync/apply.d.ts.map +1 -1
- package/dist/commands/sync/apply.js +6 -4
- package/dist/commands/tools/shared/pack-manifest.d.ts.map +1 -1
- package/dist/commands/tools/shared/pack-manifest.js +1 -0
- package/dist/config/dispatch-matrix.d.ts.map +1 -1
- package/dist/config/dispatch-matrix.js +13 -5
- package/dist/config/oat-config.d.ts +41 -0
- package/dist/config/oat-config.d.ts.map +1 -1
- package/dist/config/oat-config.js +247 -9
- package/dist/config/own-keys.d.ts +22 -0
- package/dist/config/own-keys.d.ts.map +1 -0
- package/dist/config/own-keys.js +32 -0
- package/dist/config/resolve.d.ts +11 -0
- package/dist/config/resolve.d.ts.map +1 -1
- package/dist/config/resolve.js +35 -11
- package/dist/config/sync-config.d.ts.map +1 -1
- package/dist/config/sync-config.js +16 -0
- package/dist/drift/detector.d.ts.map +1 -1
- package/dist/drift/detector.js +52 -1
- package/dist/drift/skill-view-diagnostic.d.ts.map +1 -1
- package/dist/drift/skill-view-diagnostic.js +2 -23
- package/dist/engine/compute-plan.d.ts.map +1 -1
- package/dist/engine/compute-plan.js +22 -72
- package/dist/engine/managed-copy-hash.d.ts +69 -0
- package/dist/engine/managed-copy-hash.d.ts.map +1 -0
- package/dist/engine/managed-copy-hash.js +175 -0
- package/dist/fs/assets.d.ts +11 -0
- package/dist/fs/assets.d.ts.map +1 -1
- package/dist/fs/assets.js +1 -1
- package/dist/manifest/hash.d.ts +110 -0
- package/dist/manifest/hash.d.ts.map +1 -1
- package/dist/manifest/hash.js +111 -13
- package/dist/providers/ceiling/registry.d.ts.map +1 -1
- package/dist/providers/ceiling/registry.js +6 -1
- package/dist/providers/identity/dispatch-report.d.ts.map +1 -1
- package/dist/providers/identity/dispatch-report.js +4 -1
- package/dist/release/public-package-contract.d.ts.map +1 -1
- package/dist/release/public-package-contract.js +21 -0
- package/dist/validation/skills.d.ts.map +1 -1
- package/dist/validation/skills.js +305 -40
- package/package.json +2 -2
|
@@ -82,10 +82,32 @@ Config ownership note:
|
|
|
82
82
|
- Runtime sync state: `.oat/sync/`
|
|
83
83
|
- Repo knowledge: `.oat/repo/knowledge/`
|
|
84
84
|
- Active PJM operational layer: `.oat/repo/pjm/` (`current-state.md`, `roadmap.md`, `backlog/`)
|
|
85
|
+
- Shared backlog remote-binding metadata: `.oat/repo/pjm/remote/bindings/`
|
|
85
86
|
- Durable repo references: `.oat/repo/reference/` (file-per-record decisions under `decisions/`)
|
|
86
87
|
- Repo reviews: `.oat/repo/reviews/`
|
|
87
88
|
- Repo archive: `.oat/repo/archive/`
|
|
88
89
|
|
|
90
|
+
### Remote PJM binding and operation state
|
|
91
|
+
|
|
92
|
+
Remote binding metadata follows the local owner:
|
|
93
|
+
|
|
94
|
+
- shared backlog bindings: `.oat/repo/pjm/remote/bindings/`
|
|
95
|
+
- shared or synced project bindings: `<project>/remote/bindings/`
|
|
96
|
+
- local project bindings: the local operational store's `metadata/bindings/`
|
|
97
|
+
|
|
98
|
+
Operational snapshots, journals, batches, and receipts default to
|
|
99
|
+
`<git-common-dir>/oat/pjm-remote/<repository-fingerprint>/`. Git linked
|
|
100
|
+
worktrees resolve the same common directory and therefore share this local
|
|
101
|
+
state. A separate clone has a different Git directory and begins without the
|
|
102
|
+
first clone's operational snapshot; run `oat pjm remote refresh` through a live
|
|
103
|
+
host capability before relying on remote freshness.
|
|
104
|
+
|
|
105
|
+
When shared state is explicitly previewed and approved,
|
|
106
|
+
`.oat/repo/pjm/remote/state/` or `<project>/remote/state/` replaces the local
|
|
107
|
+
operational root. Shared state can contain remote planning content and is not
|
|
108
|
+
available for local projects. See
|
|
109
|
+
[Remote Project Management](../cli-utilities/remote-project-management.md).
|
|
110
|
+
|
|
89
111
|
## Project artifact trees
|
|
90
112
|
|
|
91
113
|
- Shared: `.oat/projects/shared/<project>/`
|
|
@@ -38,6 +38,9 @@ Project scope is used for project workflows and repo-local sync state. User scop
|
|
|
38
38
|
repo/
|
|
39
39
|
knowledge/
|
|
40
40
|
pjm/
|
|
41
|
+
remote/
|
|
42
|
+
bindings/
|
|
43
|
+
state/
|
|
41
44
|
reference/
|
|
42
45
|
reviews/
|
|
43
46
|
archive/
|
|
@@ -45,16 +48,16 @@ Project scope is used for project workflows and repo-local sync state. User scop
|
|
|
45
48
|
|
|
46
49
|
## Top-level entries
|
|
47
50
|
|
|
48
|
-
| Path | Purpose | Notes
|
|
49
|
-
| ------------------------ | --------------------------------------------------- |
|
|
50
|
-
| `.oat/config.json` | Shared repo runtime config for non-sync settings | Includes `worktrees.root`, `projects.root`, `git.defaultBranch`, `archive.*`, and `
|
|
51
|
-
| `.oat/config.local.json` | Local per-developer runtime state | Gitignored; includes `activeProject`, `lastPausedProject`, `activeIdea`
|
|
52
|
-
| `.oat/state.md` | Generated repo state dashboard | Gitignored; rebuilt with `oat state refresh` from config, project artifacts, and knowledge metadata
|
|
53
|
-
| `.oat/projects/` | OAT project artifacts | `shared`, `synced`, `local`, and lifecycle `archived` locations
|
|
54
|
-
| `.oat/ideas/` | Project-level ideas store | Often gitignored
|
|
55
|
-
| `.oat/sync/` | Interop sync state/config | See details below
|
|
56
|
-
| `.oat/templates/` | Artifact templates used by OAT skills | Source for scaffolding. Includes `docs-app-fuma/` (Fumadocs) and `docs-app-mkdocs/` (MkDocs) templates.
|
|
57
|
-
| `.oat/repo/` | Repo-level PJM/knowledge/reference/review artifacts | Active PJM state under `pjm/`; durable references (including decisions) under `reference/`
|
|
51
|
+
| Path | Purpose | Notes |
|
|
52
|
+
| ------------------------ | --------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------- |
|
|
53
|
+
| `.oat/config.json` | Shared repo runtime config for non-sync settings | Includes `worktrees.root`, `projects.root`, `git.defaultBranch`, `archive.*`, `documentation.*`, and `pjm.remote.*` |
|
|
54
|
+
| `.oat/config.local.json` | Local per-developer runtime state | Gitignored; includes `activeProject`, `lastPausedProject`, `activeIdea` |
|
|
55
|
+
| `.oat/state.md` | Generated repo state dashboard | Gitignored; rebuilt with `oat state refresh` from config, project artifacts, and knowledge metadata |
|
|
56
|
+
| `.oat/projects/` | OAT project artifacts | `shared`, `synced`, `local`, and lifecycle `archived` locations |
|
|
57
|
+
| `.oat/ideas/` | Project-level ideas store | Often gitignored |
|
|
58
|
+
| `.oat/sync/` | Interop sync state/config | See details below |
|
|
59
|
+
| `.oat/templates/` | Artifact templates used by OAT skills | Source for scaffolding. Includes `docs-app-fuma/` (Fumadocs) and `docs-app-mkdocs/` (MkDocs) templates. |
|
|
60
|
+
| `.oat/repo/` | Repo-level PJM/knowledge/reference/review artifacts | Active PJM state under `pjm/`; durable references (including decisions) under `reference/` |
|
|
58
61
|
|
|
59
62
|
## `.oat/sync/` details
|
|
60
63
|
|
|
@@ -283,8 +286,17 @@ Typical contents:
|
|
|
283
286
|
reviews/
|
|
284
287
|
pr/
|
|
285
288
|
references/
|
|
289
|
+
remote/
|
|
290
|
+
bindings/
|
|
291
|
+
state/
|
|
286
292
|
```
|
|
287
293
|
|
|
294
|
+
The `remote/bindings/` directory is portable metadata for shared and synced
|
|
295
|
+
projects. `remote/state/` exists only after approved shared-storage promotion.
|
|
296
|
+
With the default local storage policy, operational state instead lives under
|
|
297
|
+
`<git-common-dir>/oat/pjm-remote/<repository-fingerprint>/`, outside `.oat/`.
|
|
298
|
+
Linked worktrees share that location; independent clones do not.
|
|
299
|
+
|
|
288
300
|
### Core artifact roles
|
|
289
301
|
|
|
290
302
|
| File | Purpose |
|
|
@@ -310,13 +322,14 @@ Not all workflow modes require every artifact:
|
|
|
310
322
|
|
|
311
323
|
## `.oat/repo/` structure
|
|
312
324
|
|
|
313
|
-
| Path
|
|
314
|
-
|
|
|
315
|
-
| `.oat/repo/knowledge/`
|
|
316
|
-
| `.oat/repo/pjm/`
|
|
317
|
-
| `.oat/repo/
|
|
318
|
-
| `.oat/repo/
|
|
319
|
-
| `.oat/repo/
|
|
325
|
+
| Path | Purpose |
|
|
326
|
+
| ----------------------- | ---------------------------------------------------------------------------------------- |
|
|
327
|
+
| `.oat/repo/knowledge/` | Generated codebase knowledge indexes |
|
|
328
|
+
| `.oat/repo/pjm/` | Active operational PJM layer (`current-state.md`, `roadmap.md`, and `backlog/`) |
|
|
329
|
+
| `.oat/repo/pjm/remote/` | Portable backlog binding metadata and, only when approved, shared operational state |
|
|
330
|
+
| `.oat/repo/reference/` | Durable append-mostly references, including file-per-record decisions under `decisions/` |
|
|
331
|
+
| `.oat/repo/reviews/` | Repo-scoped review artifacts (ad-hoc/non-project) |
|
|
332
|
+
| `.oat/repo/archive/` | Archived repo-level artifacts |
|
|
320
333
|
|
|
321
334
|
Canonical project-management repo-reference surface splits the active
|
|
322
335
|
operational layer (`pjm/`) from durable references (`reference/`):
|
|
@@ -264,6 +264,50 @@ managed default itself:
|
|
|
264
264
|
oat tools update --pack project-management --scope user
|
|
265
265
|
```
|
|
266
266
|
|
|
267
|
+
## A remote PJM command is pending, uncertain, or blocked
|
|
268
|
+
|
|
269
|
+
Read the JSON envelope before retrying:
|
|
270
|
+
|
|
271
|
+
```bash
|
|
272
|
+
oat pjm remote doctor --json
|
|
273
|
+
```
|
|
274
|
+
|
|
275
|
+
Before the first provider-contacting command, discover a matching live
|
|
276
|
+
connector. If no capable connector exists, inspect an already configured
|
|
277
|
+
provider CLI's live help. Construct only bounded provider-neutral capability
|
|
278
|
+
evidence and supply it through `--capability-evidence-stdin`.
|
|
279
|
+
|
|
280
|
+
- `pending` with `externalAction` means OAT durably prepared one exact semantic
|
|
281
|
+
host action. Confirm the previously selected capability remains granted,
|
|
282
|
+
execute that exact action at most once, then submit one bounded observation
|
|
283
|
+
through `oat pjm remote operation continue`.
|
|
284
|
+
- `uncertain` means an effect may have occurred. Follow the envelope's recovery
|
|
285
|
+
instructions; never repeat a create or update blindly.
|
|
286
|
+
- `needs-review` requires an explicit reconciliation choice.
|
|
287
|
+
- `blocked` means policy, approval, capability, lifecycle state, or outbound
|
|
288
|
+
safety prevented the action. Do not bypass the gate or broaden the field
|
|
289
|
+
projection.
|
|
290
|
+
|
|
291
|
+
Only an `ok` envelope after authoritative read-back is remote success. Native
|
|
292
|
+
provider output, a zero process exit, or a visible remote change is not.
|
|
293
|
+
|
|
294
|
+
## A clone or worktree has unexpected remote PJM state
|
|
295
|
+
|
|
296
|
+
Linked worktrees share default local operational state through the Git common
|
|
297
|
+
directory. If one worktree has a pending operation, inspect or continue it
|
|
298
|
+
instead of starting a competing action elsewhere.
|
|
299
|
+
|
|
300
|
+
Independent clones do not share that local store. In a fresh clone, use
|
|
301
|
+
portable binding metadata plus `oat pjm remote refresh` through a matching live
|
|
302
|
+
host capability before treating snapshots as current. Offline, doctor and
|
|
303
|
+
migration remain available, but commands requiring remote freshness stay
|
|
304
|
+
pending or blocked.
|
|
305
|
+
|
|
306
|
+
If the repository opted into `.oat/repo/pjm/remote/state/` or
|
|
307
|
+
`<project>/remote/state/`, remember that shared operational storage may contain
|
|
308
|
+
remote planning content visible to repository readers. Promotion requires an
|
|
309
|
+
exact persisted preview and fresh approval; local projects cannot use it.
|
|
310
|
+
|
|
267
311
|
## `--scope all` fails outside a Git repository
|
|
268
312
|
|
|
269
313
|
It should not. `oat status --scope all` and `oat doctor --scope all` complete
|
|
@@ -113,6 +113,15 @@ and retro is not added to the lite closeout sequence.
|
|
|
113
113
|
On completion, OAT treats archive handling as an explicit closeout choice:
|
|
114
114
|
|
|
115
115
|
- When archiving is selected, the local archive is written to `.oat/projects/archived/<project>/`.
|
|
116
|
+
- Every completion that will actually archive — any durable (`shared` or
|
|
117
|
+
`synced`) project with archive selected — keeps the `activeProject` pointer
|
|
118
|
+
until the archive returns a validated receipt, and only then clears it.
|
|
119
|
+
`local` projects are never durable and never archive, so they clear the
|
|
120
|
+
pointer immediately, as does any completion that declines archive. An archive
|
|
121
|
+
failure therefore leaves the pointer intact and the completion directly
|
|
122
|
+
resumable. See
|
|
123
|
+
[Picking Up a Project](picking-up-projects.md#archive-contents) for the
|
|
124
|
+
post-archive resume and its manual recovery path.
|
|
116
125
|
- When archiving is disabled or declined, durable projects remain at their
|
|
117
126
|
active path. Synced completion still finalizes and pushes the project ref,
|
|
118
127
|
commits the discovery record as `complete`, retains the checkout and ref, and
|
|
@@ -183,6 +192,14 @@ each finding as a `deferred advisory` warning and continues, a project with no l
|
|
|
183
192
|
final completion summary, and a resumed completion whose log already
|
|
184
193
|
carries a seal runs report-only and appends nothing.
|
|
185
194
|
|
|
195
|
+
A resume detects that seal from `oat project log check`, which reports a
|
|
196
|
+
`sealed` field, rather than by re-reading the log. The invariant is enforced in
|
|
197
|
+
the CLI: replaying the seal reports `already-appended` and leaves exactly one
|
|
198
|
+
seal entry; a replay recognized by its own idempotency key reports
|
|
199
|
+
`already-appended` even on a sealed log (nothing is appended), and every
|
|
200
|
+
append carrying new content is refused with `status: "sealed"` and a non-zero
|
|
201
|
+
exit.
|
|
202
|
+
|
|
186
203
|
Repositories that never adopted PJM skip the sweep with a one-line note. A
|
|
187
204
|
missing planning surface degrades the sweep, never the closeout.
|
|
188
205
|
|
|
@@ -99,6 +99,24 @@ If closeout is interrupted after terminal archive identity exists, rerun
|
|
|
99
99
|
completion so it can resume from the completed ref and archive metadata. Do not
|
|
100
100
|
use `pull` or `open` to recreate an active record or checkout.
|
|
101
101
|
|
|
102
|
+
For a `shared` project, archive moves the project into
|
|
103
|
+
`.oat/projects/archived/<project>/` and removes the source directory, while
|
|
104
|
+
completion keeps the `activeProject` pointer until the receipt validates.
|
|
105
|
+
Rerunning completion after an interruption between the archive and that clear
|
|
106
|
+
recognizes exactly this state — the pointer names a source directory that no
|
|
107
|
+
longer exists and the archive carries `oat_lifecycle: complete` plus the
|
|
108
|
+
`Lifecycle complete; archived locally` phase marker — so it validates the
|
|
109
|
+
discovered archive and clears the pointer without archiving a second time or
|
|
110
|
+
sealing the project log again. An interruption before the archive leaves the
|
|
111
|
+
source directory in place, so completion simply reruns from the start and skips
|
|
112
|
+
the work it already finished.
|
|
113
|
+
|
|
114
|
+
If the archive cannot be discovered — the source directory is gone and either
|
|
115
|
+
no archived project or several match the name — completion stops and leaves the
|
|
116
|
+
pointer untouched. Recover manually: locate the archive directory under
|
|
117
|
+
`.oat/projects/archived/`, confirm `oat_lifecycle: complete` in its `state.md`,
|
|
118
|
+
then clear the pointer with `oat config set activeProject ""`.
|
|
119
|
+
|
|
102
120
|
## Related
|
|
103
121
|
|
|
104
122
|
- [Reviewing OAT PRs](reviewing-oat-prs.md)
|
|
@@ -31,6 +31,10 @@ Use this section when you want to choose the right OAT skill for a task. If you
|
|
|
31
31
|
[Project Retrospectives](../projects/retro.md).
|
|
32
32
|
- Capture a scoped, shippable backlog item: `oat-pjm-add-backlog-item` directly when the work is already scoped, or `oat-brainstorm` when the thought hasn't converged yet — the brainstorm dispatcher's "scoped backlog item" destination pre-fills the title / description / acceptance criteria / scope estimate / priority from the conversation and then runs `oat-pjm-add-backlog-item` with confirmed inputs
|
|
33
33
|
- Manage the repo backlog and reference docs: `oat-pjm-update-repo-reference`, `oat-pjm-review-backlog`
|
|
34
|
+
- Operate an explicit GitHub, Linear, or Jira planning-record binding through a
|
|
35
|
+
live host capability: `oat-pjm-remote`. The OAT CLI retains policy, preview,
|
|
36
|
+
approval, journal, and verification authority; the skill discovers and
|
|
37
|
+
invokes only the exact host action emitted for one durable operation.
|
|
34
38
|
- Turn a repo audit, maintainability review, backlog review, backlog directory, or backlog item into standalone external implementation plans: `oat-repo-improve`. Plans land under `.oat/repo/reference/external-plans/`; execute them directly or optionally pass one to `oat-project-import-plan` for tracked OAT execution.
|
|
35
39
|
- Choose what to delegate and route bounded work by task class across Codex, Claude, or Cursor: `subagent-orchestration`. It is self-contained and usable without OAT; live catalogs and current instructions take precedence over its dated provider examples.
|
|
36
40
|
- Build visual project explainers and final project recaps: `oat-explainer-kit`, backed by the destination-neutral `explainer-kit` core. See [Explainer Kit](explainer-kit.md).
|
|
@@ -46,6 +50,34 @@ Use this section when you want to choose the right OAT skill for a task. If you
|
|
|
46
50
|
- Capture or refine ideas: `oat-idea-new` (capture a new idea), `oat-idea-ideate` (resume an existing tracked idea or expand a scratchpad seed — not for blank-slate brainstorms; use `oat-brainstorm` for those), `oat-idea-scratchpad`, `oat-idea-summarize`
|
|
47
51
|
- Run a project-independent brainstorming conversation: `oat-brainstorm` — entry point with an explicit activation contract. Hard Activation fires only on the `brainstorm` verb ("let's brainstorm", "brainstorm this", "can we brainstorm X", "help me brainstorm X", or `/oat-brainstorm`); ambiguous exploratory phrasing answers conversationally without the banner and offers structured mode only after sustained exploration. Once entered, runs a structured design conversation (one question at a time, 2-3 approaches with a recommendation) and routes to inline / doc-to-path / idea / backlog item / project handoffs based on installed packs. See [Tool Packs](../../cli-utilities/tool-packs.md) for the brainstorm pack details.
|
|
48
52
|
|
|
53
|
+
## Remote host execution loop
|
|
54
|
+
|
|
55
|
+
Use `oat-pjm-remote` only for an explicit remote lifecycle request. Its loop is
|
|
56
|
+
deliberately narrow:
|
|
57
|
+
|
|
58
|
+
1. Before the first provider-contacting command, inspect currently granted MCP
|
|
59
|
+
or connector descriptions for a semantic and exact-context match.
|
|
60
|
+
2. If no capable connector is available, inspect an already configured
|
|
61
|
+
provider CLI's live help before the first attempt. Do not install a tool,
|
|
62
|
+
retain its dialect, or switch execution surfaces mid-attempt.
|
|
63
|
+
3. Construct only bounded provider-neutral capability evidence and pass it to
|
|
64
|
+
the requested command with `--capability-evidence-stdin`. Treat the CLI's
|
|
65
|
+
policy, preview, approval, safety, and durable state as authoritative.
|
|
66
|
+
4. When the CLI returns `pending` with `externalAction`, execute that exact
|
|
67
|
+
semantic action at most once and submit one bounded,
|
|
68
|
+
sanitized observation with `oat pjm remote operation continue`.
|
|
69
|
+
5. Continue only when the CLI emits another exact action for the same durable
|
|
70
|
+
operation. Stop on its terminal envelope.
|
|
71
|
+
|
|
72
|
+
The skill cannot broaden the normalized projection, bypass effective policy,
|
|
73
|
+
binding clamps, purpose field grants, hard approval floors, or caller-owned
|
|
74
|
+
authority evidence, read credential values, persist native provider data, or
|
|
75
|
+
declare remote success. A connector result, process exit, or visible remote
|
|
76
|
+
change is only evidence. Success requires an OAT `ok` envelope after
|
|
77
|
+
authoritative read-back.
|
|
78
|
+
See [Remote Project Management](../../cli-utilities/remote-project-management.md)
|
|
79
|
+
for policy, storage, approval, and recovery details.
|
|
80
|
+
|
|
49
81
|
## If You Are Trying To...
|
|
50
82
|
|
|
51
83
|
- choose the right skill for a task, stay in this guide page
|
|
@@ -122,6 +154,7 @@ Use this section when you want to choose the right OAT skill for a task. If you
|
|
|
122
154
|
- `oat-pjm-add-backlog-item`
|
|
123
155
|
- `oat-pjm-update-repo-reference`
|
|
124
156
|
- `oat-pjm-review-backlog`
|
|
157
|
+
- `oat-pjm-remote`
|
|
125
158
|
- `docs-completed-projects-gap-review`
|
|
126
159
|
|
|
127
160
|
=== "Research"
|
|
@@ -72,9 +72,13 @@ Failure to publish a backlog item or issue does not invalidate a successfully wr
|
|
|
72
72
|
|
|
73
73
|
Full repository audits use bounded read-only reconnaissance while the root
|
|
74
74
|
agent retains classification, vetting, prioritization, cross-lane synthesis,
|
|
75
|
-
and plan writing.
|
|
76
|
-
|
|
77
|
-
|
|
75
|
+
and plan writing. Plan writes never move below the caller's model class — a
|
|
76
|
+
parallelized author runs on the caller's model and every plan is
|
|
77
|
+
caller-reviewed before publication or wave composition; the
|
|
78
|
+
`keeps external-plan writes on the caller's model class` case in
|
|
79
|
+
`skills-bundled-docs-contract.test.ts` is the backstop. Before launch, the
|
|
80
|
+
caller loads the durable task classes and model-selection principles from
|
|
81
|
+
`subagent-orchestration` plus exactly one active-provider selection reference.
|
|
78
82
|
|
|
79
83
|
The internal `oat-dispatch-subagents` skill then owns capability checks, live
|
|
80
84
|
catalog intersection, exact route selection, launch acceptance, recovery, and
|
|
@@ -6,7 +6,7 @@ disable-model-invocation: true
|
|
|
6
6
|
allowed-tools: Read, Write, Bash, Glob, Grep, AskUserQuestion
|
|
7
7
|
user-invocable: true
|
|
8
8
|
metadata:
|
|
9
|
-
version: 1.
|
|
9
|
+
version: 1.5.0
|
|
10
10
|
---
|
|
11
11
|
|
|
12
12
|
# Create Skill
|
|
@@ -69,7 +69,7 @@ If not provided in arguments, ask for:
|
|
|
69
69
|
**The context window is a shared resource.** Skills share context with everything else the agent needs. Structure information in three levels:
|
|
70
70
|
|
|
71
71
|
1. **Metadata** (~100 words): Name + description in frontmatter, always loaded
|
|
72
|
-
2. **SKILL.md body** (
|
|
72
|
+
2. **SKILL.md body** (~5,000 tokens): Loads when skill triggers
|
|
73
73
|
3. **Bundled resources**: Files in `references/`, `scripts/`, `assets/` loaded as-needed
|
|
74
74
|
|
|
75
75
|
**Writing principles:**
|
|
@@ -172,11 +172,12 @@ Natural language request that triggers this skill
|
|
|
172
172
|
**Frontmatter notes:**
|
|
173
173
|
|
|
174
174
|
- `argument-hint`, `allowed-tools`, `user-invocable`, `context`, `hooks` are Claude Code specific
|
|
175
|
-
-
|
|
175
|
+
- `allowed-tools`: write the value as a **comma-separated** list. The spec's own example is space-delimited and OAT never parses the separator — `validateOatSkills` in `packages/cli/src/validation/skills.ts` only checks that the key is present, and `getToolDetail` in `packages/cli/src/commands/tools/info/index.ts` reads the raw scalar — so this is OAT's authoring convention rather than a runtime contract. Backstop: `it('declares allowed-tools as a comma-separated list in every canonical skill')` in `packages/cli/src/validation/skills.test.ts`
|
|
176
|
+
- The spec defines a fixed field set, and providers differ in which extension fields they read. An unread field is inert rather than guaranteed harmless, so check the dated compatibility section of `references/docs/skills-guide.md` for the per-provider picture before depending on one
|
|
176
177
|
- `name`: max 64 chars for cross-provider portability (Codex allows 100, but 64 is the spec limit)
|
|
177
178
|
- `metadata.version`: include valid semver and start new skills at `1.0.0`. The Agent Skills specification puts the version under `metadata`, and OAT resolves `metadata.version` first and the top-level `version` second — `resolveSkillVersion` in `packages/cli/src/commands/shared/frontmatter.ts` owns that order, backstopped by `packages/cli/src/commands/shared/frontmatter.test.ts`
|
|
178
|
-
- `version` (top-level): the deprecated alias, still read when `metadata.version` is absent.
|
|
179
|
-
- `description`: **single line, ≤ 500 chars
|
|
179
|
+
- `version` (top-level): the deprecated alias, still read when `metadata.version` is absent — but a skill whose only version is that alias no longer validates. `validateOatSkills` in `packages/cli/src/validation/skills.ts` reports it as `skill-version-alias` at `severity: 'error'`, so `pnpm oat:validate-skills` fails the skill outright; the pass runs over every skill directory, not just `oat-*`, so an agnostic skill is covered too. Backstop: `it('reports exactly once for a non-oat-* alias-only skill')` in `packages/cli/src/validation/skills.test.ts`. Setting both to different values is the separate `skill-version-conflict` error: OAT reports the conflict, skill validation fails on it, and canonical role identity rejects it. Declare `metadata.version` and leave the alias out
|
|
180
|
+
- `description`: **single line, ≤ 500 chars**. This is OAT's house rule, not a provider requirement: `validateOatSkills` in `packages/cli/src/validation/skills.ts` enforces it only for skills whose directory name starts with `oat-`. For every other skill it is an unenforced authoring convention this repository follows for portability. Backstops in `packages/cli/src/validation/skills.test.ts`: `it('reports description longer than 500 characters')` and `it('does not report a description longer than 500 characters for a non-oat-* skill')`. The spec allows 1024
|
|
180
181
|
- Bump `metadata.version` on future edits: patch for fixes/clarifications, minor for backward-compatible behavior additions, major for breaking workflow/interface changes
|
|
181
182
|
|
|
182
183
|
**Writing the `description` field:**
|
|
@@ -194,7 +195,7 @@ Examples:
|
|
|
194
195
|
- Bad: "Reviews code by checking spec compliance, then code quality, then creates PR"
|
|
195
196
|
- Good: "Use when reviewing code or checking PRs. Systematic quality and security analysis."
|
|
196
197
|
|
|
197
|
-
Present the plan and
|
|
198
|
+
Present the plan and ask once for approval, stating the approval scope: it covers the skill directory, its `SKILL.md`, and the supporting files this plan named, for the rest of this run. Re-ask only if the file set changes. If the user declines, stop before creating any file and report the plan instead.
|
|
198
199
|
|
|
199
200
|
### Step 4: Create Skill File
|
|
200
201
|
|
|
@@ -231,18 +232,21 @@ Skills can include supporting files in subdirectories:
|
|
|
231
232
|
|
|
232
233
|
### Step 5: Sync and Verify
|
|
233
234
|
|
|
234
|
-
|
|
235
|
+
If the repository uses OAT sync, refresh the provider views for this repository only:
|
|
235
236
|
|
|
236
237
|
```bash
|
|
237
|
-
oat sync
|
|
238
|
+
oat sync --scope project
|
|
238
239
|
```
|
|
239
240
|
|
|
241
|
+
A bare `oat sync` defaults to `--scope all`, which also rewrites the invoking user's home-scope provider
|
|
242
|
+
directories. `withScopeOption` in `packages/cli/src/commands/shared/scope-option.ts` owns that default, and `it('sync --help matches snapshot')` in `packages/cli/src/commands/help-snapshots.test.ts` is its backstop.
|
|
243
|
+
|
|
240
244
|
Verify:
|
|
241
245
|
|
|
242
246
|
- File created at `.agents/skills/{skill-name}/SKILL.md`
|
|
243
247
|
- Frontmatter syntax is valid
|
|
244
248
|
- Frontmatter includes valid semver `metadata.version:` (new skills start at `1.0.0`)
|
|
245
|
-
- Skill
|
|
249
|
+
- Skill resolves through the provider views after a scoped sync — check with `oat tools info {skill-name}` or the provider's own skill list
|
|
246
250
|
- Examples include both invocation styles
|
|
247
251
|
- If the skill name starts with `oat-`, run `pnpm oat:validate-skills` and fix any findings
|
|
248
252
|
|
|
@@ -268,7 +272,7 @@ Provide:
|
|
|
268
272
|
- **Context window is a public good**—keep skills lean, challenge every paragraph
|
|
269
273
|
- Description is the trigger—include "when to use" in frontmatter, not just body
|
|
270
274
|
- Bump `metadata.version` for edits: patch = fixes/clarifications, minor = backward-compatible additions, major = breaking changes
|
|
271
|
-
- Keep SKILL.md **under 500 lines / ~5,000 tokens**
|
|
275
|
+
- Keep SKILL.md **under 500 lines / ~5,000 tokens** — OAT's authoring budget, not a specification limit; see the dated provider-compatibility section of `references/docs/skills-guide.md` for what each provider documents
|
|
272
276
|
- Use clear, task-based headings
|
|
273
277
|
- Include working examples for both invocation styles
|
|
274
278
|
- Document all arguments with defaults
|
|
@@ -289,7 +293,7 @@ Skills that need user decisions (parameter choices, confirmations, disambiguatio
|
|
|
289
293
|
|
|
290
294
|
Do **not** hard-code a specific Codex question tool name in skill prose unless the runtime contract is guaranteed. Prefer capability-based wording ("structured user-input tooling when available") so the skill remains portable across Codex hosts.
|
|
291
295
|
|
|
292
|
-
**Claude Code enhancement:** Add `AskUserQuestion` to `allowed-tools` in frontmatter. Claude Code renders these as structured UI prompts with selectable options, headers, and multi-select support.
|
|
296
|
+
**Claude Code enhancement:** Add `AskUserQuestion` to `allowed-tools` in frontmatter. Claude Code renders these as structured UI prompts with selectable options, headers, and multi-select support. Providers that do not read `allowed-tools` handle the same instructions as conversational questions; treat the field as having no effect there rather than as universally supported, and check the dated compatibility matrix in `references/docs/skills-guide.md`.
|
|
293
297
|
|
|
294
298
|
**When to include interactive input:**
|
|
295
299
|
|
|
@@ -374,32 +378,11 @@ For multi-step skills, print brief progress updates so the user knows what's hap
|
|
|
374
378
|
|
|
375
379
|
### Frontmatter Reference
|
|
376
380
|
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
| Field | Spec | Claude Code | Cursor | Codex CLI | Gemini CLI |
|
|
380
|
-
| -------------------------- | --------------- | ----------- | ------ | ----------- | ---------- |
|
|
381
|
-
| `name` | ✅ required | ✅ | ✅ | ✅ required | ✅ |
|
|
382
|
-
| `description` | ✅ required | ✅ | ✅ | ✅ required | ✅ |
|
|
383
|
-
| `license` | ✅ optional | ❓ | ✅ | 💤 | ❓ |
|
|
384
|
-
| `compatibility` | ✅ optional | ❓ | ✅ | 💤 | ❓ |
|
|
385
|
-
| `metadata` | ✅ optional | ❓ | ✅ | 💤 | ❓ |
|
|
386
|
-
| `allowed-tools` | ⚠️ experimental | ✅ | ❓ | 💤 | ❓ |
|
|
387
|
-
| `disable-model-invocation` | ❌ | ✅ | ✅ | 💤 | ❓ |
|
|
388
|
-
| `user-invocable` | ❌ | ✅ | ❓ | 💤 | ❓ |
|
|
389
|
-
| `argument-hint` | ❌ | ✅ | ❓ | 💤 | ❓ |
|
|
390
|
-
| `context` / `agent` | ❌ | ✅ | ❌ | 💤 | ❓ |
|
|
391
|
-
| `hooks` | ❌ | ✅ | ❌ | 💤 | ❓ |
|
|
392
|
-
|
|
393
|
-
**Key takeaway:** `name` + `description` are the only truly portable interface. Codex ignores unknown keys (safe to include Claude fields), so layer tool-specific fields on top of a portable baseline. For the full matrix, see `references/docs/skills-guide.md` (bundled with this skill).
|
|
381
|
+
**Key takeaway:** `name` + `description` are the only truly portable interface. Layer tool-specific fields on top of that baseline, but treat an unread field as inert rather than guaranteed harmless — providers differ in which extension fields they read, and not every provider documents what it does with the rest. The single canonical, dated compatibility matrix lives in `references/docs/skills-guide.md` (bundled with this skill); consult it rather than a copy.
|
|
394
382
|
|
|
395
383
|
### Detail Level
|
|
396
384
|
|
|
397
|
-
|
|
398
|
-
| --------------------- | ------------ | ------------------------------ |
|
|
399
|
-
| Complex workflows | Detailed | docs-new, docs-review |
|
|
400
|
-
| Simple command-like | Concise | update-doc-refs, create-ticket |
|
|
401
|
-
| Reference/standards | Detailed | repo-documentation |
|
|
402
|
-
| Helper (auto-invoked) | Moderate | read-relevant-docs |
|
|
385
|
+
For the detail level each skill type warrants, see `references/skill-template.md`.
|
|
403
386
|
|
|
404
387
|
## Examples
|
|
405
388
|
|
|
@@ -428,7 +411,7 @@ I need a skill for running database migrations
|
|
|
428
411
|
- [Agent Skills Open Standard](https://agentskills.io) — the spec
|
|
429
412
|
- [Claude Code Skills](https://code.claude.com/docs/en/skills) — Claude-specific features
|
|
430
413
|
- [Cursor Skills](https://cursor.com/docs/context/skills) — Cursor-specific features
|
|
431
|
-
- [Codex CLI Skills](https://
|
|
414
|
+
- [Codex CLI Skills](https://learn.chatgpt.com/docs/build-skills) — Codex-specific features
|
|
432
415
|
- [Gemini CLI Skills](https://geminicli.com/docs/cli/skills/) — Gemini-specific features
|
|
433
416
|
- [npx skills CLI](https://github.com/vercel-labs/skills) — installing remote/community skills
|
|
434
417
|
- [Skills best practices](https://platform.claude.com/docs/en/agents-and-tools/agent-skills/best-practices) — authoring guidance
|
|
@@ -439,7 +422,7 @@ I need a skill for running database migrations
|
|
|
439
422
|
|
|
440
423
|
**Skill not appearing in menu:**
|
|
441
424
|
|
|
442
|
-
- Run `oat sync` to regenerate provider views
|
|
425
|
+
- Run `oat sync --scope project` to regenerate this repository's provider views
|
|
443
426
|
- Verify YAML frontmatter syntax is valid
|
|
444
427
|
- Check that skill name matches directory name
|
|
445
428
|
- Ensure `user-invocable` is not set to `false` (Claude Code)
|
|
@@ -461,7 +444,6 @@ I need a skill for running database migrations
|
|
|
461
444
|
Successful skill creation:
|
|
462
445
|
|
|
463
446
|
- ✅ Skill created at `.agents/skills/{name}/SKILL.md`
|
|
464
|
-
- ✅ `oat sync` run successfully
|
|
465
447
|
- ✅ For `oat-*` skills, `pnpm oat:validate-skills` passes
|
|
466
448
|
- ✅ Frontmatter valid
|
|
467
449
|
- ✅ Workflow uses "Step" naming
|