orbitmap 0.7.0 → 0.8.0
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 +20 -4
- package/dist/adapters/cloud.d.ts +1 -1
- package/dist/adapters/cloud.js +9 -2
- package/dist/adapters/cloud.js.map +1 -1
- package/dist/adapters/local/adapter.d.ts +1 -1
- package/dist/adapters/local/adapter.js +1 -1
- package/dist/adapters/local/adapter.js.map +1 -1
- package/dist/adapters/types.d.ts +7 -1
- package/dist/agent-instructions.d.ts +25 -10
- package/dist/agent-instructions.js +138 -56
- package/dist/agent-instructions.js.map +1 -1
- package/dist/commands/context.js +15 -5
- package/dist/commands/context.js.map +1 -1
- package/dist/commands/doc-patch.d.ts +1 -3
- package/dist/commands/doc-patch.js +54 -8
- package/dist/commands/doc-patch.js.map +1 -1
- package/dist/commands/init.js +0 -0
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/intent.js +42 -6
- package/dist/commands/intent.js.map +1 -1
- package/dist/commands/setup-agent.d.ts +35 -14
- package/dist/commands/setup-agent.js +128 -57
- package/dist/commands/setup-agent.js.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
// Single source of truth for all OrbitMap agent-facing instruction text.
|
|
2
2
|
//
|
|
3
3
|
// THIS FILE IS THE CANONICAL HOME of the skills. `orbitmap init` installs them; the
|
|
4
|
-
// copies under `~/.claude/skills/` (or a project's `.claude/skills/`)
|
|
5
|
-
// not sources. Edit here, then re-install — never the other way around.
|
|
4
|
+
// copies under `~/.claude/skills/`, `~/.codex/skills/` (or a project's `.claude/skills/`)
|
|
5
|
+
// are INSTALLS, not sources. Edit here, then re-install — never the other way around.
|
|
6
6
|
//
|
|
7
7
|
// Two layers, mirroring how the OrbitMap MCP server works:
|
|
8
8
|
// 1. THIN_HOOK — always-on, injected into CLAUDE.md / AGENTS.md (~10 lines).
|
|
@@ -29,16 +29,18 @@
|
|
|
29
29
|
// workers read INSTEAD of the skill
|
|
30
30
|
// (see SkillDef.references).
|
|
31
31
|
// orbitmap-docs — documents
|
|
32
|
-
// Shipped two ways
|
|
33
|
-
//
|
|
34
|
-
//
|
|
35
|
-
//
|
|
36
|
-
//
|
|
37
|
-
//
|
|
38
|
-
//
|
|
39
|
-
//
|
|
40
|
-
//
|
|
41
|
-
//
|
|
32
|
+
// Shipped two ways, chosen by what the agent CAN DO, never by its
|
|
33
|
+
// name (see AgentDef.skillsDirName in commands/setup-agent.ts):
|
|
34
|
+
// - skills-capable agents (Claude Code and Codex today): one
|
|
35
|
+
// `<skills dir>/<name>/SKILL.md` per skill, plus
|
|
36
|
+
// any `references/*` files, loaded on demand (zero
|
|
37
|
+
// per-turn context cost).
|
|
38
|
+
// - agents with no skill ecosystem: all skill BODIES concatenated
|
|
39
|
+
// into the agent config file, because there is
|
|
40
|
+
// nothing on-demand to lean on. Reference files are
|
|
41
|
+
// not inlined: without subagent dispatch, Flow A
|
|
42
|
+
// runs serially and the worker contract folds into
|
|
43
|
+
// the executor's own rules.
|
|
42
44
|
//
|
|
43
45
|
// History: the original four skills (orbitmap, orbitmap-execute, orbitmap-plan,
|
|
44
46
|
// orbitmap-docs) were transcribed from §8 of `docs/local-mode-poc-spec.md`, itself a
|
|
@@ -444,7 +446,7 @@ MCP tool schemas are the authority. Never edit the workspace data files directly
|
|
|
444
446
|
\`blocked\` with a logged blocker — an \`in_progress\` task means a fold step was
|
|
445
447
|
skipped; fix it before moving on. Then end the run:
|
|
446
448
|
\`orbitmap intent update IN-x --status in_review --log <entries>\` — the transition's
|
|
447
|
-
response carries an Instructions section (it will ask
|
|
449
|
+
response carries an Instructions section (it will ask you to verify the outcome lines); FOLLOW it.
|
|
448
450
|
Merging and closing to \`done\` are the USER'S. The merge EVENT — whoever performs
|
|
449
451
|
it — is what later flips the tasks to \`--delivery merged\`.
|
|
450
452
|
|
|
@@ -788,9 +790,9 @@ ${worklogKeepDropTest(' ')}
|
|
|
788
790
|
add or fix tasks and re-check. Do NOT proceed while a gap remains.
|
|
789
791
|
7. Write cross-task PLANNING NOTES + a short SUMMARY to the intent \`plan\` field —
|
|
790
792
|
\`orbitmap intent update IN-x --plan "<notes>"\`: decisions valid for all tasks,
|
|
791
|
-
sequencing rationale, and the coverage argument.
|
|
792
|
-
paragraph
|
|
793
|
-
|
|
793
|
+
sequencing rationale, and the coverage argument. Start the field with "# Summary"
|
|
794
|
+
— a paragraph summing up the whole field — then the body. The server reads that section
|
|
795
|
+
as the field's TL;DR and flags a field written without one.
|
|
794
796
|
This REPLACES any seed notes that were in the field — you have already absorbed them.
|
|
795
797
|
8. Ensure a final DOC-UPDATE task exists: after the implementation is done and all tests
|
|
796
798
|
are green, update the OrbitMap documentation (see the \`orbitmap-docs\` skill).
|
|
@@ -1007,6 +1009,57 @@ you hand to \`orbitmap-design\` (and, through the plan field, to \`orbitmap-plan
|
|
|
1007
1009
|
validation) into the design notes, never into the agreed outcome. Do not slip into
|
|
1008
1010
|
solutioning.
|
|
1009
1011
|
|
|
1012
|
+
## Outcome lines
|
|
1013
|
+
|
|
1014
|
+
One promise per line, written as the user would read it in release notes. Subject is
|
|
1015
|
+
the user, a named role, or the product acting for the user — never "you", "we", "I",
|
|
1016
|
+
the team, the code or the field. Shape: "(user) can (do what)" or
|
|
1017
|
+
"(product) no longer (pain)".
|
|
1018
|
+
|
|
1019
|
+
Sources: the outcome field first; when it is thin, the work log's decision and
|
|
1020
|
+
release-note entries; never the design or plan.
|
|
1021
|
+
|
|
1022
|
+
Each line passes six tests, or is rewritten / moved:
|
|
1023
|
+
NOTICE — would a user notice it without reading code, tests or the tracker?
|
|
1024
|
+
(nothing changes → Out of scope)
|
|
1025
|
+
STRANGER — would a new customer understand it? (no keys, dates, "decided by")
|
|
1026
|
+
CODE — no file, class, column, endpoint, flag, or surface list shown for
|
|
1027
|
+
coverage; one surface may be named when the behaviour lives only there
|
|
1028
|
+
(mechanism → What changes or design)
|
|
1029
|
+
ONE-THING — one promise; a second clause may only say why it matters or what it
|
|
1030
|
+
replaces — "and", a semicolon joining two promises, a second field or
|
|
1031
|
+
view → split or drop
|
|
1032
|
+
ACTOR — every verb has one unambiguous doer (the user accepts, the system
|
|
1033
|
+
tests); no "opens/gets/begins" where a person or the system could be meant
|
|
1034
|
+
REFERENT — nothing points outside the line: no "this", "it", "lists", "the field"
|
|
1035
|
+
without naming which
|
|
1036
|
+
|
|
1037
|
+
1–7 lines, ≤160 chars each: title, one line of description, the user type in brackets
|
|
1038
|
+
at the end. Highest impact to the user or product first. More than 7 on a new intent →
|
|
1039
|
+
propose a second intent; on an already-built intent → merge the lowest-impact lines.
|
|
1040
|
+
|
|
1041
|
+
User type: [user] anyone working in OrbitMap; [customer] the account owner's view —
|
|
1042
|
+
security, data, billing, upgrade notices; [internal] only the OrbitMap team notices.
|
|
1043
|
+
An all-[internal] list is allowed; never force a user line.
|
|
1044
|
+
|
|
1045
|
+
Examples:
|
|
1046
|
+
Bad: "TaskDetail's unlocked taskId allowing cross-account read+write (IS-x4uxur) closes"
|
|
1047
|
+
Good: "No one can open or edit a task from another account, even with its link. [customer]"
|
|
1048
|
+
Bad: "DB enum + Postgres triggers, Agent API + fixtures, UI, CLI, MCP carry 'cancelled'"
|
|
1049
|
+
Good: "A task can be cancelled instead of being marked done with a disclaimer. [user]"
|
|
1050
|
+
Bad: "You can write work-log entries on an issue, same as on a task."
|
|
1051
|
+
Good: "A user can write work-log entries on an issue, same as on a task. [user]"
|
|
1052
|
+
|
|
1053
|
+
If the user's shorthand can be read two ways, still propose the line and end it with
|
|
1054
|
+
"? <question>"; a "?" line never enters the field. No input to work from → say so and
|
|
1055
|
+
ask what should change and for whom; never invent.
|
|
1056
|
+
|
|
1057
|
+
Propose the list in the terminal in this exact format. The user accepts or comments;
|
|
1058
|
+
refine and re-propose until the user accepts the whole list. Then re-read each
|
|
1059
|
+
accepted line as a customer reading the changelog email; flag any line that can still
|
|
1060
|
+
be read two ways. Write only the accepted lines, as the first paragraph of the outcome
|
|
1061
|
+
field.
|
|
1062
|
+
|
|
1010
1063
|
## Flow
|
|
1011
1064
|
1. Gather context.
|
|
1012
1065
|
- Ensure session focus (see Session focus in the \`orbitmap\` skill): a valid focus
|
|
@@ -1044,15 +1097,21 @@ ${worklogKeepDropTest(' ')}
|
|
|
1044
1097
|
- \`note\` is the CATCH-ALL — anything useful that is not \`code_change\` / \`decision\` /
|
|
1045
1098
|
\`blocker\` goes in as \`note\`, with \`--meta\` for unusual structure. There is deliberately
|
|
1046
1099
|
NO \`other\` type. NEVER write \`status_change\`: the server authors it on every transition.
|
|
1047
|
-
3.
|
|
1048
|
-
OUT of scope and how success will be
|
|
1049
|
-
|
|
1100
|
+
3. Propose the OUTCOME LINES in the terminal (see Outcome lines) together with what is
|
|
1101
|
+
explicitly OUT of scope and how success will be checked. The user accepts or comments;
|
|
1102
|
+
refine and re-propose until the user accepts the whole list — never proceed on a vague
|
|
1103
|
+
or assumed outcome, and never write a line the user has not accepted.
|
|
1050
1104
|
4. Persist (create or refine). Update an existing unprocessed intent, or create one:
|
|
1051
1105
|
\`orbitmap intent update IN-x --outcome "<agreed outcome>" [--design "<design notes>"] [--plan "<plan notes>"]\`
|
|
1052
1106
|
/ \`orbitmap intent create "<name>" --outcome "<agreed outcome>" [--design "…"] [--plan "…"]\`.
|
|
1053
|
-
|
|
1054
|
-
|
|
1055
|
-
|
|
1107
|
+
Write the outcome field in the template: "# Outcomes list" holding ONLY the accepted
|
|
1108
|
+
lines (see Outcome lines), "# Why", then the chapters — What changes and Alternatives
|
|
1109
|
+
rejected optional; Out of scope, Success check and Source obligatory — ending with
|
|
1110
|
+
"## Source" carrying "Outcomes accepted by <who> on <YYYY-MM-DD>". Soft ceiling
|
|
1111
|
+
~1,500 words: above it, move material to design or plan. Design and plan notes start
|
|
1112
|
+
with "# Summary", a paragraph summing up the whole field, then the body. The server
|
|
1113
|
+
returns the outcomes list as the intent's TL;DR and refuses \`new → design\` without an
|
|
1114
|
+
accepted list.
|
|
1056
1115
|
Route the captured notes by type —
|
|
1057
1116
|
HOW / tech / UX → the **design** field; build-order / task ideas / execution risks → the
|
|
1058
1117
|
**plan** field (OPTIONAL — only if the conversation produced any). Mark the user's notes
|
|
@@ -1079,9 +1138,9 @@ digraph orbitmap_brainstorm {
|
|
|
1079
1138
|
"Clarify idea into an outcome, one question at a time" [shape=box];
|
|
1080
1139
|
"Log decisions passing the keep/drop test, as they land" [shape=box];
|
|
1081
1140
|
"Capture user opinions / context as notes" [shape=box];
|
|
1082
|
-
"
|
|
1083
|
-
"User
|
|
1084
|
-
"Create or refine intent:
|
|
1141
|
+
"Propose outcome lines in the terminal" [shape=box];
|
|
1142
|
+
"User accepts the whole list?" [shape=diamond];
|
|
1143
|
+
"Create or refine intent: accepted lines + template chapters" [shape=box];
|
|
1085
1144
|
"Route notes to design/plan fields by type (marked as the user's)" [shape=box];
|
|
1086
1145
|
"Promote referenced idea to used" [shape=box];
|
|
1087
1146
|
"Advance status new to design, with --log entries (refused if none)" [shape=box];
|
|
@@ -1090,11 +1149,11 @@ digraph orbitmap_brainstorm {
|
|
|
1090
1149
|
"Gather context: Orb (intents / idea) + repo (files, docs, commits)" -> "Clarify idea into an outcome, one question at a time";
|
|
1091
1150
|
"Clarify idea into an outcome, one question at a time" -> "Log decisions passing the keep/drop test, as they land";
|
|
1092
1151
|
"Log decisions passing the keep/drop test, as they land" -> "Capture user opinions / context as notes";
|
|
1093
|
-
"Capture user opinions / context as notes" -> "
|
|
1094
|
-
"
|
|
1095
|
-
"User
|
|
1096
|
-
"User
|
|
1097
|
-
"Create or refine intent:
|
|
1152
|
+
"Capture user opinions / context as notes" -> "Propose outcome lines in the terminal";
|
|
1153
|
+
"Propose outcome lines in the terminal" -> "User accepts the whole list?";
|
|
1154
|
+
"User accepts the whole list?" -> "Propose outcome lines in the terminal" [label="comments, refine"];
|
|
1155
|
+
"User accepts the whole list?" -> "Create or refine intent: accepted lines + template chapters" [label="yes"];
|
|
1156
|
+
"Create or refine intent: accepted lines + template chapters" -> "Route notes to design/plan fields by type (marked as the user's)";
|
|
1098
1157
|
"Route notes to design/plan fields by type (marked as the user's)" -> "Promote referenced idea to used";
|
|
1099
1158
|
"Promote referenced idea to used" -> "Advance status new to design, with --log entries (refused if none)";
|
|
1100
1159
|
"Advance status new to design, with --log entries (refused if none)" -> "Offer orbitmap-design (review or design?)";
|
|
@@ -1104,7 +1163,9 @@ digraph orbitmap_brainstorm {
|
|
|
1104
1163
|
## After the outcome
|
|
1105
1164
|
Before handing off, review the agreed outcome with fresh eyes:
|
|
1106
1165
|
- **Vague or assumed?** Is it concrete and in the user's words, or did you fill gaps? Fix.
|
|
1107
|
-
- **Unmeasurable?** Can you tell when it is met? If not, sharpen the
|
|
1166
|
+
- **Unmeasurable?** Can you tell when it is met? If not, sharpen the Success check.
|
|
1167
|
+
- **Every line clean?** Re-run the six tests on each accepted line; a line that fails is
|
|
1168
|
+
rewritten and re-accepted, never silently changed.
|
|
1108
1169
|
- **Too big?** If it needs several independent designs, decompose into sibling intents and
|
|
1109
1170
|
frame the first — do not hand design an outcome that is really three outcomes.
|
|
1110
1171
|
Then write it (Flow step 4), advance \`new → design\`, and hand the baton to
|
|
@@ -1128,8 +1189,10 @@ Then write it (Flow step 4), advance \`new → design\`, and hand the baton to
|
|
|
1128
1189
|
- Create-or-refine: reuse an existing unprocessed intent instead of creating a duplicate.
|
|
1129
1190
|
- Ground the outcome in verified repo/tracker reality, not the plan doc or a stated claim —
|
|
1130
1191
|
check it is still needed and still undone before framing.
|
|
1131
|
-
- Keep the outcome WHAT/WHY:
|
|
1132
|
-
HOW answers into the design notes.
|
|
1192
|
+
- Keep the outcome WHAT/WHY: the accepted lines say WHAT, the Why chapter says WHY; name
|
|
1193
|
+
what is OUT of scope and how success is checked; push HOW answers into the design notes.
|
|
1194
|
+
- Only accepted lines enter the field — no proposed lines, no "?" lines, no
|
|
1195
|
+
proposed/accepted marks; the acceptance record under Source is the user's consent.
|
|
1133
1196
|
- If the intent already has an agreed outcome (status \`design\` or later), step aside and
|
|
1134
1197
|
point at \`orbitmap-design\` — do not re-frame a settled outcome.
|
|
1135
1198
|
- Never auto-chain into designing after framing — always ask first.`;
|
|
@@ -1176,6 +1239,11 @@ holds a real design doc instead of raw notes, treat it as existing design to ref
|
|
|
1176
1239
|
## Key principles
|
|
1177
1240
|
- **Serve the outcome.** Every question and every section traces back to the outcome; if
|
|
1178
1241
|
it does not, cut it or go fix the outcome first.
|
|
1242
|
+
- **Anchor every question to an outcome.** Open each question with the outcome it
|
|
1243
|
+
serves, quoted by number and short title — "For outcome 3 (verified outcomes get a
|
|
1244
|
+
done check): what does the mark mean at review, and what does done require?" — so
|
|
1245
|
+
the user always knows which promise the decision shapes. A question that fits no
|
|
1246
|
+
outcome is a sign the outcome list is incomplete: raise that, do not ask the question.
|
|
1179
1247
|
- **One question at a time.** Refine by dialogue, never a questionnaire dump.
|
|
1180
1248
|
- **Prefer multiple choice — open questions are a LAST RESORT.** When a question's options
|
|
1181
1249
|
can be enumerated, ALWAYS offer them as a multiple choice with a recommended default; ask
|
|
@@ -1276,9 +1344,9 @@ ${worklogKeepDropTest(' ')}
|
|
|
1276
1344
|
5. Present the draft in sections scaled to their complexity (a few sentences when simple,
|
|
1277
1345
|
more when nuanced); after each section ask whether it looks right, and get the user's
|
|
1278
1346
|
approval before writing anything.
|
|
1279
|
-
6. Write it: \`orbitmap intent update IN-x --design "<doc>"\`.
|
|
1280
|
-
|
|
1281
|
-
|
|
1347
|
+
6. Write it: \`orbitmap intent update IN-x --design "<doc>"\`. Start the field with "# Summary"
|
|
1348
|
+
— a paragraph summing up the whole field — then the body. The server reads that section
|
|
1349
|
+
as the field's TL;DR and flags a field written without one.
|
|
1282
1350
|
This REPLACES any framing
|
|
1283
1351
|
notes that were in the field — you have already absorbed them into the doc. When the
|
|
1284
1352
|
spec names the repos the build will touch, declare them on the intent in the same
|
|
@@ -1418,15 +1486,13 @@ conversation.
|
|
|
1418
1486
|
- To change an OrbitMap document, ALWAYS go through these commands — NEVER edit files
|
|
1419
1487
|
inside the OrbitMap workspace/cache directories directly.
|
|
1420
1488
|
|
|
1421
|
-
## Editing safely — documents have NO revert
|
|
1422
|
-
-
|
|
1423
|
-
|
|
1424
|
-
|
|
1425
|
-
-
|
|
1426
|
-
|
|
1427
|
-
|
|
1428
|
-
- Never read a document between a \`doc-update\` upload and its confirm — a cached read
|
|
1429
|
-
makes the confirm silently re-save the OLD content while still bumping the version.
|
|
1489
|
+
## Editing safely — documents have NO revert
|
|
1490
|
+
- Section ops are the only ops (\`doc-patch --replace-section/--insert-section/
|
|
1491
|
+
--delete-section/--append\`); the line-based ones are gone. On a document with an
|
|
1492
|
+
unclosed code fence every patch op is REFUSED — repair it with a full \`doc-update\`.
|
|
1493
|
+
\`doc-patch --dry-run\` reports the boundaries each op would touch, without writing.
|
|
1494
|
+
- The section parser is fence-aware: a line-start \`#\` inside a code block is never a
|
|
1495
|
+
section boundary, and a patch whose result would leave an unclosed fence is refused.
|
|
1430
1496
|
- After ANY write, re-read the changed section (or TOC for structure) and verify the
|
|
1431
1497
|
result actually matches what you sent. A bumped version number is not proof.`;
|
|
1432
1498
|
export const SKILLS = [
|
|
@@ -1463,8 +1529,12 @@ export const SKILLS = [
|
|
|
1463
1529
|
},
|
|
1464
1530
|
];
|
|
1465
1531
|
// ── The thin always-on hook (CLAUDE.md / AGENTS.md) ────────────────────────────
|
|
1466
|
-
//
|
|
1467
|
-
|
|
1532
|
+
// The hook for every agent that can LOAD skills — Claude Code and Codex today, whichever
|
|
1533
|
+
// agent gains a skills directory next. §8.2, verbatim (without the markers, which
|
|
1534
|
+
// buildSkillsBlock adds). It was written for Claude and used to be named after it, but
|
|
1535
|
+
// nothing in the text is Claude-specific: it only says WHEN to load the skills, and any
|
|
1536
|
+
// agent that discovers `<name>/SKILL.md` can act on it.
|
|
1537
|
+
export const THIN_HOOK_SKILLS = `## OrbitMap
|
|
1468
1538
|
|
|
1469
1539
|
Work is tracked in OrbitMap via the \`orbitmap\` CLI. You work in a WORKSPACE, which can span
|
|
1470
1540
|
several repositories: each repo is an AREA, while missions, intents and documents belong to
|
|
@@ -1479,8 +1549,8 @@ intent as you go. Small self-contained work (a typo, an obvious one-file fix) is
|
|
|
1479
1549
|
NEVER finish a task, intent or mission without a final \`orbitmap log\` entry and a status update;
|
|
1480
1550
|
the final entry closes a record that already exists. Finished work defaults to \`in_review\`, not \`done\`.
|
|
1481
1551
|
OrbitMap tool responses may carry an Instructions section — act on it before continuing.`;
|
|
1482
|
-
//
|
|
1483
|
-
//
|
|
1552
|
+
// The variant for agents with NO skill ecosystem: same rules, but it points at the
|
|
1553
|
+
// inlined sections below, because there are no skill files for these agents to load.
|
|
1484
1554
|
export const THIN_HOOK_GENERIC = `## OrbitMap
|
|
1485
1555
|
|
|
1486
1556
|
Work is tracked in OrbitMap via the \`orbitmap\` CLI. You work in a WORKSPACE, which can span
|
|
@@ -1496,34 +1566,46 @@ NEVER finish a task, intent or mission without a final \`orbitmap log\` entry an
|
|
|
1496
1566
|
the final entry closes a record that already exists. Finished work defaults to \`in_review\`, not \`done\`.
|
|
1497
1567
|
OrbitMap tool responses may carry an Instructions section — act on it before continuing.`;
|
|
1498
1568
|
// ── Assembly helpers ───────────────────────────────────────────────────────────
|
|
1499
|
-
/**
|
|
1569
|
+
/**
|
|
1570
|
+
* Build one SKILL.md file (frontmatter + body). The layout is the same for every
|
|
1571
|
+
* skills-capable agent — Claude Code and Codex read identical frontmatter — so one
|
|
1572
|
+
* renderer serves all of them.
|
|
1573
|
+
*/
|
|
1500
1574
|
export function buildSkillFile(skill) {
|
|
1501
1575
|
return `${skill.frontmatter}\n\n${skill.body}\n`;
|
|
1502
1576
|
}
|
|
1503
1577
|
/**
|
|
1504
|
-
* One extra line appended to the
|
|
1578
|
+
* One extra line appended to the thin hook when the skills were installed at PROJECT
|
|
1505
1579
|
* scope. `CLAUDE.md` is inherited by every sub-directory, but a project-level
|
|
1506
1580
|
* `.claude/skills/` directory is not: a session started in a sibling or child repository
|
|
1507
1581
|
* reads this hook and cannot load the skills it names. The hook must therefore say where
|
|
1508
1582
|
* the skills actually are, and how to make them visible everywhere. At user scope the
|
|
1509
1583
|
* skills are visible wherever the hook is, so no caveat is needed.
|
|
1584
|
+
*
|
|
1585
|
+
* It names `.claude/skills/` because Claude Code is the only agent that can reach it:
|
|
1586
|
+
* project scope installs skills only for an agent that READS them at project scope, and
|
|
1587
|
+
* Codex — the other skills-capable agent — discovers skills under `$CODEX_HOME` only.
|
|
1510
1588
|
*/
|
|
1511
1589
|
export const SKILL_SCOPE_CAVEAT_PROJECT = 'These skills are installed at PROJECT scope, in this directory\'s `.claude/skills/`. ' +
|
|
1512
1590
|
'If you cannot load them (e.g. this session started in a different directory), do not ' +
|
|
1513
1591
|
'guess the workflow — ask the user to run `orbitmap setup-agent --scope user`, which ' +
|
|
1514
1592
|
'installs them into `~/.claude/skills/` where every session can see them.';
|
|
1515
1593
|
/**
|
|
1516
|
-
* Build the thin always-on block for
|
|
1594
|
+
* Build the thin always-on block for ANY skills-capable agent's config file — `CLAUDE.md`
|
|
1595
|
+
* for Claude Code, `AGENTS.md` for Codex. Both get the same block, because both load the
|
|
1596
|
+
* skills the block points at; the file it lands in is the installer's business, not this
|
|
1597
|
+
* function's.
|
|
1598
|
+
*
|
|
1517
1599
|
* `scope` is where the accompanying skill files were installed — see
|
|
1518
1600
|
* {@link SKILL_SCOPE_CAVEAT_PROJECT}.
|
|
1519
1601
|
*/
|
|
1520
|
-
export function
|
|
1521
|
-
const body = scope === 'project' ? `${
|
|
1602
|
+
export function buildSkillsBlock(scope = 'user') {
|
|
1603
|
+
const body = scope === 'project' ? `${THIN_HOOK_SKILLS}\n${SKILL_SCOPE_CAVEAT_PROJECT}` : THIN_HOOK_SKILLS;
|
|
1522
1604
|
return `${MARKER_START}\n${body}\n${MARKER_END}`;
|
|
1523
1605
|
}
|
|
1524
1606
|
/**
|
|
1525
|
-
* Build the markdown fallback block for
|
|
1526
|
-
* skill body inlined
|
|
1607
|
+
* Build the markdown fallback block for agents with no skill ecosystem: the thin hook plus
|
|
1608
|
+
* every skill body inlined, because there is nothing to load on demand.
|
|
1527
1609
|
*/
|
|
1528
1610
|
export function buildGenericBlock() {
|
|
1529
1611
|
const bodies = SKILLS.map((skill) => skill.body).join('\n\n---\n\n');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-instructions.js","sourceRoot":"","sources":["../src/agent-instructions.ts"],"names":[],"mappings":"AAAA,yEAAyE;AACzE,EAAE;AACF,oFAAoF;AACpF,
|
|
1
|
+
{"version":3,"file":"agent-instructions.js","sourceRoot":"","sources":["../src/agent-instructions.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/context.js
CHANGED
|
@@ -150,6 +150,19 @@ function statusTag(status, closed) {
|
|
|
150
150
|
function intentTldr(intent) {
|
|
151
151
|
return intent.outcome_tldr ?? intent.design_tldr ?? intent.plan_tldr;
|
|
152
152
|
}
|
|
153
|
+
/**
|
|
154
|
+
* A TL;DR line under a handle, indented, respecting multiple lines verbatim (design
|
|
155
|
+
* IN-wazu8k Key decisions: "slim and context return the whole list, no truncation, no
|
|
156
|
+
* cap in the CLI either"). `TldrParser::extract()` now returns the full outcomes list
|
|
157
|
+
* (or a `# Summary` paragraph) joined by `\n` rather than a single collapsed line, so
|
|
158
|
+
* every line of a multi-line TL;DR prints, each at the same indent.
|
|
159
|
+
*/
|
|
160
|
+
function printIndentedTldr(tldr, indent) {
|
|
161
|
+
if (!tldr)
|
|
162
|
+
return;
|
|
163
|
+
for (const line of tldr.split('\n'))
|
|
164
|
+
console.log(`${indent}${line}`);
|
|
165
|
+
}
|
|
153
166
|
function printMissions(missions) {
|
|
154
167
|
if (missions.length === 0)
|
|
155
168
|
return;
|
|
@@ -158,8 +171,7 @@ function printMissions(missions) {
|
|
|
158
171
|
// The active mission is the session's likeliest frame — marked so it reads first.
|
|
159
172
|
const marker = mission.status === 'active' ? '▸' : ' ';
|
|
160
173
|
console.log(` ${marker} ${mission.number} ${mission.name} ${statusTag(mission.status, CLOSED_MISSION_STATUSES)}`);
|
|
161
|
-
|
|
162
|
-
console.log(` ${mission.outcome_tldr}`);
|
|
174
|
+
printIndentedTldr(mission.outcome_tldr, ' ');
|
|
163
175
|
}
|
|
164
176
|
}
|
|
165
177
|
/**
|
|
@@ -176,9 +188,7 @@ function printIntents(intents, missions) {
|
|
|
176
188
|
printed.add(intent);
|
|
177
189
|
const areas = intent.areas.length > 0 ? ` (${intent.areas.join(', ')})` : '';
|
|
178
190
|
console.log(`${indent}${intent.number} ${intent.name} ${statusTag(intent.status, CLOSED_INTENT_STATUSES)}${areas}`);
|
|
179
|
-
|
|
180
|
-
if (tldr)
|
|
181
|
-
console.log(`${indent} ${tldr}`);
|
|
191
|
+
printIndentedTldr(intentTldr(intent), `${indent} `);
|
|
182
192
|
};
|
|
183
193
|
for (const mission of missions) {
|
|
184
194
|
const group = intents.filter((i) => i.mission === mission.number && !printed.has(i));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context.js","sourceRoot":"","sources":["../../src/commands/context.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"context.js","sourceRoot":"","sources":["../../src/commands/context.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,16 +5,55 @@ import { OrbitMapAPIError } from '../errors.js';
|
|
|
5
5
|
const FRIENDLY_ERRORS = {
|
|
6
6
|
CONTENT_UNAVAILABLE: 'Storage unavailable — patch aborted to prevent data loss. Try again later.',
|
|
7
7
|
PATCH_RESULT_EMPTY: 'Patch would result in an empty document — aborted.',
|
|
8
|
+
DOCUMENT_FENCES_IMBALANCED: 'Document has an unclosed code fence — patch refused. Repair it with a full doc-update.',
|
|
9
|
+
PATCH_RESULT_MALFORMED: 'The patch would leave an unclosed code fence — refused.',
|
|
8
10
|
};
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
11
|
+
/** `240–297`, or `—` when the operation matched nothing and the server sent null bounds. */
|
|
12
|
+
function formatRange(start, end) {
|
|
13
|
+
if (start === null || end === null) {
|
|
14
|
+
return '—';
|
|
15
|
+
}
|
|
16
|
+
return `${start}–${end}`;
|
|
17
|
+
}
|
|
18
|
+
/** Signed so a reader can tell growth from shrinkage at a glance: `+18`, `-4`, `0`. */
|
|
19
|
+
function formatDelta(delta) {
|
|
20
|
+
return delta > 0 ? `+${delta}` : String(delta);
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Render a dry run: one line per operation, then the warnings the real patch would emit,
|
|
24
|
+
* then the fact that nothing was written.
|
|
25
|
+
*
|
|
26
|
+
* The "nothing was written" line comes LAST on purpose — it is the sentence that must
|
|
27
|
+
* survive a truncated read of the output, and an unmatched operation must be impossible
|
|
28
|
+
* to mistake for a matched one, hence the explicit `NOT MATCHED` marker.
|
|
29
|
+
*/
|
|
30
|
+
function printDryRun(idOrSlug, d) {
|
|
31
|
+
let header = `Dry run for document "${idOrSlug}" (version ${d.version}, unchanged).`;
|
|
32
|
+
if (d.lines_before !== undefined && d.lines_after !== undefined) {
|
|
33
|
+
header += ` ${d.lines_before} → ${d.lines_after} lines if applied.`;
|
|
34
|
+
}
|
|
35
|
+
printSuccess(header, false);
|
|
36
|
+
const operations = d.operations ?? [];
|
|
37
|
+
if (operations.length === 0) {
|
|
38
|
+
console.log(' No operations.');
|
|
39
|
+
}
|
|
40
|
+
for (const op of operations) {
|
|
41
|
+
const heading = op.heading === null ? '' : ` "${op.heading}"`;
|
|
42
|
+
if (op.matched) {
|
|
43
|
+
console.log(` [${op.index}] ${op.op}${heading} lines ${formatRange(op.line_start, op.line_end)} (${formatDelta(op.lines_delta)} lines)`);
|
|
44
|
+
}
|
|
45
|
+
else {
|
|
46
|
+
console.log(` [${op.index}] ${op.op}${heading} NOT MATCHED — heading not found`);
|
|
16
47
|
}
|
|
17
48
|
}
|
|
49
|
+
if (d.warnings && d.warnings.length > 0) {
|
|
50
|
+
for (const warning of d.warnings) {
|
|
51
|
+
console.log(` Warning: ${warning}`);
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
console.log('Nothing was written — re-run without --dry-run to apply.');
|
|
55
|
+
}
|
|
56
|
+
export async function docPatchCommand(idOrSlug, options) {
|
|
18
57
|
let operations;
|
|
19
58
|
if (options.operations) {
|
|
20
59
|
// Raw JSON operations mode
|
|
@@ -71,12 +110,19 @@ export async function docPatchCommand(idOrSlug, options) {
|
|
|
71
110
|
try {
|
|
72
111
|
await confirmWriteTarget('patch document', options, 'existing');
|
|
73
112
|
const client = await createAdapter(options.area);
|
|
74
|
-
const response = (await client.patchDocument(idOrSlug, operations, baseVersion, options.changelog));
|
|
113
|
+
const response = (await client.patchDocument(idOrSlug, operations, baseVersion, options.changelog, options.dryRun));
|
|
75
114
|
if (options.json) {
|
|
76
115
|
console.log(formatOutput(response, true));
|
|
77
116
|
return;
|
|
78
117
|
}
|
|
79
118
|
const d = response.data;
|
|
119
|
+
// Trust the server's own marker rather than the requested flag: if the server ignored
|
|
120
|
+
// `dry_run` (older API), `updated` is true and the write already happened — reporting
|
|
121
|
+
// "nothing was written" then would be a lie.
|
|
122
|
+
if (d.dry_run) {
|
|
123
|
+
printDryRun(idOrSlug, d);
|
|
124
|
+
return;
|
|
125
|
+
}
|
|
80
126
|
let msg = `Document "${idOrSlug}" patched to version ${d.version}.`;
|
|
81
127
|
if (d.lines_before !== undefined && d.lines_after !== undefined) {
|
|
82
128
|
msg += ` ${d.lines_before} → ${d.lines_after} lines.`;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"doc-patch.js","sourceRoot":"","sources":["../../src/commands/doc-patch.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,YAAY,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AAC5F,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"doc-patch.js","sourceRoot":"","sources":["../../src/commands/doc-patch.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/init.js
CHANGED
|
Binary file
|