@open-agent-toolkit/cli 0.2.64 → 0.2.66
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 +19 -1
- package/assets/docs/cli-utilities/index.md +3 -0
- package/assets/docs/cli-utilities/remote-project-management.md +191 -0
- package/assets/docs/contributing/skills.md +15 -5
- 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/skills/index.md +33 -0
- package/assets/public-package-versions.json +4 -4
- package/assets/skills/analyze/SKILL.md +2 -1
- package/assets/skills/authoring-docs/SKILL.md +2 -1
- package/assets/skills/compare/SKILL.md +2 -1
- package/assets/skills/create-agnostic-skill/SKILL.md +2 -1
- package/assets/skills/deep-research/SKILL.md +2 -1
- package/assets/skills/explainer-kit/SKILL.md +2 -1
- package/assets/skills/oat-agent-instructions-analyze/SKILL.md +2 -1
- package/assets/skills/oat-agent-instructions-apply/SKILL.md +2 -1
- package/assets/skills/oat-brainstorm/SKILL.md +2 -1
- package/assets/skills/oat-cursor-cloud-projects/SKILL.md +2 -1
- package/assets/skills/oat-dispatch-subagents/SKILL.md +2 -1
- package/assets/skills/oat-docs/SKILL.md +2 -1
- package/assets/skills/oat-docs-analyze/SKILL.md +2 -1
- package/assets/skills/oat-docs-apply/SKILL.md +2 -1
- package/assets/skills/oat-docs-authoring/SKILL.md +2 -1
- package/assets/skills/oat-docs-bootstrap/SKILL.md +2 -1
- package/assets/skills/oat-doctor/SKILL.md +5 -4
- package/assets/skills/oat-explainer-kit/SKILL.md +2 -1
- package/assets/skills/oat-explainer-kit/scripts/check-core.mjs +322 -2
- package/assets/skills/oat-idea-ideate/SKILL.md +2 -1
- package/assets/skills/oat-idea-new/SKILL.md +2 -1
- package/assets/skills/oat-idea-scratchpad/SKILL.md +2 -1
- package/assets/skills/oat-idea-summarize/SKILL.md +2 -1
- package/assets/skills/oat-pjm-add-backlog-item/SKILL.md +2 -1
- package/assets/skills/oat-pjm-decision/SKILL.md +2 -1
- 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-pjm-review-backlog/SKILL.md +2 -1
- package/assets/skills/oat-pjm-update-repo-reference/SKILL.md +2 -1
- package/assets/skills/oat-project-autonomous/SKILL.md +2 -1
- package/assets/skills/oat-project-capture/SKILL.md +2 -1
- package/assets/skills/oat-project-clear-active/SKILL.md +2 -1
- package/assets/skills/oat-project-complete/SKILL.md +2 -1
- package/assets/skills/oat-project-design/SKILL.md +2 -1
- package/assets/skills/oat-project-discover/SKILL.md +2 -1
- package/assets/skills/oat-project-dispatch-subagents/SKILL.md +2 -1
- package/assets/skills/oat-project-document/SKILL.md +2 -1
- package/assets/skills/oat-project-implement/SKILL.md +2 -1
- package/assets/skills/oat-project-import-plan/SKILL.md +2 -1
- package/assets/skills/oat-project-lite/SKILL.md +2 -1
- package/assets/skills/oat-project-new/SKILL.md +2 -1
- package/assets/skills/oat-project-next/SKILL.md +2 -1
- package/assets/skills/oat-project-open/SKILL.md +2 -1
- package/assets/skills/oat-project-plan/SKILL.md +2 -1
- package/assets/skills/oat-project-plan-writing/SKILL.md +2 -1
- package/assets/skills/oat-project-pr-final/SKILL.md +2 -1
- package/assets/skills/oat-project-pr-progress/SKILL.md +2 -1
- package/assets/skills/oat-project-progress/SKILL.md +2 -1
- package/assets/skills/oat-project-promote-spec-driven/SKILL.md +2 -1
- package/assets/skills/oat-project-quick-start/SKILL.md +2 -1
- package/assets/skills/oat-project-reconcile/SKILL.md +2 -1
- package/assets/skills/oat-project-retro/SKILL.md +2 -1
- package/assets/skills/oat-project-retro-file/SKILL.md +2 -1
- package/assets/skills/oat-project-review-provide/SKILL.md +2 -1
- package/assets/skills/oat-project-review-provide-remote/SKILL.md +2 -1
- package/assets/skills/oat-project-review-receive/SKILL.md +2 -1
- package/assets/skills/oat-project-review-receive-remote/SKILL.md +2 -1
- package/assets/skills/oat-project-revise/SKILL.md +2 -1
- package/assets/skills/oat-project-spec/SKILL.md +2 -1
- package/assets/skills/oat-project-split/SKILL.md +2 -1
- package/assets/skills/oat-project-summary/SKILL.md +2 -1
- package/assets/skills/oat-repo-improve/SKILL.md +1 -1
- package/assets/skills/oat-repo-knowledge-index/SKILL.md +2 -1
- package/assets/skills/oat-repo-maintainability-review/SKILL.md +2 -1
- package/assets/skills/oat-review-provide/SKILL.md +2 -1
- package/assets/skills/oat-review-provide-remote/SKILL.md +2 -1
- package/assets/skills/oat-review-receive/SKILL.md +2 -1
- package/assets/skills/oat-review-receive-remote/SKILL.md +2 -1
- package/assets/skills/oat-wave-execute/SKILL.md +2 -1
- package/assets/skills/oat-wave-program/SKILL.md +2 -1
- package/assets/skills/oat-worktree-bootstrap/SKILL.md +2 -1
- package/assets/skills/oat-worktree-bootstrap-auto/SKILL.md +2 -1
- package/assets/skills/oat-wrap-up/SKILL.md +2 -1
- package/assets/skills/recon/SKILL.md +2 -1
- package/assets/skills/skeptic/SKILL.md +2 -1
- package/assets/skills/subagent-orchestration/SKILL.md +2 -1
- package/assets/skills/synthesize/SKILL.md +2 -1
- 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 +1 -0
- package/dist/commands/config/index.d.ts.map +1 -1
- package/dist/commands/config/index.js +232 -1
- 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/tools/shared/pack-manifest.d.ts.map +1 -1
- package/dist/commands/tools/shared/pack-manifest.js +1 -0
- package/dist/config/oat-config.d.ts +26 -0
- package/dist/config/oat-config.d.ts.map +1 -1
- package/dist/config/oat-config.js +186 -2
- package/package.json +2 -2
|
@@ -15,6 +15,7 @@ For the deep file-by-file reference, see:
|
|
|
15
15
|
- [File Locations](../reference/file-locations.md)
|
|
16
16
|
- [`.oat` Directory Structure](../reference/oat-directory-structure.md)
|
|
17
17
|
- [Sync Config (`.oat/sync/config.json`)](../provider-sync/config.md)
|
|
18
|
+
- [Remote Project Management](remote-project-management.md)
|
|
18
19
|
|
|
19
20
|
## The five config surfaces
|
|
20
21
|
|
|
@@ -51,7 +52,7 @@ What each command is for:
|
|
|
51
52
|
- `oat config list` shows the currently resolved command-surface values for shared and repo-local keys.
|
|
52
53
|
- `oat config get <key>` reads one supported key value.
|
|
53
54
|
- `oat config set <key> <value>` updates supported shared or repo-local keys.
|
|
54
|
-
- `oat config unset <key>` removes a supported key from one surface, using the same `--shared`/`--local`/`--user` flags and per-key restrictions as `set`. The resolved value then falls back to the next surface down, or to the built-in default. A key the surface does not hold exits 0 as already-unset (`--json` adds a `removed` boolean to tell the two apart). Unknown keys, lifecycle state, `tools.*` pack intent,
|
|
55
|
+
- `oat config unset <key>` removes a supported key from one surface, using the same `--shared`/`--local`/`--user` flags and per-key restrictions as `set`. The resolved value then falls back to the next surface down, or to the built-in default. A key the surface does not hold exits 0 as already-unset (`--json` adds a `removed` boolean to tell the two apart). Unknown keys, lifecycle state, `tools.*` pack intent, aggregate read views, read-only remote-policy structure, and environment-shadowed keys with nothing stored are refused with exit 1 — see [CLI Reference](../reference/cli-reference.md#oat-config-surface-flags).
|
|
55
56
|
- `oat config describe` shows the supported config catalog across shared repo, repo-local, user, and sync/provider surfaces.
|
|
56
57
|
- `oat config describe <key>` shows file, scope, default, mutability, owning command, and description for one key.
|
|
57
58
|
|
|
@@ -101,10 +102,27 @@ Common keys in `.oat/config.json`:
|
|
|
101
102
|
- `archive.awsProfile` — optional AWS named profile forwarded as `AWS_PROFILE` to every `aws` invocation in archive flows
|
|
102
103
|
- `archive.awsRegion` — optional AWS region forwarded as `AWS_REGION` to every `aws` invocation in archive flows
|
|
103
104
|
- `tools.<pack>` — project-scope intent for a bundled tool pack (`true` or absent)
|
|
105
|
+
- `pjm.remote.storage.state` — `local` by default; `shared` requires an
|
|
106
|
+
explicit preview and fresh approval and is unavailable to local projects
|
|
107
|
+
- `pjm.remote.policy.description` — `none`, `managed-section`, or `replace`;
|
|
108
|
+
the default is `none`
|
|
109
|
+
- `pjm.remote.policy.authority.*` — repository defaults and operation-specific
|
|
110
|
+
authority for remote creates, field updates, transitions, annotations,
|
|
111
|
+
deletion, relink, detach, and recreate; the default is `read-only`
|
|
112
|
+
- `pjm.remote.policy.providers.<provider>.*` — optional GitHub, Linear, or Jira
|
|
113
|
+
replacement policy; its operation override or default may broaden the
|
|
114
|
+
repository result before later restrictions apply
|
|
104
115
|
- `pjm.initialized` / `pjm.schemaVersion` — explicit repository PJM adoption written by `oat pjm init`
|
|
105
116
|
- `workflow.gates.skills` / `workflow.gates.execTargets` — per-skill gates and cross-runtime exec targets; manage with `oat gate`
|
|
106
117
|
- `workflow.gateTimeouts.code` / `workflow.gateTimeouts.artifact` — default review budgets in milliseconds
|
|
107
118
|
|
|
119
|
+
Remote authority resolves the repository operation override, repository
|
|
120
|
+
default, or built-in read-only fallback first. Matching provider policy replaces
|
|
121
|
+
that result. Binding defaults and operation restrictions then clamp authority,
|
|
122
|
+
and purpose field grants intersect to narrow outbound fields. No configured
|
|
123
|
+
layer bypasses hard approval floors or current caller-owned authority evidence;
|
|
124
|
+
missing, stale, or mismatched evidence fails closed.
|
|
125
|
+
|
|
108
126
|
Tool-pack intent example:
|
|
109
127
|
|
|
110
128
|
```bash
|
|
@@ -14,6 +14,7 @@ Use this section when you want bootstrap guidance, tool-pack lifecycle details,
|
|
|
14
14
|
- [CLI Bootstrap](bootstrap.md) - Foundational `oat init` guidance outside provider-sync-specific onboarding.
|
|
15
15
|
- [Tool Packs and Installed Assets](tool-packs.md) - Bundled packs and `oat tools` lifecycle commands.
|
|
16
16
|
- [Configuration](configuration.md) - OAT configuration guidance across shared, local, user, and provider-sync surfaces.
|
|
17
|
+
- [Remote Project Management](remote-project-management.md) - Provider-neutral remote bindings, policy, previews, approvals, storage, and recovery.
|
|
17
18
|
- [Config and Local State](config-and-local-state.md) - Utility command groups for config, local state, diagnostics, and related inspection flows.
|
|
18
19
|
- [Project Log](project-log.md) - Append-only project observations, synthesis, inspection, and durable roll-up.
|
|
19
20
|
- [Backlog Lifecycle](backlog-lifecycle.md) - Backlog item states, atomic close-out with `oat backlog archive`, and lifecycle drift detection in `oat pjm doctor`.
|
|
@@ -51,6 +52,7 @@ Use CLI Utilities when:
|
|
|
51
52
|
- Use [CLI Bootstrap](bootstrap.md) when you are starting with `oat init`.
|
|
52
53
|
- Go to [Tool Packs](tool-packs.md) when you are managing bundled OAT packs and installed assets.
|
|
53
54
|
- Read [Configuration](configuration.md) for config semantics, or [Config and Local State](config-and-local-state.md) for inspection and diagnostic command groups.
|
|
55
|
+
- Read [Remote Project Management](remote-project-management.md) before binding local planning records to GitHub, Linear, or Jira.
|
|
54
56
|
- Use [Workflow Gates](workflow-gates.md) when you want a skill to run a configured final command before it is considered done.
|
|
55
57
|
|
|
56
58
|
## Common Tasks
|
|
@@ -66,5 +68,6 @@ Use CLI Utilities when:
|
|
|
66
68
|
- [CLI Bootstrap](bootstrap.md) - Foundational `oat init` guidance outside provider-sync-specific onboarding.
|
|
67
69
|
- [Tool Packs](tool-packs.md) - Bundled packs and `oat tools` lifecycle commands.
|
|
68
70
|
- [Configuration](configuration.md) - OAT configuration guidance.
|
|
71
|
+
- [Remote Project Management](remote-project-management.md) - Safely operate explicit remote planning-record bindings.
|
|
69
72
|
- [Config and Local State](config-and-local-state.md) - Utility command groups for config, local state, diagnostics, and related inspection flows.
|
|
70
73
|
- [Workflow Gates](workflow-gates.md) - Per-skill final commands and cross-runtime review dispatch.
|
|
@@ -0,0 +1,191 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Remote Project Management
|
|
3
|
+
description: Safely bind OAT planning records to GitHub, Linear, or Jira through provider-neutral host capabilities.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Remote Project Management
|
|
7
|
+
|
|
8
|
+
Remote project management connects an OAT backlog item or project to a remote
|
|
9
|
+
GitHub, Linear, or Jira record. OAT owns policy, previews, approvals, durable
|
|
10
|
+
operation state, and authoritative read-back verification. The host agent owns
|
|
11
|
+
live execution capability discovery.
|
|
12
|
+
|
|
13
|
+
Remote management is deliberately explicit. It does not turn every plan task
|
|
14
|
+
into a remote issue, run background synchronization, or treat a provider result
|
|
15
|
+
as proof of success.
|
|
16
|
+
|
|
17
|
+
## Prerequisite
|
|
18
|
+
|
|
19
|
+
Confirm that file-backed project management is adopted before using a remote
|
|
20
|
+
command:
|
|
21
|
+
|
|
22
|
+
```bash
|
|
23
|
+
oat pjm doctor --json
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
Continue only when `adoption.state` is `declared` or `inferred-legacy`. Run
|
|
27
|
+
`oat pjm init` first when adoption is absent or only partially initialized.
|
|
28
|
+
|
|
29
|
+
## Lifecycle operations
|
|
30
|
+
|
|
31
|
+
The command family is `oat pjm remote`:
|
|
32
|
+
|
|
33
|
+
```bash
|
|
34
|
+
oat pjm remote intake github:example/repository#123 --to-backlog BL-123 --capability-evidence-stdin --json
|
|
35
|
+
oat pjm remote publish --binding rb_example --capability-evidence-stdin --json
|
|
36
|
+
oat pjm remote refresh --binding rb_example --capability-evidence-stdin --json
|
|
37
|
+
oat pjm remote reconcile --binding rb_example --capability-evidence-stdin --json
|
|
38
|
+
oat pjm remote closeout --project .oat/projects/shared/example --capability-evidence-stdin --json
|
|
39
|
+
oat pjm remote discussion --binding rb_example --limit 20 --capability-evidence-stdin --json
|
|
40
|
+
oat pjm remote resolve relink --binding rb_example github:example/repository#456 --capability-evidence-stdin --json
|
|
41
|
+
oat pjm remote resolve detach --binding rb_example --json
|
|
42
|
+
oat pjm remote resolve recreate --binding rb_example --capability-evidence-stdin --json
|
|
43
|
+
oat pjm remote doctor --json
|
|
44
|
+
oat pjm remote migrate --check --json
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
Before each provider-contacting example, the host discovers live capability and
|
|
48
|
+
supplies only its bounded provider-neutral evidence on standard input. Mutation
|
|
49
|
+
commands also require the current caller-owned authority evidence requested by
|
|
50
|
+
their live help.
|
|
51
|
+
|
|
52
|
+
- `intake` reads one remote record into a selected local backlog target and
|
|
53
|
+
creates the binding.
|
|
54
|
+
- `publish` creates or updates one explicitly selected binding.
|
|
55
|
+
- `refresh` updates retained snapshots without writing remotely.
|
|
56
|
+
- `reconcile` classifies local, remote, and baseline changes before proposing
|
|
57
|
+
any write.
|
|
58
|
+
- `closeout` prepares a reviewed batch while preserving independent per-binding
|
|
59
|
+
outcomes.
|
|
60
|
+
- `discussion` returns one bounded, sanitized page as non-persisted evidence.
|
|
61
|
+
- `resolve relink`, `detach`, and `recreate` handle anomalous bindings without
|
|
62
|
+
discarding identity history or retrying an uncertain create blindly.
|
|
63
|
+
- `doctor` and `migrate` diagnose or repair local records without contacting a
|
|
64
|
+
provider.
|
|
65
|
+
|
|
66
|
+
Use `--help` on the live command for current options. JSON output uses one
|
|
67
|
+
versioned envelope and may return a nonzero shell exit for a safely persisted
|
|
68
|
+
`pending`, `needs-review`, `partial`, `uncertain`, or `blocked` outcome.
|
|
69
|
+
|
|
70
|
+
## Repository-owned policy
|
|
71
|
+
|
|
72
|
+
Remote policy lives only in the shared repository config at `.oat/config.json`.
|
|
73
|
+
The safe defaults are local operational state, no description publication, and
|
|
74
|
+
read-only authority:
|
|
75
|
+
|
|
76
|
+
```json
|
|
77
|
+
{
|
|
78
|
+
"pjm": {
|
|
79
|
+
"remote": {
|
|
80
|
+
"schemaVersion": 1,
|
|
81
|
+
"storage": { "state": "local" },
|
|
82
|
+
"policy": {
|
|
83
|
+
"description": "none",
|
|
84
|
+
"authority": { "default": "read-only" }
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
Use the config command instead of editing nested values by hand:
|
|
92
|
+
|
|
93
|
+
```bash
|
|
94
|
+
oat config set pjm.remote.policy.description managed-section --shared
|
|
95
|
+
oat config set pjm.remote.policy.authority.operations.update-fields user-approved --shared
|
|
96
|
+
oat config set pjm.remote.policy.providers.github.authority.operations.create user-approved --shared
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
Description modes are `none`, `managed-section`, and `replace`. Authority modes
|
|
100
|
+
are `read-only`, `user-approved`, `user-authorized`, and `autonomous`.
|
|
101
|
+
For each operation, OAT resolves the repository operation override, then its
|
|
102
|
+
repository default, then the built-in read-only fallback. A matching provider
|
|
103
|
+
operation override or provider default replaces that repository result and may
|
|
104
|
+
broaden it. Binding defaults and operation restrictions then clamp authority,
|
|
105
|
+
while purpose field grants intersect to narrow the outbound fields. Provider
|
|
106
|
+
configuration never bypasses hard approval floors or the requirement for
|
|
107
|
+
current caller-owned authority evidence; missing, stale, or mismatched evidence
|
|
108
|
+
fails closed. Autonomous configuration is not a background grant.
|
|
109
|
+
|
|
110
|
+
## Live host capability boundary
|
|
111
|
+
|
|
112
|
+
At operation time, the host agent inspects currently granted MCP or connector
|
|
113
|
+
descriptions for the requested semantic operation and exact account, workspace,
|
|
114
|
+
site, or repository context. If no capable connector is available, it may
|
|
115
|
+
inspect the live help of an already configured provider CLI before the first
|
|
116
|
+
provider-contacting command.
|
|
117
|
+
|
|
118
|
+
OAT does not store provider tool names, native schemas, captured catalogs,
|
|
119
|
+
executable names, flags, or CLI dialects. The host returns only bounded,
|
|
120
|
+
sanitized capability evidence through `--capability-evidence-stdin`. It must not
|
|
121
|
+
install tools, request credential values, or switch execution surfaces after an
|
|
122
|
+
attempt begins. The CLI may then emit one provider-neutral `externalAction`.
|
|
123
|
+
The host executes that exact action at most once and returns one bounded
|
|
124
|
+
observation with `oat pjm remote operation continue`.
|
|
125
|
+
|
|
126
|
+
## Content and outbound safety
|
|
127
|
+
|
|
128
|
+
Inbound provider text is retained only through an allowlist of core fields and
|
|
129
|
+
adapter-approved extensions. If a retained text field triggers a conservative
|
|
130
|
+
sensitive-content signal, OAT suppresses that whole field and marks the
|
|
131
|
+
snapshot incomplete. This is a bounded field-safety rule, not general DLP or
|
|
132
|
+
credential-value parsing.
|
|
133
|
+
|
|
134
|
+
Every remote create or update consumes only an explicit normalized projection.
|
|
135
|
+
The universal provider-neutral pre-write gate evaluates that projection before
|
|
136
|
+
preview, approval, action, and authoritative read-back. It never scans the
|
|
137
|
+
repository, worktree, Git history, or arbitrary files for secrets. Missing,
|
|
138
|
+
stale, failed, or blocked safety evidence prevents execution.
|
|
139
|
+
|
|
140
|
+
## Previews, approval floors, and uncertainty
|
|
141
|
+
|
|
142
|
+
Mutation-capable commands persist and return a preview before execution. The
|
|
143
|
+
preview digest binds the target, normalized fields, remote revision,
|
|
144
|
+
capability, safety result, and effective policy. If any load-bearing input
|
|
145
|
+
changes, the approval is stale.
|
|
146
|
+
|
|
147
|
+
Fresh approval is always required for complete description replacement,
|
|
148
|
+
relink, detach, recreate, destructive operations, and promotion to shared
|
|
149
|
+
operational storage. `user-approved` authority also requires applying the exact
|
|
150
|
+
persisted preview. Higher configured authority cannot bypass those floors.
|
|
151
|
+
|
|
152
|
+
The host submits a bounded observation with `oat pjm remote operation continue`.
|
|
153
|
+
Only an OAT `ok` envelope after authoritative read-back means success. A
|
|
154
|
+
connector response, process exit, or visible remote change is evidence rather
|
|
155
|
+
than a verdict. If a create or update is uncertain, do not retry it blindly;
|
|
156
|
+
use the recovery guidance in the envelope so OAT can search, relink, recreate,
|
|
157
|
+
or reconcile without producing duplicates.
|
|
158
|
+
|
|
159
|
+
## Storage and worktrees
|
|
160
|
+
|
|
161
|
+
Portable binding metadata follows its backlog or project owner. Shared backlog
|
|
162
|
+
metadata lives under `.oat/repo/pjm/remote/bindings`; project metadata lives
|
|
163
|
+
under that project's `remote/bindings` directory. Local projects keep their
|
|
164
|
+
portable metadata in the local operational store.
|
|
165
|
+
|
|
166
|
+
Operational snapshots, journals, batches, and receipts default to a
|
|
167
|
+
repository-fingerprinted directory under the Git common directory:
|
|
168
|
+
`.git/oat/pjm-remote/<repository-fingerprint>/`. All linked worktrees for one
|
|
169
|
+
repository therefore share the same local operational state, while another
|
|
170
|
+
clone gets its own store.
|
|
171
|
+
|
|
172
|
+
Shared operational storage is opt-in and may expose remote planning content to
|
|
173
|
+
everyone with repository access. It requires a persisted preview and fresh
|
|
174
|
+
approval, and it is rejected for local projects. Preview the exact proposed
|
|
175
|
+
paths through `oat pjm remote storage shared --help` before applying them.
|
|
176
|
+
|
|
177
|
+
## Offline behavior
|
|
178
|
+
|
|
179
|
+
OAT can inspect portable bindings, the bounded local snapshot, journals,
|
|
180
|
+
receipts, and pending recovery instructions while offline. `remote doctor` and
|
|
181
|
+
`migrate` are local-only. Provider refresh, publication, reconciliation writes,
|
|
182
|
+
and authoritative verification remain pending or blocked until matching live
|
|
183
|
+
capability evidence is available; offline state never fabricates remote
|
|
184
|
+
freshness or success.
|
|
185
|
+
|
|
186
|
+
## Related references
|
|
187
|
+
|
|
188
|
+
- [Configuration](configuration.md)
|
|
189
|
+
- [CLI Reference](../reference/cli-reference.md)
|
|
190
|
+
- [File Locations](../reference/file-locations.md)
|
|
191
|
+
- [Troubleshooting](../reference/troubleshooting.md)
|
|
@@ -204,9 +204,14 @@ resolution. `resolveSkillVersion` in
|
|
|
204
204
|
runtime helper and the validators cannot disagree.
|
|
205
205
|
|
|
206
206
|
The top-level `version` field remains supported as a deprecated alias. Every
|
|
207
|
-
bundled skill
|
|
208
|
-
|
|
209
|
-
|
|
207
|
+
bundled skill now declares `metadata.version` and carries no top-level
|
|
208
|
+
`version`, so `pnpm oat:validate-skills` reports no alias warnings on the
|
|
209
|
+
bundled tree. The alias is retained for third-party skills installed from
|
|
210
|
+
packs, which may still carry it; it retires on the schedule recorded in
|
|
211
|
+
`DR-260908-bundled-skills-declare` — the warning becomes an error in the first
|
|
212
|
+
release after 0.2.65 that changes the validator, and the resolver's top-level
|
|
213
|
+
read is removed one release after that error has produced no findings on the
|
|
214
|
+
bundled tree.
|
|
210
215
|
|
|
211
216
|
A skill that carries both fields with different values is a conflict. The
|
|
212
217
|
resolver reports the `metadata.version` value together with the conflict, and
|
|
@@ -214,7 +219,12 @@ the callers that must not guess act on it: validation reports an error rather
|
|
|
214
219
|
than silently picking one, and canonical role resolution treats the identity as
|
|
215
220
|
invalid. The runtime version readers still return the `metadata.version` value,
|
|
216
221
|
so an installed-versus-bundled comparison keeps working while the conflict is
|
|
217
|
-
being fixed. Carrying both with the _same_ value
|
|
222
|
+
being fixed. Carrying both with the _same_ value resolves without a conflict and
|
|
223
|
+
without an alias warning, because `metadata.version` wins. A bundled skill must
|
|
224
|
+
still carry `metadata.version` alone: the corpus sweep in
|
|
225
|
+
`packages/cli/src/validation/skills.test.ts` fails on any column-0 `version:`
|
|
226
|
+
line under `.agents/skills`, which is the only check that catches the
|
|
227
|
+
same-value case.
|
|
218
228
|
|
|
219
229
|
### The version is gated
|
|
220
230
|
|
|
@@ -227,7 +237,7 @@ resolved version, so it enforces the bump whether the skill declares
|
|
|
227
237
|
of Done) and in CI; a changed skill whose version matches `origin/main` fails
|
|
228
238
|
the gate. The deprecation warning above is deliberately not part of that gate:
|
|
229
239
|
`check:skill-bumps` fails on any finding it receives, so an alias warning
|
|
230
|
-
routed through it would fail every changed skill
|
|
240
|
+
routed through it would fail every changed skill that still carried one.
|
|
231
241
|
|
|
232
242
|
## Practical Authoring Flow
|
|
233
243
|
|
|
@@ -14,6 +14,7 @@ The CLI is also a standalone value path. You can use `oat init`, `oat sync`, `oa
|
|
|
14
14
|
- [CLI Bootstrap](../cli-utilities/bootstrap.md) - Bootstrap a repo with `oat init`, guided setup, and initial provider adoption.
|
|
15
15
|
- [Tool Packs](../cli-utilities/tool-packs.md) - Install, update, inspect, migrate, and remove bundled OAT skills and agents at project or user scope.
|
|
16
16
|
- [Config and Local State](../cli-utilities/config-and-local-state.md) - Config, backlog, local paths, diagnostics, and related utility commands.
|
|
17
|
+
- [Remote Project Management](../cli-utilities/remote-project-management.md) - Explicit remote bindings, policy, host handoffs, and recovery.
|
|
17
18
|
- [Workflow Gates](../cli-utilities/workflow-gates.md) - Per-skill final commands, review gates, and cross-runtime prompt dispatch.
|
|
18
19
|
- [Docs Tooling Commands](../docs-tooling/commands.md) - Docs app scaffolding, migration, index generation, and nav sync.
|
|
19
20
|
- [Provider Sync](../provider-sync/index.md) - Sync behavior, provider capabilities, config, and drift management.
|
|
@@ -43,6 +44,7 @@ The first practical expansion path is to keep improving the existing owners: [Do
|
|
|
43
44
|
| `oat init` | Bootstrap canonical OAT directories, sync config, optional hooks, and guided setup. | [CLI Bootstrap](../cli-utilities/bootstrap.md) |
|
|
44
45
|
| `oat tools ...` | Install, inspect, update, remove, and migrate bundled OAT tool packs and assets across project and user scope. | [Tool Packs](../cli-utilities/tool-packs.md) |
|
|
45
46
|
| `oat pjm ...` | Adopt PJM for a repository and record it (`init`), run read-only adoption and reference diagnostics (`doctor`), and migrate legacy layouts to `pjm/` + `reference/` (`migrate`). Adoption is separate from pack placement. | [Install vs. initialize](../cli-utilities/tool-packs.md#install-vs-initialize) |
|
|
47
|
+
| `oat pjm remote ...` | Intake, publish, refresh, reconcile, close out, inspect discussion, resolve anomalies, diagnose, migrate, and continue durable host actions for explicit remote bindings. | [Remote Project Management](../cli-utilities/remote-project-management.md) |
|
|
46
48
|
| `oat decision ...` | Create, index, and migrate file-per-record repo decisions under `reference/decisions/` (`init`, `new`, `regenerate-index`, `migrate`). | [Config and Local State](../cli-utilities/config-and-local-state.md#oat-decision-) |
|
|
47
49
|
| `oat backlog ...` / `oat local ...` | File-backed backlog helpers, local path sync, and local-only operational support. | [Config and Local State](../cli-utilities/config-and-local-state.md) |
|
|
48
50
|
| `oat config ...` / `oat instructions ...` | Config discovery, source-aware config dumps, supported mutations, and instruction-integrity helpers. | [Config and Local State](../cli-utilities/config-and-local-state.md) |
|
|
@@ -134,6 +136,12 @@ Notable commands introduced in the current CLI surface:
|
|
|
134
136
|
never converted into a `recorded-absent` row or pull guidance.
|
|
135
137
|
- `oat tools migrate --pack <pack> --from <scope> --to <scope>` - move one installed pack between project and user scope. Always previews first, installs and re-inventories the destination before touching the source, and offers source removal only after the destination is verified complete. Declining or running non-interactively leaves the pack installed at both scopes rather than failing. `--dry-run` stops after the preview; there is no force flag. See [Tool Packs](../cli-utilities/tool-packs.md#oat-tools-migrate).
|
|
136
138
|
- `oat pjm doctor --json` - read-only repository PJM diagnostics whose result carries an additive `adoption` object (`state` of `declared` | `inferred-legacy` | `partial-initialization` | `none`, `repoRoot`, and `recovery`). This, not `oat tools has project-management`, is the check that answers whether _this repository_ adopted PJM.
|
|
139
|
+
- `oat pjm remote ... --json` - operate one explicit provider-neutral binding.
|
|
140
|
+
The family includes `intake`, `publish`, `refresh`, `reconcile`, `closeout`,
|
|
141
|
+
`discussion`, `resolve`, `doctor`, `migrate`, `storage`, and
|
|
142
|
+
`operation continue`. An `ok` envelope exits 0, a system `failed` envelope exits 2, and
|
|
143
|
+
every safely persisted nonterminal or blocked status exits 1. A `pending`
|
|
144
|
+
envelope with `externalAction` is a durable host handoff, not remote success.
|
|
137
145
|
- `oat config dump --json` - merged config with source attribution
|
|
138
146
|
- `oat project status --json` - full parsed state for the active tracked project. **Stable contract for skills:** the JSON output is a typed read interface for OAT skills; the field set consumed by migrated skills is locked by `MIGRATED_FIELDS` in `packages/cli/src/commands/project/status.test.ts`. Removing or renaming any of `project.{name, path, phase, phaseStatus, workflowMode, docsUpdated, lastCommit, prStatus, prUrl}` is a breaking change and will fail the contract test.
|
|
139
147
|
- `oat project status --field <path>` - print one arbitrary dot-path field from the same status payload, e.g. `project.workflowMode` or `project.timestamps.stateUpdated`. Missing/null fields print `null`; object and array fields print compact JSON.
|
|
@@ -171,12 +179,15 @@ Per-key restrictions apply identically to `set` and `unset`: structural keys can
|
|
|
171
179
|
|
|
172
180
|
`oat config unset <key>` removes the key from the selected surface and prunes any parent object it empties, so the resolved value falls back through the remaining surfaces to the built-in default. Removing a key the surface does not hold is not an error: it reports an already-unset outcome and exits 0. With `--json` the envelope adds a `removed` boolean, which is the machine-readable way to tell a real removal from an already-unset no-op, since both exit 0. A stored value that fails validation is still removed, matching `oat config set`, which repairs the same file.
|
|
173
181
|
|
|
174
|
-
`
|
|
182
|
+
Remote settings under `pjm.remote.*` remain shared-only. Removing a mutable leaf preserves sibling settings and the required empty `policy` object, if necessary, so the remaining remote configuration stays readable. Explicit defaults are removed from disk rather than silently written back by normalization; effective values still use fail-closed defaults. Remote policy must pass strict validation before removal.
|
|
183
|
+
|
|
184
|
+
`unset` refuses six classes of key, each with exit code 1:
|
|
175
185
|
|
|
176
186
|
- **Unknown keys**, including keys OAT reads but does not expose in the `oat config` catalog (`documentation.index`). These are not removable by any `oat config` command.
|
|
177
187
|
- **Lifecycle state** (`activeProject`, `lastPausedProject`) — cleared with `oat config set <key> ''` instead.
|
|
178
188
|
- **Pack intent** (`tools.*`) — removed with `oat tools remove --pack <pack> --scope project`, which also removes the installed pack files. Clearing the intent alone would leave them behind.
|
|
179
189
|
- **Aggregate read views** (`workflow.dispatchCeiling`, `workflow.dispatchCeiling.providers`) — these are assembled for `get` from the leaf keys and are not stored as such. Unset `workflow.dispatchCeiling.preset` or `workflow.dispatchCeiling.providers.<provider>` instead.
|
|
190
|
+
- **Read-only remote-policy structure** (`pjm.remote`, `pjm.remote.policy`, `pjm.remote.schemaVersion`) — unset a documented mutable child key instead; removing the complete policy or its schema discriminator is not supported.
|
|
180
191
|
- **Environment-shadowed keys with nothing stored on the target surface** — when `OAT_PROJECTS_ROOT`, `OAT_PROJECTS_DEFAULT_SCOPE`, or `OAT_WORKTREES_ROOT` supplies the effective value and the surface holds nothing to remove, clear the environment variable in your shell. When the surface _does_ hold a stored value, `unset` removes it (as `set` would rewrite it) and warns that the override still supplies the effective value.
|
|
181
192
|
|
|
182
193
|
## `workflow.*` preference keys
|
|
@@ -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
|
|
@@ -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"
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: analyze
|
|
3
|
-
version: 0.2.0
|
|
4
3
|
description: Multi-angle analysis of existing artifacts, codebases, documents, or systems. Examines what you have from six analysis angles and produces structured findings with prioritized recommendations.
|
|
5
4
|
argument-hint: 'target [--context path]'
|
|
6
5
|
user-invocable: true
|
|
7
6
|
allowed-tools: Read, Glob, Grep, Bash, WebSearch, WebFetch, AskUserQuestion, Agent, mcp__*
|
|
7
|
+
metadata:
|
|
8
|
+
version: 0.2.1
|
|
8
9
|
---
|
|
9
10
|
|
|
10
11
|
# /analyze
|
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: authoring-docs
|
|
3
|
-
version: 1.0.0
|
|
4
3
|
description: Use when creating, restructuring, migrating, auditing, or reviewing technical documentation for software projects. Provides evidence-first, provider-portable Markdown authoring standards.
|
|
5
4
|
argument-hint: '[docs task or target path]'
|
|
6
5
|
disable-model-invocation: false
|
|
7
6
|
allowed-tools: Read, Write, Bash, Glob, Grep, AskUserQuestion
|
|
8
7
|
user-invocable: true
|
|
8
|
+
metadata:
|
|
9
|
+
version: 1.0.1
|
|
9
10
|
---
|
|
10
11
|
|
|
11
12
|
# Authoring Docs
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: compare
|
|
3
|
-
version: 0.1.1
|
|
4
3
|
description: Domain-aware comparative analysis with clear recommendations. Compares options across auto-detected or user-specified dimensions and produces a qualitative assessment with a clear winner.
|
|
5
4
|
argument-hint: 'item1 item2 [item3...] [--save] [--context path] [--dimensions "dim1, dim2, ..."]'
|
|
6
5
|
user-invocable: true
|
|
7
6
|
allowed-tools: Read, Glob, Grep, Bash, WebSearch, WebFetch, AskUserQuestion, Agent, mcp__*
|
|
7
|
+
metadata:
|
|
8
|
+
version: 0.1.2
|
|
8
9
|
---
|
|
9
10
|
|
|
10
11
|
# /compare
|