@elmundi/ship-cli 0.14.2 → 0.15.3
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/README.md +17 -16
- package/bin/shipctl.mjs +4 -80
- package/lib/commands/feedback.mjs +1 -1
- package/lib/commands/help.mjs +47 -131
- package/lib/commands/init.mjs +17 -250
- package/lib/commands/knowledge.mjs +25 -328
- package/lib/commands/preflight.mjs +213 -0
- package/lib/commands/run.mjs +266 -116
- package/lib/commands/trigger.mjs +95 -10
- package/lib/config/schema.mjs +68 -11
- package/lib/http.mjs +0 -2
- package/lib/runtime/routines.mjs +34 -0
- package/lib/templates.mjs +2 -2
- package/lib/verify/checks/agents-on-disk.mjs +5 -28
- package/lib/verify/registry.mjs +7 -8
- package/package.json +1 -1
- package/lib/artifacts/fs-index.mjs +0 -230
- package/lib/cache/store.mjs +0 -422
- package/lib/commands/bootstrap.mjs +0 -4
- package/lib/commands/callback.mjs +0 -742
- package/lib/commands/docs.mjs +0 -90
- package/lib/commands/kickoff.mjs +0 -192
- package/lib/commands/lanes.mjs +0 -566
- package/lib/commands/manifest-catalog.mjs +0 -251
- package/lib/commands/migrate.mjs +0 -204
- package/lib/commands/new.mjs +0 -452
- package/lib/commands/patterns.mjs +0 -160
- package/lib/commands/process.mjs +0 -388
- package/lib/commands/search.mjs +0 -43
- package/lib/commands/sync.mjs +0 -824
- package/lib/config/migrate.mjs +0 -223
- package/lib/find-ship-root.mjs +0 -75
- package/lib/process/specialist-prompt-contract.mjs +0 -171
- package/lib/state/lockfile.mjs +0 -180
- package/lib/vendor/run-agent.workflow.yml +0 -254
- package/lib/verify/checks/artifacts-up-to-date.mjs +0 -78
- package/lib/verify/checks/cache-integrity.mjs +0 -51
- package/lib/verify/checks/gitignore-cache.mjs +0 -51
- package/lib/verify/checks/rules-markers.mjs +0 -135
package/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# @elmundi/ship-cli
|
|
2
2
|
|
|
3
|
-
`shipctl` is the developer workbench for Ship.
|
|
3
|
+
`shipctl` is the developer workbench for a Ship-connected repo. The console is for the operator; the CLI is for the engineer. It runs locally for setup, sync, validation, and diagnostics — it does not orchestrate workflows, touch workspace state, or write to the audit log. The customer-side CI uses `shipctl trigger` (and the trigger-spawned `shipctl run`) as a thin entry-point that hands work to the workspace runner.
|
|
4
4
|
|
|
5
5
|
Published package: `@elmundi/ship-cli`. Binary: `shipctl`.
|
|
6
6
|
|
|
@@ -25,11 +25,10 @@ Use `shipctl` to:
|
|
|
25
25
|
- sync patterns, tools, and collections into `.ship/cache/`;
|
|
26
26
|
- verify local repo wiring in CI or before a PR;
|
|
27
27
|
- inspect detected stack signals with `doctor`;
|
|
28
|
-
-
|
|
29
|
-
- draft and submit feedback on artifacts
|
|
30
|
-
- run technical routines where the repo-level workflow requires it.
|
|
28
|
+
- read workspace knowledge buckets from inside an agent run;
|
|
29
|
+
- draft and submit feedback on catalog artifacts.
|
|
31
30
|
|
|
32
|
-
|
|
31
|
+
The product setup path is workspace → repo → tracker → knowledge → dashboard/Inbox, all in the console wizard. The CLI does not duplicate that flow.
|
|
33
32
|
|
|
34
33
|
## First local setup
|
|
35
34
|
|
|
@@ -60,22 +59,24 @@ shipctl verify
|
|
|
60
59
|
|
|
61
60
|
| Command | Use |
|
|
62
61
|
| --- | --- |
|
|
63
|
-
| `shipctl
|
|
64
|
-
| `shipctl
|
|
65
|
-
| `shipctl verify` | Check config, cache, agent rules, generated files, and optional network/provider reachability. |
|
|
62
|
+
| `shipctl doctor` | Cheap repo health checks: agent rule files installed, config valid, lock fresh, network reachable. |
|
|
63
|
+
| `shipctl verify` | Heavier post-adoption checks (artefact contract, marker drift, network/provider reachability). |
|
|
66
64
|
| `shipctl sync` | Refresh catalog artifacts into `.ship/cache/`; `--lock` writes a lockfile. |
|
|
67
|
-
| `shipctl config` |
|
|
68
|
-
| `shipctl
|
|
69
|
-
| `shipctl
|
|
70
|
-
| `shipctl
|
|
71
|
-
| `shipctl
|
|
72
|
-
| `shipctl
|
|
65
|
+
| `shipctl config` | `show / validate / get / set / init / path` for `.ship/config.yml`. |
|
|
66
|
+
| `shipctl init` | Bootstrap `.ship/`, fetch artifacts, install agent rules in an existing repo. |
|
|
67
|
+
| `shipctl pattern\|tool\|collection` | List, show, fetch, or search artifact bodies. |
|
|
68
|
+
| `shipctl search` | Vector search over docs + prompts. |
|
|
69
|
+
| `shipctl knowledge fetch` | Read a workspace bucket's articles + sync state (the agent's read path). |
|
|
70
|
+
| `shipctl trigger` | CI entry-point: compute due routines and claim each schedule window in Ship. |
|
|
71
|
+
| `shipctl run` | Spawned per routine by `shipctl trigger`: resolve pattern, fetch a ticket if FSM-staged, launch the agent runtime. |
|
|
72
|
+
| `shipctl feedback` | Local markdown drafts; submit creates a GitHub issue against a cited artifact. |
|
|
73
|
+
| `shipctl telemetry` | Opt-in usage telemetry controls (default OFF). |
|
|
73
74
|
|
|
74
75
|
Run `shipctl help` and `shipctl <command> --help` for the exact flag surface.
|
|
75
76
|
|
|
76
77
|
## Configuration
|
|
77
78
|
|
|
78
|
-
The CLI reads `.ship/config.yml` from the repo root. It records stack hints, API settings, artifact pins, telemetry preference, cache behavior, and
|
|
79
|
+
The CLI reads `.ship/config.yml` from the repo root. It records stack hints, API settings, artifact pins, telemetry preference, cache behavior, and `process.routines` wiring.
|
|
79
80
|
|
|
80
81
|
See [`../documentation/configuration.md`](../documentation/configuration.md) for the maintained field reference.
|
|
81
82
|
|
|
@@ -131,4 +132,4 @@ npm run shipctl -- help
|
|
|
131
132
|
npm test --prefix cli
|
|
132
133
|
```
|
|
133
134
|
|
|
134
|
-
Catalog commands read `artifacts/**/ARTIFACT.md` directly when run inside this repo. Search
|
|
135
|
+
Catalog commands read `artifacts/**/ARTIFACT.md` directly when run inside this repo. Search still uses the configured HTTP API.
|
package/bin/shipctl.mjs
CHANGED
|
@@ -1,9 +1,5 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { extractGlobalArgv } from "../lib/config.mjs";
|
|
3
|
-
import { docsCommand } from "../lib/commands/docs.mjs";
|
|
4
|
-
import { searchCommand } from "../lib/commands/search.mjs";
|
|
5
|
-
import { patternCommand } from "../lib/commands/patterns.mjs";
|
|
6
|
-
import { resourceManifestCommand } from "../lib/commands/manifest-catalog.mjs";
|
|
7
3
|
import { printHelp } from "../lib/commands/help.mjs";
|
|
8
4
|
import { initCommand } from "../lib/commands/init.mjs";
|
|
9
5
|
import { doctorCommand } from "../lib/commands/doctor.mjs";
|
|
@@ -39,31 +35,6 @@ try {
|
|
|
39
35
|
process.exit(0);
|
|
40
36
|
}
|
|
41
37
|
|
|
42
|
-
if (cmd === "search") {
|
|
43
|
-
await searchCommand(ctx, rest);
|
|
44
|
-
process.exit(0);
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
if (cmd === "docs") {
|
|
48
|
-
await docsCommand(ctx, rest);
|
|
49
|
-
process.exit(0);
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
if (cmd === "pattern" || cmd === "patterns") {
|
|
53
|
-
await patternCommand(ctx, rest);
|
|
54
|
-
process.exit(0);
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
if (cmd === "tool" || cmd === "tools") {
|
|
58
|
-
await resourceManifestCommand("tool", ctx, rest);
|
|
59
|
-
process.exit(0);
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
if (cmd === "collection" || cmd === "collections") {
|
|
63
|
-
await resourceManifestCommand("collection", ctx, rest);
|
|
64
|
-
process.exit(0);
|
|
65
|
-
}
|
|
66
|
-
|
|
67
38
|
if (cmd === "init") {
|
|
68
39
|
await initCommand(ctx, rest);
|
|
69
40
|
process.exit(0);
|
|
@@ -80,12 +51,6 @@ try {
|
|
|
80
51
|
process.exit(0);
|
|
81
52
|
}
|
|
82
53
|
|
|
83
|
-
if (cmd === "sync") {
|
|
84
|
-
const { syncCommand } = await import("../lib/commands/sync.mjs");
|
|
85
|
-
await syncCommand(ctx, rest);
|
|
86
|
-
process.exit(0);
|
|
87
|
-
}
|
|
88
|
-
|
|
89
54
|
if (cmd === "verify") {
|
|
90
55
|
const { verifyCommand } = await import("../lib/commands/verify.mjs");
|
|
91
56
|
await verifyCommand(ctx, rest);
|
|
@@ -104,68 +69,27 @@ try {
|
|
|
104
69
|
process.exit(0);
|
|
105
70
|
}
|
|
106
71
|
|
|
107
|
-
if (cmd === "new") {
|
|
108
|
-
const { newCommand } = await import("../lib/commands/new.mjs");
|
|
109
|
-
await newCommand(ctx, rest);
|
|
110
|
-
process.exit(0);
|
|
111
|
-
}
|
|
112
|
-
|
|
113
|
-
if (cmd === "bootstrap") {
|
|
114
|
-
const { bootstrapCommand } = await import("../lib/commands/bootstrap.mjs");
|
|
115
|
-
await bootstrapCommand(ctx, rest);
|
|
116
|
-
process.exit(0);
|
|
117
|
-
}
|
|
118
|
-
|
|
119
|
-
if (cmd === "callback") {
|
|
120
|
-
const { callbackCommand } = await import("../lib/commands/callback.mjs");
|
|
121
|
-
await callbackCommand(ctx, rest);
|
|
122
|
-
process.exit(0);
|
|
123
|
-
}
|
|
124
|
-
|
|
125
72
|
if (cmd === "trigger") {
|
|
126
73
|
const { triggerCommand } = await import("../lib/commands/trigger.mjs");
|
|
127
74
|
await triggerCommand(ctx, rest);
|
|
128
75
|
process.exit(0);
|
|
129
76
|
}
|
|
130
77
|
|
|
131
|
-
if (cmd === "kickoff") {
|
|
132
|
-
const { kickoffCommand } = await import("../lib/commands/kickoff.mjs");
|
|
133
|
-
await kickoffCommand(ctx, rest);
|
|
134
|
-
process.exit(0);
|
|
135
|
-
}
|
|
136
|
-
|
|
137
78
|
if (cmd === "knowledge") {
|
|
138
79
|
const { knowledgeCommand } = await import("../lib/commands/knowledge.mjs");
|
|
139
80
|
await knowledgeCommand(ctx, rest);
|
|
140
81
|
process.exit(0);
|
|
141
82
|
}
|
|
142
83
|
|
|
143
|
-
if (cmd === "
|
|
144
|
-
const { processCommand } = await import("../lib/commands/process.mjs");
|
|
145
|
-
await processCommand(ctx, rest);
|
|
146
|
-
process.exit(0);
|
|
147
|
-
}
|
|
148
|
-
|
|
149
|
-
if (cmd === "migrate") {
|
|
150
|
-
const { migrateCommand } = await import("../lib/commands/migrate.mjs");
|
|
151
|
-
await migrateCommand(ctx, rest);
|
|
152
|
-
process.exit(0);
|
|
153
|
-
}
|
|
154
|
-
|
|
155
|
-
if (cmd === "run" || cmd === "agent-run") {
|
|
156
|
-
// ``agent-run`` is a back-compat alias for ``run`` — older trigger
|
|
157
|
-
// workflows still spell it that way until they re-seed.
|
|
84
|
+
if (cmd === "run") {
|
|
158
85
|
const { runCommand } = await import("../lib/commands/run.mjs");
|
|
159
86
|
await runCommand(ctx, rest);
|
|
160
87
|
process.exit(0);
|
|
161
88
|
}
|
|
162
89
|
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
if (cmd === "lanes" || cmd === "automations") {
|
|
167
|
-
const { lanesCommand } = await import("../lib/commands/lanes.mjs");
|
|
168
|
-
await lanesCommand(ctx, rest);
|
|
90
|
+
if (cmd === "preflight") {
|
|
91
|
+
const { preflightCommand } = await import("../lib/commands/preflight.mjs");
|
|
92
|
+
await preflightCommand(ctx, rest);
|
|
169
93
|
process.exit(0);
|
|
170
94
|
}
|
|
171
95
|
|
|
@@ -17,7 +17,7 @@ import {
|
|
|
17
17
|
import { postFeedback } from "../http.mjs";
|
|
18
18
|
import { appendEvent } from "../telemetry/outbox.mjs";
|
|
19
19
|
|
|
20
|
-
const ALLOWED_KINDS = ["
|
|
20
|
+
const ALLOWED_KINDS = ["collection"];
|
|
21
21
|
|
|
22
22
|
function parseArgs(rest) {
|
|
23
23
|
const out = {
|
package/lib/commands/help.mjs
CHANGED
|
@@ -1,167 +1,89 @@
|
|
|
1
1
|
export function printHelp() {
|
|
2
|
-
console.log(`shipctl —
|
|
2
|
+
console.log(`shipctl — local workbench for a Ship-connected repo.
|
|
3
3
|
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
process.routines: (.ship/config.yml) → repo-local scheduled/manual work
|
|
11
|
-
pattern: (artifact kind) → cached role/playbook prompt body
|
|
12
|
-
routine claim: (Ship API) → idempotent schedule-window claim
|
|
13
|
-
attention surface → operator console: Inbox
|
|
14
|
-
|
|
15
|
-
Legacy 'lanes:' configs and '--lane' flags are still accepted as aliases
|
|
16
|
-
so already-seeded repositories keep working while new repos use
|
|
17
|
-
'process.routines'.
|
|
4
|
+
The console is for the operator. The CLI is for the engineer. shipctl
|
|
5
|
+
runs locally for setup, validation, and diagnostics. It does not
|
|
6
|
+
orchestrate workflows, does not touch workspace state, and does not
|
|
7
|
+
write to the audit log. The customer-side CI uses 'shipctl trigger'
|
|
8
|
+
(and the trigger-spawned 'shipctl run') as a thin entry-point that
|
|
9
|
+
hands work to the workspace runner; everything else is local.
|
|
18
10
|
|
|
19
11
|
GLOBAL FLAGS
|
|
20
|
-
--base-url URL
|
|
21
|
-
https://ship.elmundi.com
|
|
12
|
+
--base-url URL Workspace API (default: SHIP_API_BASE or
|
|
13
|
+
https://api.ship.elmundi.com)
|
|
22
14
|
--json Machine-readable JSON output where supported
|
|
23
15
|
--version, -v Print shipctl version and exit
|
|
24
16
|
--help, -h Print this help
|
|
25
17
|
|
|
26
18
|
COMMANDS
|
|
27
19
|
|
|
28
|
-
|
|
29
|
-
shipctl init [--yes] [--force] [--dry-run] [--json] [--cwd <dir>]
|
|
30
|
-
[--agents <csv>]
|
|
31
|
-
[--tracker <name>] [--ci <name>] [--preset <name>]
|
|
32
|
-
[--language <name>] [--channel stable|edge]
|
|
33
|
-
[--copy-rules] [--copy-playbook] [--bootstrap]
|
|
34
|
-
[--telemetry on|off|ask]
|
|
35
|
-
— bootstrap .ship/, fetch artifacts, install
|
|
36
|
-
agent rules in an existing repo.
|
|
37
|
-
shipctl new <name> [--preset ...] [--tracker ...] [--ci ...] [--agents ...]
|
|
38
|
-
[--here] [--yes]
|
|
39
|
-
— bootstrap a fresh repo: git init + README +
|
|
40
|
-
.ship/config.yml.
|
|
20
|
+
Daily-use (local)
|
|
41
21
|
shipctl doctor [--json] [--cwd <dir>] [--write-inventory] [--no-network]
|
|
42
|
-
—
|
|
43
|
-
|
|
44
|
-
|
|
22
|
+
— cheap repo health checks: agent rule
|
|
23
|
+
files installed, config valid,
|
|
24
|
+
credentials present, network reachable.
|
|
25
|
+
shipctl verify [--no-network] [--check <id,...>] [--severity warn|error|info] [--json]
|
|
26
|
+
— heavier post-adoption checks
|
|
27
|
+
(config schema, agent rule presence,
|
|
28
|
+
tracker / CI wiring).
|
|
45
29
|
shipctl config init|get|set|validate|show|path
|
|
46
30
|
— .ship/config.yml management.
|
|
47
31
|
|
|
48
|
-
|
|
49
|
-
shipctl
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
—
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
— versioned artifact bodies (POST /fetch
|
|
59
|
-
{ kind, id, version? }). 'pattern' is the
|
|
60
|
-
protocol-stable artifact kind; in the operator
|
|
61
|
-
console it shows up as a Play.
|
|
62
|
-
shipctl tool … | shipctl collection …
|
|
63
|
-
— same subcommands; plural aliases:
|
|
64
|
-
patterns, tools, collections.
|
|
65
|
-
shipctl sync [--check-only] [--only <kind:id>]... [--channel <c>]
|
|
66
|
-
[--force-unpin] [--dry-run] [--lock] [--json] [--cwd <dir>]
|
|
67
|
-
— fetch artifacts into .ship/cache. With --lock,
|
|
68
|
-
also writes .ship/shipctl.lock.json covering
|
|
69
|
-
every pattern the declared routines depend on.
|
|
32
|
+
Setup
|
|
33
|
+
shipctl init [--yes] [--force] [--dry-run] [--json] [--cwd <dir>]
|
|
34
|
+
[--agents <csv>] [--tracker <name>] [--ci <name>]
|
|
35
|
+
[--preset <name>] [--language <name>] [--channel stable|edge]
|
|
36
|
+
[--copy-playbook] [--bootstrap]
|
|
37
|
+
[--telemetry on|off|ask]
|
|
38
|
+
— bootstrap .ship/ in an existing repo.
|
|
39
|
+
Agent rule files are baked into the
|
|
40
|
+
wizard's seed PR — Phase 2.5 retired
|
|
41
|
+
the local --copy-rules + sync flow.
|
|
70
42
|
|
|
71
|
-
|
|
72
|
-
shipctl
|
|
73
|
-
—
|
|
74
|
-
|
|
43
|
+
Knowledge (read-only)
|
|
44
|
+
shipctl knowledge fetch <bucket-slug> [--workspace <id>] [--json]
|
|
45
|
+
— read a Ship-owned bucket's articles
|
|
46
|
+
and source sync state. Bucket
|
|
47
|
+
authoring + ingestion live server-side;
|
|
48
|
+
this is the agent's read path.
|
|
49
|
+
|
|
50
|
+
CI entry-point (used by the seed workflow)
|
|
51
|
+
shipctl trigger --event schedule [--workspace <id>] [--repo <id|owner/name>] [--json]
|
|
52
|
+
— compute due routines from
|
|
53
|
+
.ship/config.yml and claim each
|
|
54
|
+
schedule window in Ship.
|
|
75
55
|
shipctl run --routine <id> [--dry-run] [--json] [--cwd <dir>]
|
|
76
56
|
— execute one routine end-to-end:
|
|
77
|
-
resolve
|
|
57
|
+
resolve specialist, fetch a ticket
|
|
78
58
|
(if FSM-staged), launch the agent
|
|
79
59
|
runtime, exit on terminal status.
|
|
80
|
-
'shipctl
|
|
81
|
-
|
|
82
|
-
shipctl lanes install [--only <csv>] [--ref <git-ref>] [--owner <gh>] [--repo <name>]
|
|
83
|
-
[--shipctl-version <v>] [--dry-run] [--force] [--json] [--cwd <dir>]
|
|
84
|
-
shipctl lanes list [--json] [--cwd <dir>]
|
|
85
|
-
shipctl lanes remove [--only <csv>] [--dry-run] [--json] [--cwd <dir>]
|
|
86
|
-
— generate / inspect / delete the
|
|
87
|
-
.github/workflows/ship-<lane>.yml thin wrappers
|
|
88
|
-
that delegate to the reusable run-agent.yml.
|
|
89
|
-
shipctl kickoff [--pattern <id>] [--version <v>] [--raw] [--json] [--cwd <dir>]
|
|
90
|
-
— print a pattern body for piping into the
|
|
91
|
-
customer's agent in CI.
|
|
92
|
-
shipctl callback --status <ok|fail|cancelled> [--summary "..."] [--metric k=v]...
|
|
93
|
-
[--outcome-text "..."] [--findings-count N] [--severity high=N]...
|
|
94
|
-
[--artifact pr:"..."]... [--escalation clarification:"..."]...
|
|
95
|
-
— report a Run's terminal status (and
|
|
96
|
-
RunSummary outcome) back to Ship so it can
|
|
97
|
-
render the outcome row and route any
|
|
98
|
-
escalations into the Inbox.
|
|
99
|
-
shipctl process prompt --state <id> [--ticket-json <json>] [--policies-file <path>]
|
|
100
|
-
[--cwd <dir>] [--json]
|
|
101
|
-
— assemble a Process/FSM specialist prompt
|
|
102
|
-
bundle with ticket context, allowed
|
|
103
|
-
transitions, policies, and mandatory
|
|
104
|
-
knowledge-first guardrails.
|
|
105
|
-
shipctl process tickets --workspace <id> [--query <text>] [--tracker <kind>] [--json]
|
|
106
|
-
— read-only tracker picker for selecting
|
|
107
|
-
ticket context before building a process
|
|
108
|
-
prompt. Does not create, comment, or
|
|
109
|
-
transition tickets.
|
|
110
|
-
|
|
111
|
-
Knowledge
|
|
112
|
-
shipctl knowledge init [--workspace <id>] [--repo <id|owner/name>] [--only <csv>] [--json]
|
|
113
|
-
— compatibility: open a PR that seeds
|
|
114
|
-
.ship/knowledge starter docs.
|
|
115
|
-
shipctl knowledge fetch <bucket-slug> [--workspace <id>] [--json]
|
|
116
|
-
— read Ship-owned bucket articles and
|
|
117
|
-
source sync state.
|
|
118
|
-
shipctl knowledge bootstrap [--workspace <id>] [--repo <id|owner/name>] [--json]
|
|
119
|
-
— post-merge action entry point: analyze
|
|
120
|
-
repo and open generated knowledge PR.
|
|
121
|
-
shipctl knowledge refresh-intel [--workspace <id>] [--repo <id|owner/name>] [--json]
|
|
122
|
-
— refresh the generated repository-context
|
|
123
|
-
bucket for an activated repo.
|
|
124
|
-
Reads SHIP_API_TOKEN.
|
|
60
|
+
Spawned per routine by 'shipctl trigger'
|
|
61
|
+
in the seed workflow.
|
|
125
62
|
|
|
126
63
|
Telemetry & feedback
|
|
127
64
|
shipctl telemetry status|on|off|show-id|reset-id|flush|export|delete-my-data|buffer
|
|
128
65
|
— opt-in anonymous usage (RFC-0003); default OFF.
|
|
129
|
-
'--scope artifact_usage,improvement_drafts,errors'
|
|
130
|
-
on 'on'; '--dry-run' on 'flush';
|
|
131
|
-
'--out <file>' on 'export'.
|
|
132
66
|
shipctl feedback draft|list|show|edit|submit|remove
|
|
133
67
|
— local markdown drafts; submit creates a
|
|
134
|
-
GitHub issue
|
|
135
|
-
draft to sent/.
|
|
68
|
+
GitHub issue against the cited artifact
|
|
69
|
+
(POST /feedback) and moves the draft to sent/.
|
|
136
70
|
|
|
137
71
|
Misc
|
|
138
|
-
shipctl verify [--no-network] [--check <id,...>] [--severity warn|error|info] [--json]
|
|
139
|
-
— post-adoption liveness checks
|
|
140
|
-
(local + config + network).
|
|
141
|
-
shipctl migrate [--dry-run] [--yes] [--json] [--cwd <dir>]
|
|
142
|
-
— upgrade .ship/config.yml from v1 to v2
|
|
143
|
-
(lanes-as-config).
|
|
144
|
-
shipctl bootstrap (stub)
|
|
145
72
|
shipctl help — show this help.
|
|
146
73
|
|
|
147
|
-
LOCAL TREE
|
|
148
|
-
pattern / tool / collection list|show|fetch scan
|
|
149
|
-
artifacts/<plural>/<id>/ARTIFACT.md on disk when cwd or SHIP_REPO is inside
|
|
150
|
-
the Ship monorepo (search always uses HTTP).
|
|
151
|
-
|
|
152
74
|
INIT FLAGS
|
|
153
75
|
--yes Non-interactive apply (use --dry-run first)
|
|
154
76
|
--force Replace existing rule blocks and overwrite generated files
|
|
155
77
|
--dry-run Preview only
|
|
156
78
|
--json Emit a JSON summary suitable for CI
|
|
157
|
-
--agents <csv> Comma-separated agent ids
|
|
79
|
+
--agents <csv> Comma-separated agent ids (informational; the wizard's
|
|
80
|
+
seed PR is the install path now)
|
|
158
81
|
--tracker <name> Stack tracker: linear|jira|github-issues|azure-boards|clickup|spreadsheet|none
|
|
159
82
|
--ci <name> Stack CI: gh-actions|gitlab-ci|buildkite|circleci|azure-pipelines|jenkins|manual
|
|
160
83
|
--preset <name> Stack preset: web-app|api-backend|mobile-app|cli|monorepo|adoption-minimum
|
|
161
84
|
--language <name> Stack language: ts|js|py|go|rust|java|kotlin|swift|dart|multi
|
|
162
85
|
--channel <name> Override api.channel: stable|edge
|
|
163
|
-
--copy-
|
|
164
|
-
--copy-playbook Fetch collection/adoption-playbook into .ship/cache/ (skipped on 404)
|
|
86
|
+
--copy-playbook (no-op after Phase 2.5; flag retained for back-compat)
|
|
165
87
|
--bootstrap Render CI/tracker scaffolding (mobile-app+gh-actions+linear skeletons today;
|
|
166
88
|
other combos emit SHIP_BOOTSTRAP_PLAN.md)
|
|
167
89
|
--telemetry on|off|ask — override the interactive telemetry prompt
|
|
@@ -171,12 +93,6 @@ SUPPORTED AGENTS
|
|
|
171
93
|
cursor, codex, claude, aider, cline, continue, windsurf, zed,
|
|
172
94
|
gemini, opencode, copilot, cursor-cloud, agents-md, claude-md
|
|
173
95
|
|
|
174
|
-
REFERENCE
|
|
175
|
-
Artifacts protocol: RFC-0001 (POST /search, POST /fetch). Every consumed
|
|
176
|
-
artifact should be recorded in the PR as \`<kind>:<id>@<version>\`.
|
|
177
|
-
HTTP schemas: artifacts/tools/methodology-api/ARTIFACT.md in the Ship repo.
|
|
178
|
-
Operator IA (Plays / Automations / Runs / Inbox): RFC-0010.
|
|
179
|
-
|
|
180
96
|
Package: @elmundi/ship-cli (binary: shipctl).
|
|
181
97
|
`);
|
|
182
98
|
}
|