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.
- package/.cursor-plugin/plugin.json +6 -1
- package/CHANGELOG.md +38 -0
- package/README.md +11 -10
- package/agents/oris-loop-doctor.md +1 -1
- package/agents/oris-loop-verifier.md +3 -0
- package/docs/architecture.md +4 -3
- package/docs/distribution.md +1 -1
- package/docs/maintainer-guide.md +2 -2
- package/docs/user-guide.md +9 -7
- package/package.json +2 -3
- package/references/clean-code-checklist.md +20 -107
- package/references/conventions.md +16 -2
- package/references/doc-policy.md +19 -3
- package/references/loop-contract.md +23 -16
- package/references/loop.schema.json +13 -0
- package/references/repo-map.md +3 -3
- package/references/repo-map.schema.json +37 -0
- package/scripts/flow/oris-flow-layout.mjs +1 -0
- package/scripts/flow/oris-flow-scan.mjs +195 -27
- package/scripts/install/generate-agent-adapters.mjs +19 -2
- package/scripts/install/install-user-skills.mjs +7 -1
- package/scripts/loop/oris-loop-bootstrap.mjs +7 -2
- package/scripts/loop/oris-loop-chat.mjs +32 -14
- package/scripts/loop/oris-loop-demo.mjs +11 -20
- package/scripts/loop/oris-loop-document.mjs +24 -7
- package/scripts/loop/oris-loop-dry-run.mjs +7 -3
- package/scripts/loop/oris-loop-fixtures.mjs +12 -11
- package/scripts/loop/oris-loop-run.mjs +80 -20
- package/scripts/loop/oris-loop-stop.mjs +48 -9
- package/scripts/loop/oris-loop-templates.mjs +10 -7
- package/scripts/loop/oris-loop-verify.mjs +1 -2
- package/scripts/oris-skills.mjs +2 -1
- package/scripts/tests/run-all-tests.mjs +0 -2
- package/scripts/tests/test-oris-flow-scan.mjs +66 -0
- package/scripts/tests/test-oris-loop-document.mjs +39 -3
- package/scripts/tests/test-oris-loop-run.mjs +28 -2
- package/scripts/tests/test-oris-loop-smoke.mjs +36 -3
- package/scripts/tests/test-oris-loop-stop.mjs +65 -4
- package/scripts/tests/test-routing-lifecycle.mjs +11 -9
- package/skills/oris-flow/SKILL.md +16 -3
- package/skills/oris-flow-architecture/SKILL.md +64 -0
- package/skills/oris-flow-change/SKILL.md +55 -0
- package/skills/oris-flow-criteria/SKILL.md +10 -4
- package/skills/oris-flow-discover/SKILL.md +10 -5
- package/skills/oris-flow-docs/SKILL.md +2 -2
- package/skills/oris-flow-fix/SKILL.md +1 -1
- package/skills/oris-flow-implement/SKILL.md +2 -2
- package/skills/oris-flow-merge/SKILL.md +45 -0
- package/skills/oris-flow-new/SKILL.md +58 -0
- package/skills/oris-flow-plan/SKILL.md +8 -4
- package/skills/oris-flow-setup/SKILL.md +54 -23
- package/skills/oris-flow-verify/SKILL.md +50 -0
- package/skills/oris-help/SKILL.md +4 -4
- package/skills/oris-loop/SKILL.md +12 -32
- package/skills/oris-loop/references/craft.md +10 -9
- package/skills/oris-loop/references/run.md +9 -7
- package/skills/oris-loop/templates/debriefer.md +1 -1
- package/skills/oris-loop/templates/doctor.md +9 -7
- package/skills/oris-loop/templates/executor.md +3 -2
- package/skills/oris-loop/templates/orchestrator.md +10 -7
- package/skills/oris-loop/templates/verifier.md +4 -2
- 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 /
|
|
32
|
-
4. IF
|
|
33
|
-
5.
|
|
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
|
|
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
|
|
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 `
|
|
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 |
|
|
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 (`
|
|
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
|
|
23
|
-
|
|
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 `
|
|
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
|
|
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 `
|
|
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:
|
|
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 `
|
|
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:
|
|
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
|
|
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 `
|
|
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
|
|
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 -
|
|
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
|
|
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
|
|
16
|
-
|
|
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
|
-
|
|
19
|
-
- "clean runtime" → preview with `oris-skills flow clean-runtime --repository-root <repo> --dry-run`, confirm, run without `--dry-run`.
|
|
25
|
+
ELSE → create from scratch.
|
|
20
26
|
|
|
21
|
-
##
|
|
27
|
+
## 1. Explore first
|
|
22
28
|
|
|
23
29
|
1. CONFIRM the target repository root (ask only if multiple roots are plausible).
|
|
24
|
-
2.
|
|
25
|
-
3.
|
|
26
|
-
4.
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
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;
|
|
47
|
-
- [ ]
|
|
48
|
-
- [ ]
|
|
49
|
-
- [ ]
|
|
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
|
|