oris-skills 2.0.0 → 2.1.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.
Files changed (62) hide show
  1. package/.cursor-plugin/plugin.json +6 -1
  2. package/CHANGELOG.md +38 -0
  3. package/README.md +11 -10
  4. package/agents/oris-loop-doctor.md +1 -1
  5. package/agents/oris-loop-verifier.md +3 -0
  6. package/docs/architecture.md +4 -3
  7. package/docs/distribution.md +1 -1
  8. package/docs/maintainer-guide.md +2 -2
  9. package/docs/user-guide.md +9 -7
  10. package/package.json +2 -3
  11. package/references/clean-code-checklist.md +20 -107
  12. package/references/conventions.md +16 -2
  13. package/references/doc-policy.md +19 -3
  14. package/references/loop-contract.md +23 -16
  15. package/references/loop.schema.json +13 -0
  16. package/references/repo-map.md +3 -3
  17. package/references/repo-map.schema.json +37 -0
  18. package/scripts/flow/oris-flow-layout.mjs +1 -0
  19. package/scripts/flow/oris-flow-scan.mjs +195 -27
  20. package/scripts/install/generate-agent-adapters.mjs +19 -2
  21. package/scripts/install/install-user-skills.mjs +7 -1
  22. package/scripts/loop/oris-loop-bootstrap.mjs +7 -2
  23. package/scripts/loop/oris-loop-chat.mjs +32 -14
  24. package/scripts/loop/oris-loop-demo.mjs +11 -20
  25. package/scripts/loop/oris-loop-document.mjs +24 -7
  26. package/scripts/loop/oris-loop-dry-run.mjs +7 -3
  27. package/scripts/loop/oris-loop-fixtures.mjs +12 -11
  28. package/scripts/loop/oris-loop-run.mjs +80 -20
  29. package/scripts/loop/oris-loop-stop.mjs +48 -9
  30. package/scripts/loop/oris-loop-templates.mjs +10 -7
  31. package/scripts/loop/oris-loop-verify.mjs +1 -2
  32. package/scripts/oris-skills.mjs +2 -1
  33. package/scripts/tests/run-all-tests.mjs +0 -2
  34. package/scripts/tests/test-oris-flow-scan.mjs +66 -0
  35. package/scripts/tests/test-oris-loop-document.mjs +39 -3
  36. package/scripts/tests/test-oris-loop-run.mjs +28 -2
  37. package/scripts/tests/test-oris-loop-smoke.mjs +36 -3
  38. package/scripts/tests/test-oris-loop-stop.mjs +65 -4
  39. package/scripts/tests/test-routing-lifecycle.mjs +11 -9
  40. package/skills/oris-flow/SKILL.md +16 -3
  41. package/skills/oris-flow-architecture/SKILL.md +64 -0
  42. package/skills/oris-flow-change/SKILL.md +55 -0
  43. package/skills/oris-flow-criteria/SKILL.md +10 -4
  44. package/skills/oris-flow-discover/SKILL.md +10 -5
  45. package/skills/oris-flow-docs/SKILL.md +2 -2
  46. package/skills/oris-flow-fix/SKILL.md +1 -1
  47. package/skills/oris-flow-implement/SKILL.md +2 -2
  48. package/skills/oris-flow-merge/SKILL.md +45 -0
  49. package/skills/oris-flow-new/SKILL.md +58 -0
  50. package/skills/oris-flow-plan/SKILL.md +8 -4
  51. package/skills/oris-flow-setup/SKILL.md +54 -23
  52. package/skills/oris-flow-verify/SKILL.md +50 -0
  53. package/skills/oris-help/SKILL.md +4 -4
  54. package/skills/oris-loop/SKILL.md +12 -32
  55. package/skills/oris-loop/references/craft.md +10 -9
  56. package/skills/oris-loop/references/run.md +9 -7
  57. package/skills/oris-loop/templates/debriefer.md +1 -1
  58. package/skills/oris-loop/templates/doctor.md +9 -7
  59. package/skills/oris-loop/templates/executor.md +3 -2
  60. package/skills/oris-loop/templates/orchestrator.md +10 -7
  61. package/skills/oris-loop/templates/verifier.md +4 -2
  62. package/references/questions.md +0 -38
@@ -16,38 +16,51 @@ Match the desired outcome to ONE route:
16
16
  | Route | When the user wants… | Enter |
17
17
  |-------|----------------------|-------|
18
18
  | setup | prepare / map / refresh the repo for Oris | `skills/oris-flow-setup/SKILL.md` |
19
+ | new | bootstrap a new AI-driven project from scratch | `skills/oris-flow-new/SKILL.md` |
19
20
  | discover | understand or define product behavior | `skills/oris-flow-discover/SKILL.md` |
20
21
  | criteria | acceptance criteria / QA checks | `skills/oris-flow-criteria/SKILL.md` |
21
22
  | plan | a technical implementation plan | `skills/oris-flow-plan/SKILL.md` |
22
23
  | implement | build from a plan or confirmed scope | `skills/oris-flow-implement/SKILL.md` |
23
24
  | fix | fix a bug or regression | `skills/oris-flow-fix/SKILL.md` |
25
+ | verify | check acceptance criteria against the real product, once | `skills/oris-flow-verify/SKILL.md` |
26
+ | change | the spec changed — update analysis, criteria, plan, and history together | `skills/oris-flow-change/SKILL.md` |
24
27
  | loop | repeat work until verified (design, demo, run, tune) | `skills/oris-loop/SKILL.md` |
28
+ | architecture | review architecture, find deepening/refactor opportunities | `skills/oris-flow-architecture/SKILL.md` |
29
+ | merge | resolve an in-progress merge/rebase conflict | `skills/oris-flow-merge/SKILL.md` |
25
30
  | docs | update task docs after a change | `skills/oris-flow-docs/SKILL.md` |
26
31
  | help | how Oris works, install, troubleshooting | `skills/oris-help/SKILL.md` |
27
32
 
28
33
  ROUTING:
29
34
  1. IF intent is clear → say one line ("Entering <route>: <why>"), then READ and APPLY the destination skill immediately. NEVER tell the user to type another command.
30
35
  2. IF intent is unclear → ask ONE menu question (below).
31
- 3. IF the user wants to analyze, rethink, or change an existing plan → route to the interview owner (discover / plan / loop), NEVER straight to implement.
32
- 4. IF `.oris-flow/manifest.json` is missingrecommend setup first; respect the user's choice.
33
- 5. Destination skills marked `disable-model-invocation` may still be entered from here that flag only blocks unsolicited invocation from generic chat.
36
+ 3. IF the user wants to analyze, rethink, or change an existing plan → route to the interview owner (discover / plan / change), NEVER straight to implement.
37
+ 4. IF requirements changed on a feature that already has task docs or code change, not discover (change owns the delta + history).
38
+ 5. IF `.oris-flow/manifest.json` is missing recommend setup first; respect the user's choice.
39
+ IF the target directory is empty or the user starts a project from scratch → new, not setup.
40
+ 6. Destination skills marked `disable-model-invocation` may still be entered from here — that flag only blocks unsolicited invocation from generic chat.
34
41
 
35
42
  ## Menu (low confidence)
36
43
 
37
44
  ASK "What do you want to do?" localized to `uiLanguage`, options:
38
45
 
39
46
  - Setup repository
47
+ - New project from scratch
40
48
  - Understand / define behavior (discovery)
41
49
  - Acceptance criteria
42
50
  - Technical plan
43
51
  - Implement or fix
52
+ - Verify acceptance criteria
53
+ - Spec changed: update feature docs
44
54
  - Loop: repeat until verified
55
+ - Architecture review
56
+ - Resolve merge conflicts
45
57
  - Update docs
46
58
  - Help
47
59
  - Explain the options / Spiega le opzioni
48
60
 
49
61
  IF "Implement or fix" → one follow-up: new planned work (implement) or broken behavior (fix)?
50
62
  IF "Explain the options" → explain briefly, re-ask the same question.
63
+ Every other label maps 1:1 to its route in the table above.
51
64
 
52
65
  ## Done when
53
66
 
@@ -0,0 +1,64 @@
1
+ ---
2
+ name: oris-flow-architecture
3
+ description: Scan the codebase for architectural friction, present deepening opportunities as a visual HTML report, then interview through the picked one. Use for architecture review, refactor opportunities, tech-debt mapping intents.
4
+ disable-model-invocation: true
5
+ ---
6
+
7
+ # Architecture Review
8
+
9
+ Surface architectural friction and propose deepening opportunities — refactors that turn shallow modules into deep ones. The aim is testability and AI-navigability.
10
+
11
+ RULES: follow `references/conventions.md`. NEVER edit product code here — output is a report + an interview; implementation routes to plan/implement.
12
+
13
+ ## Vocabulary (use these words exactly)
14
+
15
+ - **module** — a unit with an interface and an implementation. Never "component", "service", "layer".
16
+ - **interface** — what callers must know. Never "API", "signature".
17
+ - **deep / shallow** — deep: small interface, big implementation. Shallow: interface nearly as complex as the implementation.
18
+ - **seam** — where two modules meet. Never "boundary". One adapter = hypothetical seam; two = real.
19
+ - **locality** — bugs concentrate where the behavior lives; **leverage** — one interface serves N call sites.
20
+ - **deletion test** — would deleting the module concentrate complexity (good signal) or just move it?
21
+
22
+ ## 1. Explore
23
+
24
+ 1. READ first: setup map, `CONTEXT.md` (domain names for good seams), `docs/adr/` (decisions NOT to re-litigate).
25
+ 2. WALK the codebase with parallel subagents. No rigid heuristics — note real friction:
26
+ - understanding one concept requires bouncing between many small modules;
27
+ - shallow modules (deletion test says "concentrates");
28
+ - pure functions extracted for testability while the bugs hide in how they're called (no locality);
29
+ - tight coupling leaking across seams;
30
+ - untested code, or code untestable through its current interface.
31
+
32
+ ## 2. Report (HTML, outside the repo)
33
+
34
+ WRITE a self-contained HTML file to the OS temp dir (`architecture-review-<timestamp>.html`), OPEN it (`start` | `open` | `xdg-open`), TELL the absolute path. Nothing lands in the repo.
35
+
36
+ FORMAT: Tailwind CDN + Mermaid CDN. Per candidate, one card:
37
+ - title (names the deepening) + strength badge: `Strong` | `Worth exploring` | `Speculative`;
38
+ - files (monospaced), Problem (one sentence), Solution (one sentence);
39
+ - Before/After diagram side by side — Mermaid for graph-shaped (dependencies, sequences), hand-built divs/SVG for mass diagrams and collapses; if the diagram needs a paragraph, redraw the diagram;
40
+ - wins as bullets ≤6 words, glossary terms only ("locality: bugs concentrate", "interface shrinks") — never "cleaner code";
41
+ - ADR conflict → amber callout ("contradicts ADR-0007 — worth reopening because…"); surface only when friction is real.
42
+
43
+ END with Top recommendation: one candidate, one sentence why.
44
+ DO NOT propose interfaces yet. ASK: "Which of these would you like to explore?"
45
+
46
+ ## 3. Walk the picked candidate
47
+
48
+ INTERVIEW per conventions (one question per turn, recommended answer first): constraints, dependencies, the shape of the deepened module, what sits behind the seam, which tests survive.
49
+
50
+ SIDE EFFECTS as decisions crystallize:
51
+ - new concept named → add the term to `CONTEXT.md` (create lazily);
52
+ - fuzzy term sharpened → update `CONTEXT.md` in place;
53
+ - candidate rejected for a load-bearing reason → offer an ADR so future reviews don't re-suggest it (skip ephemeral reasons).
54
+
55
+ ## After
56
+
57
+ OFFER: technical plan for the deepening (`skills/oris-flow-plan/SKILL.md`) | explore another candidate | stop. Never auto-start.
58
+
59
+ ## Done when
60
+
61
+ - [ ] CONTEXT.md and ADRs read before exploring; no ADR re-litigated silently.
62
+ - [ ] Report written to temp (repo untouched), opened, path shown.
63
+ - [ ] Glossary terms used exactly; wins named in locality/leverage terms.
64
+ - [ ] Implementation routed to plan, not started here.
@@ -0,0 +1,55 @@
1
+ ---
2
+ name: oris-flow-change
3
+ description: Handle a spec change on an existing feature - scoped delta interview, impact analysis, homogeneous update of all task documents, traceable CH-xxx change log. Use when requirements changed mid-implementation or the client changed their mind. Ambiguous request - route to /oris-flow.
4
+ ---
5
+
6
+ # Spec Change
7
+
8
+ Specs changed while the feature exists (documented, planned, or half-built). Understand the delta, update EVERYTHING together, keep the history traceable.
9
+
10
+ RULES: follow `references/conventions.md`. Doc standards: `references/doc-policy.md`.
11
+ NEVER write code here. NEVER update documents one-by-one across separate requests — the whole point is one homogeneous, approved update.
12
+
13
+ ## Delta interview
14
+
15
+ 1. EXPLORE first: task folder ({task} per doc-policy), `functional-analysis.md`, `acceptance-criteria.md`, `implementation-plan.md`, `change-log.md`, implemented code state.
16
+ 2. ASK one business question at a time (discover style, early exit always present): what changes, why, what stays valid, what is now wrong, urgency vs work already done.
17
+ 3. STOP interviewing when the delta is explicit: before-behavior → after-behavior, confirmed.
18
+
19
+ ## Impact analysis
20
+
21
+ MAP the delta to every artifact BEFORE proposing edits:
22
+ - functional-analysis sections affected;
23
+ - `AC-xxx` criteria: changed (keep ID) | removed (mark, never recycle the ID) | new (next free ID);
24
+ - plan tasks `### n.`: changed | obsolete | new;
25
+ - implemented code and tests already touched (report only — fixing/implementing is not this skill);
26
+ - docs and open points now stale.
27
+
28
+ SHOW the impact map compactly. ASK ONE question: Apply all updates | Adjust the delta | Stop.
29
+
30
+ ## Apply (one approved pass)
31
+
32
+ ON approval, update ALL affected documents together (language `artifactLanguage`):
33
+ 1. REWRITE affected sections to the new behavior; add one change-history row per document (doc-policy rule 4).
34
+ 2. APPEND one entry to `{tasksRoot}/{task}/change-log.md` (create on first change):
35
+
36
+ ```markdown
37
+ # {Feature} — Change Log
38
+ ## CH-001 {short title}
39
+ Date: … | Requested by: … | Reason: …
40
+ Delta: {before → after, business language}
41
+ Impacted: functional-analysis §…, AC-004 (changed), AC-007 (removed), plan tasks 3-4, code: {area}
42
+ Follow-up: implement delta | re-verify | none
43
+ ```
44
+
45
+ 3. `CH-xxx` IDs are stable and never recycled — they are the feature's change history.
46
+
47
+ ## After
48
+
49
+ OFFER: implement the delta (`skills/oris-flow-implement/SKILL.md`) | re-verify criteria (`skills/oris-flow-verify/SKILL.md`) | stop. Never auto-start.
50
+
51
+ ## Done when
52
+
53
+ - [ ] Delta confirmed in business terms before any edit.
54
+ - [ ] Impact map approved; all affected documents updated in ONE pass.
55
+ - [ ] CH-xxx entry written; AC IDs preserved, removed IDs never recycled.
@@ -5,7 +5,7 @@ description: Generate or audit business-readable acceptance criteria with stable
5
5
 
6
6
  # Acceptance Criteria
7
7
 
8
- Generate verifiable, browser-observable criteria. These later feed loop VERIFIER prompts — precision here pays twice.
8
+ Generate verifiable criteria grounded in observable product behavior — UI, API response, CLI output, or a visible system effect, whatever the product exposes. These later feed `oris-flow-verify` checks and loop VERIFIER prompts — precision here pays twice.
9
9
 
10
10
  RULES: follow `references/conventions.md`. Doc standards: `references/doc-policy.md`.
11
11
  NEVER write code, Git, or DevOps here.
@@ -15,7 +15,13 @@ NEVER write code, Git, or DevOps here.
15
15
  1. SOURCES in order of trust: confirmed chat > task docs (`functional-analysis.md` preferred, never required — say once when missing) > current UI > code and tests.
16
16
  2. DEDUCE create vs update: existing `acceptance-criteria.md` → update, PRESERVE IDs; never recycle a removed ID for different behavior.
17
17
  3. IDs: `AC-001`, `AC-002`, … stable across revisions.
18
- 4. Each scenario: role + starting state, deterministic data, numbered user steps, observable outcome placed under the step that causes it, negative coverage, regressions to keep.
18
+ 4. Each scenario declares ALL of:
19
+ - role + starting state;
20
+ - deterministic data;
21
+ - numbered user steps;
22
+ - observable outcome, placed under the step that causes it;
23
+ - negative coverage;
24
+ - regressions to keep.
19
25
  5. CLASSIFY each: `Verifiable` | `Needs setup/data` | `Blocked by Open QA`.
20
26
  6. DISCARD criteria not checkable through observable product behavior. For unbuilt features: only confirmed intended behavior — NEVER invent labels or messages.
21
27
 
@@ -25,7 +31,7 @@ ASK one at a time, only what docs/UI/code cannot answer: actor boundaries, requi
25
31
 
26
32
  ## Write + gate
27
33
 
28
- WRITE `docs/tasks/{task}/acceptance-criteria.md` (language `artifactLanguage`):
34
+ WRITE `{tasksRoot}/{task}/acceptance-criteria.md` (language `artifactLanguage`):
29
35
 
30
36
  ```markdown
31
37
  # {Feature} — Acceptance Criteria
@@ -40,7 +46,7 @@ Negative: … | Regressions: …
40
46
  ```
41
47
 
42
48
  THEN ask ONE question: Approve document | Regenerate | Edit specific criteria | Cancel.
43
- Document is confirmed ONLY on approval. AFTER: offer technical plan | verification loop | stop.
49
+ Document is confirmed ONLY on approval. AFTER: offer technical plan (`skills/oris-flow-plan/SKILL.md`) | verify now (`skills/oris-flow-verify/SKILL.md`, when the feature is already built) | stop.
44
50
 
45
51
  ## Done when
46
52
 
@@ -12,15 +12,20 @@ NEVER write code, Git, or DevOps here. WRITE `functional-analysis.md` only after
12
12
 
13
13
  ## Before asking
14
14
 
15
- 1. EXPLORE first: task folder (`docs/tasks/{task}/`), existing `functional-analysis.md` / `acceptance-criteria.md` / `implementation-plan.md`, project docs, setup map, code evidence, DevOps context when available.
15
+ 1. EXPLORE first: task folder (`{tasksRoot}/{task}/`), existing `functional-analysis.md` / `acceptance-criteria.md` / `implementation-plan.md`, project docs, setup map, code evidence, DevOps context when available.
16
16
  2. DEDUCE create vs update: existing `functional-analysis.md` → update; missing → create. Ask only on contradictory signals.
17
17
  3. Technical evidence = private input. TRANSLATE it to business language; never show file paths or code to the stakeholder.
18
18
 
19
19
  ## Interview
20
20
 
21
21
  ASK one business decision at a time, recommended answer first, early-exit option always present.
22
- BUSINESS ONLY: actors, roles, permissions, goals, current vs desired behavior, visible states, labels, messages, navigation, edge cases, empty/error states, scope in/out/deferred, rollout, priority.
23
- NEVER ask about: files, APIs, services, tables, selectors, branches, tests, frameworks, implementation order.
22
+ BUSINESS ONLY, in rough priority:
23
+ - actors, roles, permissions, goals;
24
+ - current vs desired behavior;
25
+ - visible states, labels, messages, navigation;
26
+ - edge cases, empty/error states;
27
+ - scope in/out/deferred, rollout, priority.
28
+ NEVER ask about implementation: files, APIs, services, tables, selectors, branches, tests, frameworks, sequencing.
24
29
  WALK every branch of the decision tree until intent, boundaries, cases, and open points are explicit or intentionally parked. Do not stop at the first plausible answer.
25
30
  ESTIMATE complexity in Fibonacci Story Points (1–21) from scope, dependencies, uncertainty, QA impact.
26
31
 
@@ -28,7 +33,7 @@ ESTIMATE complexity in Fibonacci Story Points (1–21) from scope, dependencies,
28
33
 
29
34
  SHOW compact summary: goal, confirmed behavior, scope in/out, open points, estimate.
30
35
  ASK: generate the document | keep interviewing | explain.
31
- ON generate → write `docs/tasks/{task}/functional-analysis.md` per the template below (language: `artifactLanguage`).
36
+ ON generate → write `{tasksRoot}/{task}/functional-analysis.md` per the template below (language: `artifactLanguage`).
32
37
 
33
38
  ## Document template
34
39
 
@@ -49,7 +54,7 @@ FACTS only from confirmed sources; open questions go to Open points — NEVER in
49
54
 
50
55
  ## After writing
51
56
 
52
- OFFER: acceptance criteria | technical plan | stop. Never auto-start the next phase.
57
+ OFFER: acceptance criteria (`skills/oris-flow-criteria/SKILL.md`) | technical plan (`skills/oris-flow-plan/SKILL.md`) | stop. Never auto-start the next phase.
53
58
 
54
59
  ## Done when
55
60
 
@@ -1,12 +1,12 @@
1
1
  ---
2
2
  name: oris-flow-docs
3
- description: Update existing task documents after a later functional, QA, or implementation change. Use when documented behavior changed and docs/tasks files must record it.
3
+ description: Update existing task documents after a later functional, QA, or implementation change. Use when documented behavior changed and task documents must record it.
4
4
  disable-model-invocation: true
5
5
  ---
6
6
 
7
7
  # Update Task Docs
8
8
 
9
- Bring `docs/tasks/{task}/` documents in line with a later change, keeping the change traceable.
9
+ Bring `{tasksRoot}/{task}/` documents in line with a later change, keeping the change traceable ({tasksRoot} per doc-policy).
10
10
 
11
11
  RULES: follow `references/conventions.md`. Doc standards: `references/doc-policy.md`.
12
12
 
@@ -33,7 +33,7 @@ NEVER edit code before root cause, proposed fix, and verification plan are summa
33
33
 
34
34
  1. RUN the reproduction + targeted tests; broaden if the surface is shared.
35
35
  2. SUMMARIZE: cause, change, verification, residual risk.
36
- 3. RECOMMEND: `/oris-loop` verification when criteria exist; docs update when documented behavior changed.
36
+ 3. RECOMMEND: `skills/oris-flow-verify/SKILL.md` when criteria exist; docs update when documented behavior changed.
37
37
 
38
38
  ## Done when
39
39
 
@@ -13,7 +13,7 @@ NEVER edit code before BOTH the source (plan or recap) and the execution mode ar
13
13
 
14
14
  ## Prepare
15
15
 
16
- 1. FIND `docs/tasks/{task}/implementation-plan.md`. IF missing → reconstruct a technical recap from chat, task docs, and code; SHOW it; CONFIRM before any edit.
16
+ 1. FIND `{tasksRoot}/{task}/implementation-plan.md`. IF missing → reconstruct a technical recap from chat, task docs, and code; SHOW it; CONFIRM before any edit.
17
17
  2. READ setup map, project standards, local skills/rules, tests and build conventions for the touched area.
18
18
  3. MAP the code, tests, config, and translations the plan touches (parallel subagents when available).
19
19
 
@@ -34,7 +34,7 @@ NEVER edit code before BOTH the source (plan or recap) and the execution mode ar
34
34
 
35
35
  1. RUN targeted verification first; broaden when the touched surface is shared.
36
36
  2. SUMMARIZE: touched files, verification results, residual risk.
37
- 3. RECOMMEND next: `/oris-loop` verification loop when acceptance criteria exist; otherwise update docs (`oris-flow-docs`).
37
+ 3. RECOMMEND next: `skills/oris-flow-verify/SKILL.md` when acceptance criteria exist; otherwise update docs (`skills/oris-flow-docs/SKILL.md`).
38
38
 
39
39
  ## Done when
40
40
 
@@ -0,0 +1,45 @@
1
+ ---
2
+ name: oris-flow-merge
3
+ description: Resolve an in-progress git merge or rebase conflict - understand both intents from primary sources, preserve them, verify with project checks, finish. Use for merge conflict, rebase conflict, "conflitti" intents.
4
+ disable-model-invocation: true
5
+ ---
6
+
7
+ # Resolve Merge Conflicts
8
+
9
+ Resolve the in-progress merge/rebase by understanding WHY each side changed, not by picking lines that compile.
10
+
11
+ RULES: follow `references/conventions.md`. ALWAYS resolve; never `--abort`. NEVER invent new behavior a conflict hunk doesn't contain.
12
+
13
+ ## 1. See the state
14
+
15
+ 1. READ: `git status`, which operation (merge | rebase | cherry-pick), conflicting files, the merge's stated goal (branch names, merge commit message).
16
+ 2. LIST every conflict hunk before touching any.
17
+
18
+ ## 2. Find the primary sources
19
+
20
+ For EACH conflicting area:
21
+ - `git log` both sides of the hunk (`git log --merge`, `git blame`), read the commit messages;
22
+ - CHECK the PRs / tickets / task docs (`{tasksRoot}/…`, tracker IDs in messages) behind each change;
23
+ - STATE both intents in one line each BEFORE resolving. Unknown intent = investigate more, not guess.
24
+
25
+ ## 3. Resolve
26
+
27
+ - PRESERVE both intents where possible.
28
+ - INCOMPATIBLE → pick the side matching the merge's stated goal; NOTE the trade-off in the resolution summary.
29
+ - NEVER invent behavior that exists on neither side.
30
+
31
+ ## 4. Verify
32
+
33
+ 1. READ verify commands from the setup map (`confirmed` first); ELSE discover: typecheck → tests → lint/format.
34
+ 2. RUN them; FIX what the merge broke — the conflict isn't resolved until checks pass.
35
+
36
+ ## 5. Finish
37
+
38
+ - STAGE everything, COMMIT (merge) or `git rebase --continue` until all commits are replayed.
39
+ - SUMMARIZE: hunks resolved, intents preserved, trade-offs taken, checks output.
40
+
41
+ ## Done when
42
+
43
+ - [ ] Both intents stated per hunk before resolving; no invented behavior.
44
+ - [ ] Project checks ran green after resolution.
45
+ - [ ] Merge/rebase completed — never aborted, never left half-done.
@@ -0,0 +1,58 @@
1
+ ---
2
+ name: oris-flow-new
3
+ description: Bootstrap a new project optimized for AI-driven development - interview, scaffold agent-native standards (AGENTS.md, CONTEXT.md, ADRs, skills, deterministic verify), arm the Oris flow. Use for new project, greenfield, start-from-scratch intents.
4
+ disable-model-invocation: true
5
+ ---
6
+
7
+ # New Project
8
+
9
+ Bootstrap a repo where agents work at their best from day zero: minimal agent guidance, a domain glossary, recorded decisions, repeatable skills, and a deterministic feedback loop. Then hand it to the flow.
10
+
11
+ RULES: follow `references/conventions.md`. Writes ONLY after the recap is confirmed.
12
+
13
+ ## Interview (one decision per turn, recommended answer first)
14
+
15
+ 1. PURPOSE — the product in one sentence (it anchors every agent decision; it opens AGENTS.md).
16
+ 2. TYPE — webapp | api | library | cli | monorepo. Drives layout and verify strategy.
17
+ 3. STACK — recommend from purpose + the user's existing repos (setup maps of sibling projects when visible). Never impose.
18
+ 4. TEST RUNNER + LINT — pick the stack's default unless the user objects. Non-negotiable that one exists: agents need a red/green signal, not opinions.
19
+ 5. NAME + LOCATION — kebab-case; confirm the target directory is empty or new.
20
+
21
+ ## Scaffold (one confirmed pass)
22
+
23
+ WRITE the agent-native baseline — sparse beats complete, every file must earn its tokens:
24
+
25
+ | File | Content |
26
+ |------|---------|
27
+ | `AGENTS.md` | one-line purpose, package manager, then COMMANDS first: setup, test, lint, build. Nothing agents can discover alone. ~20 lines max |
28
+ | `CONTEXT.md` | domain glossary seeded from the interview: each core concept, one line, the exact name agents must use |
29
+ | `docs/adr/0001-stack.md` | the stack choice + why — the first decision agents must not re-litigate |
30
+ | `README.md` | humans: purpose, quickstart pointer |
31
+ | stack init | package manifest, `src/`, test runner + lint configured |
32
+ | one sample test | proves the loop: make it fail, make it pass, show both outputs |
33
+ | `.gitignore` + `git init` | first commit only on explicit confirmation |
34
+
35
+ MONOREPO → root `AGENTS.md` = purpose + navigation; each package gets its own minimal `AGENTS.md`. Nearest file wins.
36
+
37
+ PROJECT SKILLS — offer to seed `.claude/skills/` (or `.cursor/rules/`) with the first repeatable workflow (e.g. "add a module", "add an endpoint") once one exists; skills are the project's how-to source of truth, growing with the code.
38
+
39
+ ## Verify the feedback loop
40
+
41
+ RUN the test command and the lint command; SHOW real output. A bootstrap whose verify commands were never observed green is not done.
42
+
43
+ ## Arm the flow
44
+
45
+ 1. RUN `npx oris-skills flow scan --repository-root <repo> --write` — manifest + maps; commands just verified → mark `confirmed`.
46
+ 2. RUN `npx oris-skills loop bootstrap --repository-root <repo>`.
47
+ 3. tasksRoot: `.oris-flow/tasks` (default — the project stays clean).
48
+
49
+ ## After
50
+
51
+ OFFER: discover the first feature (`skills/oris-flow-discover/SKILL.md`) | stop. Never auto-start.
52
+
53
+ ## Done when
54
+
55
+ - [ ] Purpose, type, stack, test runner confirmed before any write.
56
+ - [ ] AGENTS.md sparse and commands-first; CONTEXT.md + ADR-0001 written.
57
+ - [ ] Test + lint observed running (fail → pass shown).
58
+ - [ ] Manifest written with confirmed commands; loop bootstrapped.
@@ -18,14 +18,18 @@ NEVER write code, Git, or DevOps here. WRITE `implementation-plan.md` only after
18
18
 
19
19
  ## Interview
20
20
 
21
- ASK one technical decision at a time, recommended answer first, early-exit always present:
22
- ownership boundaries, files/symbols to touch, APIs/contracts, data model, permissions, feature flags, frontend integration, migrations, verification strategy, rollout, risk, sequencing.
21
+ ASK one technical decision at a time, recommended answer first, early-exit always present. Cover:
22
+ - ownership boundaries, files/symbols to touch;
23
+ - APIs/contracts, data model, migrations;
24
+ - permissions, feature flags, frontend integration;
25
+ - verification strategy;
26
+ - rollout, risk, sequencing.
23
27
 
24
28
  ## Generation gate
25
29
 
26
30
  SHOW compact recap: approach, touched areas, sequence, verification, risks, open points.
27
31
  ASK: generate the document | keep interviewing | explain.
28
- ON generate → write `docs/tasks/{task}/implementation-plan.md` (language `artifactLanguage`):
32
+ ON generate → write `{tasksRoot}/{task}/implementation-plan.md` (language `artifactLanguage`):
29
33
 
30
34
  ```markdown
31
35
  # {Feature} — Implementation Plan
@@ -42,7 +46,7 @@ Numbered `### n.` tasks are the execution steps `oris-flow-implement` will follo
42
46
 
43
47
  ## After writing
44
48
 
45
- OFFER: implement | verification loop | stop. Never auto-start.
49
+ OFFER: implement (`skills/oris-flow-implement/SKILL.md`) | stop. Never auto-start.
46
50
 
47
51
  ## Done when
48
52
 
@@ -1,38 +1,69 @@
1
1
  ---
2
2
  name: oris-flow-setup
3
- description: Prepare a repository for Oris - interview, scan, write .oris-flow/manifest.json + maps, arm loop hooks. Use for setup, map, refresh, or "prepare this repo for Oris" intents.
3
+ description: Prepare a repository for Oris - explore, detect project type, write .oris-flow/manifest.json + maps, check AI-readiness, arm loop hooks. Use for setup, map, refresh, or "prepare this repo for Oris" intents.
4
4
  disable-model-invocation: true
5
5
  ---
6
6
 
7
7
  # Oris Setup
8
8
 
9
- GOAL: make the repo cheap for Oris to understand — manifest + maps + loop readiness. Writes ONLY after the user confirms the recap.
9
+ GOAL: make the repo cheap for agents to understand — manifest + maps + AI-readiness + loop readiness. Adapt to what the repo IS; never force one structure. Writes ONLY after the user confirms.
10
10
 
11
11
  RULES: follow `references/conventions.md`. Map format: `references/repo-map.md`.
12
+ IF the repo is empty or brand-new → route to `skills/oris-flow-new/SKILL.md` instead.
12
13
 
13
14
  ## Mode
14
15
 
15
- IF `.oris-flow/manifest.json` exists → ask ONE question: refresh all | update one area | review stale sections | show summary (no writes) | recreate from scratch | language & profiles | clean runtime.
16
- ELSE create from scratch.
16
+ IF `.oris-flow/manifest.json` exists → ask ONE question with these options:
17
+ - refresh all (keeps `confirmed` values — scan merges, never overwrites them)
18
+ - update one area (`--area <section>`)
19
+ - review stale sections
20
+ - show summary (no writes)
21
+ - recreate from scratch
22
+ - language & profiles → Local Preferences below; touches only `~/.oris/settings.json`
23
+ - clean runtime → preview with `npx oris-skills flow clean-runtime --repository-root <repo> --dry-run`, confirm, run without `--dry-run`
17
24
 
18
- - "language & profiles" Local Preferences below; touches only `~/.oris/settings.json`.
19
- - "clean runtime" → preview with `oris-skills flow clean-runtime --repository-root <repo> --dry-run`, confirm, run without `--dry-run`.
25
+ ELSEcreate from scratch.
20
26
 
21
- ## Workflow
27
+ ## 1. Explore first
22
28
 
23
29
  1. CONFIRM the target repository root (ask only if multiple roots are plausible).
24
- 2. INTERVIEW before scanning: project context, key standards, test depth, protected areas.
25
- 3. SCAN: `oris-skills flow scan --repository-root <repo> --json` = deterministic baseline. Add parallel subagent scans (docs, frontend, backend/data, tests/build, local skills/rules) only when needed. Scan output = draft evidence, not truth.
26
- 4. DRAFT manifest + map sections with confidence flags; ask focused questions ONLY for ambiguous, high-impact facts.
27
- 5. ASK refresh policy (manual | monthly | after refactor | after test-layout change) — advisory only, never a scheduler.
28
- 6. ASK version control for the map: commit (team default) or gitignore. Record in manifest.
29
- 7. RECAP: repo, mode, detected stack, files to write, loop-readiness gaps, choices. CONFIRM explicitly.
30
- 8. WRITE `.oris-flow/manifest.json` + `.oris-flow/maps/**`, then apply:
31
- - `oris-skills flow version-control --repository-root <repo> --mode commit|gitignore`
32
- - `oris-skills loop bootstrap --repository-root <repo>` when adapter/hooks are missing.
33
- 9. OFFER next steps: discovery, technical plan, loop (mention `oris-skills loop demo` for first-timers), refresh one area, stop.
34
-
35
- REFRESH runs keep user-confirmed values unless the scan proves them stale; update `updatedAt`, confidence, stale flags.
30
+ 2. SCAN: `npx oris-skills flow scan --repository-root <repo> --json` — deterministic baseline: `projectType`, stacks, commands (with confidence), sections, `truncated` flag. Scan output = draft evidence, not truth.
31
+ 3. IF `truncated: true` say so; large monorepos may need per-area subagent scans.
32
+ 4. ADD parallel subagent scans (docs, frontend, backend/data, tests/build, local skills/rules) only when the baseline leaves real gaps.
33
+
34
+ ## 2. Present findings, decide one at a time
35
+
36
+ SHOW compactly: detected project type + evidence, stacks, commands, AI-readiness (below). Then walk decisions ONE per turn — short explainer first, recommended answer first, assume the user may not know the term:
37
+
38
+ - **Project type** — confirm or correct `projectType` (webapp | api | library | cli | monorepo). It drives which map sections matter and how criteria/verify will observe behavior.
39
+ - **Tasks root** where Oris writes task documents. Default `.oris-flow/tasks` (Oris's own folder, keeps the project clean). Keep `docs/tasks` only when the team already treats task docs as project docs. Record in `setup.tasksRoot`.
40
+ - **Verify commands** — show detected/inferred build+test commands; user confirms or corrects → mark `confirmed`. These feed implement, verify, and loop VERIFIER; an unconfirmed command is a guess.
41
+ - **Refresh policy** (manual | monthly | after refactor | after test-layout change) — advisory only, never a scheduler.
42
+ - **Version control for `.oris-flow/`** — commit (team default) or gitignore. Task docs follow the same choice.
43
+
44
+ ## 3. AI-readiness check
45
+
46
+ COMPARE the repo against the agent-native standards; report gaps, one line each, with a fix offer:
47
+
48
+ | Check | Why it matters |
49
+ |-------|----------------|
50
+ | `AGENTS.md` (or `CLAUDE.md`) at root | the cross-tool agent entry point — minimal: one-line purpose + commands. Keep it sparse; every token loads on every request |
51
+ | `CONTEXT.md` | domain glossary — names agents must use for the product's concepts |
52
+ | `docs/adr/` | decisions agents must not re-litigate |
53
+ | project skills/rules (`.claude/skills`, `.cursor/rules`) | repeatable workflows as source of truth |
54
+ | confirmed test/build commands | deterministic feedback loop — agents verify instead of guessing |
55
+
56
+ ON explicit confirmation per file → scaffold the missing ones minimal (never overwrite existing content; edit the file that exists, never create AGENTS.md beside CLAUDE.md).
57
+
58
+ ## 4. Recap + write
59
+
60
+ 1. RECAP: repo, mode, project type, tasksRoot, files to write, AI-readiness gaps, choices. CONFIRM explicitly.
61
+ 2. WRITE `.oris-flow/manifest.json` + `.oris-flow/maps/**` (enrich generated sections with confirmed facts; set their confidence to `confirmed` so refresh preserves them), then apply:
62
+ - `npx oris-skills flow version-control --repository-root <repo> --mode commit|gitignore`
63
+ - `npx oris-skills loop bootstrap --repository-root <repo>` when adapter/hooks are missing.
64
+ 3. OFFER next steps: discovery, technical plan, loop (mention `npx oris-skills loop demo` for first-timers), refresh one area, stop.
65
+
66
+ REFRESH runs keep user-confirmed values — the scan merges (`confirmed` sections/commands/decisions survive; missing evidence marks them stale, never deletes).
36
67
 
37
68
  ## Local Preferences
38
69
 
@@ -43,7 +74,7 @@ REFRESH runs keep user-confirmed values unless the scan proves them stale; updat
43
74
 
44
75
  ## Done when
45
76
 
46
- - [ ] Mode chosen; scan before questions; questions only for real ambiguity.
47
- - [ ] Explicit confirmation before every write.
48
- - [ ] No secrets in repository files.
49
- - [ ] Loop readiness bootstrapped or intentionally skipped.
77
+ - [ ] Mode chosen; scan before questions; decisions asked one at a time with explainers.
78
+ - [ ] Project type and tasksRoot recorded; confirmed commands marked `confirmed`.
79
+ - [ ] AI-readiness gaps reported; files scaffolded only on explicit per-file confirmation.
80
+ - [ ] Explicit confirmation before every write; no secrets in repository files.
@@ -0,0 +1,50 @@
1
+ ---
2
+ name: oris-flow-verify
3
+ description: One-shot verification of acceptance criteria against real product behavior with a Pass/Fail evidence report. Use after implement/fix, or for verify, check, QA-run intents. Ambiguous request - route to /oris-flow.
4
+ ---
5
+
6
+ # Verify
7
+
8
+ Check every acceptance criterion against the REAL product once, with evidence. One pass, no loop ceremony.
9
+
10
+ RULES: follow `references/conventions.md`. Doc standards: `references/doc-policy.md`.
11
+ NEVER edit product code here. IF a check fails, verification records it — fixing belongs to `skills/oris-flow-fix/SKILL.md`.
12
+
13
+ ## Prepare
14
+
15
+ 1. FIND `{tasksRoot}/{task}/acceptance-criteria.md` ({task} per doc-policy). IF missing → offer: define criteria first (`skills/oris-flow-criteria/SKILL.md`) | verify against a confirmed chat recap | stop.
16
+ 2. READ setup map + verification conventions (test commands, run scripts, environments) before improvising.
17
+ 3. PLAN one check per AC: command, test, API call, or observed behavior. Skip nothing silently.
18
+
19
+ ## Verify (read-only on product code)
20
+
21
+ For EACH `AC-xxx`, in order:
22
+ - EXECUTE the numbered steps against the real product (tests, running app, API, CLI — whatever the criterion observes).
23
+ - MARK: `Pass` | `Fail` | `Not verifiable` (say why: missing data, blocked env, needs setup).
24
+ - CAPTURE evidence: command + output excerpt, observed behavior, or pointer to logs. Facts, not impressions.
25
+ - NEVER mark Pass from code reading alone when the criterion describes observable behavior.
26
+
27
+ ## Report gate
28
+
29
+ SHOW compact results: `AC-xxx → Pass/Fail/Not verifiable — one-line evidence` + totals.
30
+ ASK ONE question: Save report | Fix failures now | Stop.
31
+ ON save → write `{tasksRoot}/{task}/verification-report.md` (language `artifactLanguage`):
32
+
33
+ ```markdown
34
+ # {Feature} — Verification Report
35
+ Date: … | Source: acceptance-criteria.md | Verified by: oris-flow-verify
36
+ ## Results
37
+ | AC | Result | Evidence |
38
+ ## Failures (reproduction + observed vs expected)
39
+ ## Not verifiable (reason + what would unblock)
40
+ ## Change history (date | source | change | reason)
41
+ ```
42
+
43
+ ON fix → enter `skills/oris-flow-fix/SKILL.md` with the failing AC as the bug report.
44
+ FOR long iterative fixing with re-verification each pass → `skills/oris-loop/SKILL.md` remains available; recommend it only when one fix-verify pass is clearly not enough.
45
+
46
+ ## Done when
47
+
48
+ - [ ] Every AC checked against real behavior or explicitly marked Not verifiable.
49
+ - [ ] Evidence captured per criterion; no Pass without observation.
50
+ - [ ] Report written only after the gate; failures routed, not fixed here.
@@ -13,13 +13,13 @@ Answer in the user's language. Start with the next practical action. Keep it sho
13
13
  | Need | Answer |
14
14
  |------|--------|
15
15
  | Start anything | Type `/oris-flow` — it routes or shows the menu. It's the only command to remember. |
16
- | Try loops safely | `oris-skills loop demo` → follow the 3 printed steps (`dry-run` previews, `chat --action start` runs). |
16
+ | Try loops safely | `npx oris-skills loop demo` → follow the 3 printed steps (`dry-run` previews, `chat --action start` runs). |
17
17
  | Install / update | `npx oris-skills@latest install` (detects Cursor, Claude Code, Codex; or `--agents cursor,claude,codex`). Reload the agent afterwards. |
18
18
  | Uninstall / reinstall | `npx oris-skills uninstall` / `npx oris-skills reinstall` (preview with `--dry-run`). |
19
- | Stop a loop | `oris-skills loop chat --action stop` |
20
- | Loop status | `oris-skills loop chat --action status` / `oris-skills loop list` |
19
+ | Stop a loop | `npx oris-skills loop chat --action stop` |
20
+ | Loop status | `npx oris-skills loop chat --action status` / `npx oris-skills loop list` |
21
21
  | Skill missing after install | Reload the agent; check `~/.oris/oris-skills/` exists; re-run install with `--force`. |
22
- | Hook not firing | `oris-skills loop verify --temp` self-checks the runtime; `oris-skills loop bootstrap` re-arms repo hooks. |
22
+ | Hook not firing | `npx oris-skills loop verify --temp` self-checks the runtime; `npx oris-skills loop bootstrap` re-arms repo hooks. |
23
23
  | Change language / test profiles | `/oris-flow` → Setup → language & profiles (settings live in `~/.oris/settings.json`). |
24
24
  | Edit a loop's behavior | Edit the files in `.oris-flow/loops/{slug}/prompts/` — next pass obeys them. |
25
25