@hanzlaa/rcode 2.6.3 → 2.6.5

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hanzlaa/rcode",
3
- "version": "2.6.3",
3
+ "version": "2.6.5",
4
4
  "description": "Rihal Code (rcode) — installable context-brain for Rihalians. 43 agents, 99 slash commands, 56 skills, pullable Rihal standards. Unified install for Claude Code, Cursor, and Gemini.",
5
5
  "main": "cli/index.js",
6
6
  "bin": {
@@ -0,0 +1,129 @@
1
+ # Verb Dictionary — multilingual intent matching
2
+
3
+ **Purpose:** single source of truth for action verbs across all Rihal workflows that do intent matching. Without this, each workflow's matcher diverges and Roman Urdu / Hindi instructions silently miss.
4
+
5
+ **How to use from a workflow:** include this file via `@.rihal/references/verb-dictionary.md` and reference categories by name (e.g. *"verbs from §Create"*) instead of restating English-only lists inline.
6
+
7
+ ---
8
+
9
+ ## §Create — make / start / new / open
10
+
11
+ Match if `$QUESTION` contains any of these (case-insensitive):
12
+
13
+ - **English:** `create`, `make`, `start`, `build`, `set up`, `setup`, `kick off`, `spin up`, `open`, `begin`, `draft`, `generate`, `produce`, `initialize`, `init`, `bootstrap`, `establish`, `form`
14
+ - **Roman Urdu / Hindi:** `bnao`, `banao`, `bana do`, `bnado`, `banaa`, `banade`, `banayein`, `banadijiye`, `shuru karo`, `shuro karo`, `start karo`, `create karo`, `naya banao`, `nya banao`, `draft karo`, `banalo`, `khol do`, `khol lo`, `kholiye`
15
+ - **Arabic transliteration:** `ansha'`, `inshaa'`, `a3mal`, `ibda'`
16
+
17
+ ## §Add — append / include / attach / extend
18
+
19
+ - **English:** `add`, `append`, `include`, `attach`, `insert`, `extend`, `expand`, `register`
20
+ - **Roman Urdu / Hindi:** `add karo`, `daal do`, `daalo`, `daal de`, `jor do`, `jor de`, `lagao`, `lagado`, `shamil karo`, `shaamil karo`, `barhao`
21
+ - **Arabic transliteration:** `azif`, `dam'`
22
+
23
+ ## §Plan — design / scope / outline
24
+
25
+ - **English:** `plan`, `design`, `draft`, `scope`, `outline`, `architect`, `lay out`, `schedule`
26
+ - **Roman Urdu / Hindi:** `plan karo`, `design karo`, `sochlo`, `soch lo`, `layout banao`, `tarteeb do`, `tartib karo`
27
+ - **Arabic transliteration:** `khattit`, `tasmim`
28
+
29
+ ## §Execute — run / build / ship / implement / do
30
+
31
+ - **English:** `execute`, `run`, `build`, `ship`, `complete`, `do`, `implement`, `deliver`, `finish`, `wrap up`, `compile`
32
+ - **Roman Urdu / Hindi:** `chalao`, `chala do`, `run karo`, `kar do`, `kardo`, `kar lo`, `karlo`, `implement karo`, `mukammal karo`, `complete karo`, `khatam karo`, `pura karo`
33
+ - **Arabic transliteration:** `naffidh`, `aakmel`, `nafidh`
34
+
35
+ ## §Review — audit / check / inspect / verify / validate
36
+
37
+ - **English:** `review`, `audit`, `check`, `inspect`, `verify`, `validate`, `examine`, `assess`, `evaluate`
38
+ - **Roman Urdu / Hindi:** `dekho`, `dekh lo`, `dekhlo`, `check karo`, `audit karo`, `verify karo`, `validate karo`, `parkho`, `parakhh`, `mulahiza karo`, `nazar dalo`, `jaiza lo`
39
+ - **Arabic transliteration:** `raji'`, `tahaqqaq`, `dakhq`
40
+
41
+ ## §Show — list / display / get / fetch / see
42
+
43
+ - **English:** `show`, `list`, `display`, `get`, `fetch`, `see`, `view`, `print`, `output`, `summarize`
44
+ - **Roman Urdu / Hindi:** `dikhao`, `dikha do`, `dikhado`, `dikha de`, `list karo`, `batao`, `bata do`, `bata de`, `kholo`, `khol do`
45
+ - **Arabic transliteration:** `azhir`, `arini`, `aktub`
46
+
47
+ ## §Remove — delete / drop / undo / revert / kill
48
+
49
+ - **English:** `remove`, `delete`, `drop`, `undo`, `revert`, `rollback`, `kill`, `purge`, `uninstall`, `clear`, `wipe`, `erase`
50
+ - **Roman Urdu / Hindi:** `hatao`, `hata do`, `hatado`, `mita do`, `mita lo`, `mitao`, `delete karo`, `ulto`, `revert karo`, `nikalo`, `nikal do`, `khaali karo`
51
+ - **Arabic transliteration:** `ihdhif`, `azhil`, `imhu`
52
+
53
+ ## §Update — modify / change / edit / refresh / fix
54
+
55
+ - **English:** `update`, `modify`, `change`, `edit`, `refresh`, `fix`, `patch`, `tweak`, `adjust`, `correct`, `repair`
56
+ - **Roman Urdu / Hindi:** `update karo`, `badlo`, `badal do`, `badal de`, `change karo`, `edit karo`, `theek karo`, `theek kar do`, `thiek karo`, `fix karo`, `behtar karo`, `behter karo`, `improve karo`
57
+ - **Arabic transliteration:** `ghair`, `aslih`, `hadith`
58
+
59
+ ## §Pause — stop / wait / hold / cancel
60
+
61
+ - **English:** `pause`, `stop`, `wait`, `hold`, `cancel`, `abort`, `halt`, `freeze`, `defer`
62
+ - **Roman Urdu / Hindi:** `ruko`, `ruk jao`, `band karo`, `band kardo`, `cancel karo`, `roko`, `rok do`, `rok de`, `pause karo`, `wapas karo`
63
+ - **Arabic transliteration:** `tawaqaf`, `intazir`
64
+
65
+ ## §Resume — continue / pick up / restart
66
+
67
+ - **English:** `resume`, `continue`, `pick up`, `restart`, `re-run`, `replay`, `re-do`, `keep going`, `proceed`
68
+ - **Roman Urdu / Hindi:** `phir se shuru karo`, `aage barho`, `aage chalao`, `continue karo`, `wapas chalao`, `dobara chalao`, `dobara karo`
69
+ - **Arabic transliteration:** `astamir`, `i'ad`
70
+
71
+ ---
72
+
73
+ ## Scope nouns (paired with verbs to detect intent)
74
+
75
+ These are matched alongside §Create / §Add / §Plan verbs to determine the dispatch route.
76
+
77
+ | Scope noun | Aliases (English + Urdu) | Maps to (workflow) |
78
+ |---|---|---|
79
+ | milestone | `milestone`, `milestones`, `release`, `version`, `cycle` | `/rihal:new-milestone` |
80
+ | phase | `phase`, `phases` (singular intent — "add a phase") | `/rihal:add-phase` |
81
+ | story | `story`, `stories`, `user story`, `kahani` | `/rihal:create-story` |
82
+ | epic | `epic`, `epics`, `epics and stories` | `/rihal:create-epics-and-stories` |
83
+ | sprint | `sprint`, `iteration` | `/rihal:sprint-planning` |
84
+ | PRD | `PRD`, `requirements doc`, `product requirements` | `/rihal:create-prd` |
85
+ | roadmap | `roadmap`, `plan` (top-level) | `/rihal:create-milestone` |
86
+ | council | `council`, `majlis`, `panel`, `mashwara`, `salah` | `/rihal:council` |
87
+ | plan (verb form — "plan phase N") | `plan` | `/rihal:plan` |
88
+ | story (impl) | `dev story`, `implement story`, `build story` | `/rihal:dev-story` |
89
+ | brainstorm | `brainstorm`, `ideas`, `sochain`, `sochna` | `/rihal:brainstorm` |
90
+ | review (code) | `code review`, `karpathy`, `check my diff` | `/rihal:karpathy-audit` / `/rihal:code-review` |
91
+ | debug | `debug`, `fix`, `bug`, `error`, `crash`, `kharab`, `theek` | `/rihal:debug` |
92
+
93
+ ---
94
+
95
+ ## Usage examples
96
+
97
+ **From a workflow (e.g. `do.md`):**
98
+
99
+ ```markdown
100
+ ## Step: Match intent
101
+
102
+ Apply §Create + scope-noun match per @.rihal/references/verb-dictionary.md.
103
+
104
+ If `$QUESTION` contains any verb from §Create AND any scope noun from the
105
+ table above, dispatch directly to the mapped workflow without an
106
+ ambiguity prompt.
107
+
108
+ Example: "milestone bnao" → §Create matches "bnao", scope matches
109
+ "milestone" → /rihal:new-milestone (with state-aware redirect to
110
+ /rihal:add-phase if a milestone is already active).
111
+ ```
112
+
113
+ **From an agent file (e.g. `rihal-codebase-mapper.md`) when interpreting the orchestrator prompt:**
114
+
115
+ ```markdown
116
+ @.rihal/references/verb-dictionary.md
117
+
118
+ ## Workflow
119
+
120
+ Recognize §Show / §Review / §Update verbs against the codebase. Honor
121
+ multilingual phrasing — never silently fall through because a Roman
122
+ Urdu instruction was the verb form.
123
+ ```
124
+
125
+ ---
126
+
127
+ ## Maintenance
128
+
129
+ Every entry must be a verb actually observed in user input — not invented. When you discover a new phrasing that broke matching, add it to the relevant category here rather than to the consuming workflow's local list. Single source of truth.
@@ -4,6 +4,7 @@ Analyze freeform text from the user and route to the most appropriate Rihal comm
4
4
 
5
5
  <required_reading>
6
6
  @.rihal/references/output-format.md
7
+ @.rihal/references/verb-dictionary.md
7
8
  Read all files referenced by the invoking prompt's execution_context before starting.
8
9
  </required_reading>
9
10
 
@@ -149,25 +150,23 @@ When the user uses a literal create/make/start verb paired with a scope-noun (mi
149
150
 
150
151
  This was a real bug: `/rihal:do "milestone bnao aur ... list down karo"` triggered an ambiguity prompt offering new-milestone vs add-phase vs create-epics-and-stories — even though the user literally said "milestone bnao" (= "create a milestone" in Roman Urdu). That second-guessing wasted the user's time and broke trust.
151
152
 
152
- **Verb dictionary match if `$QUESTION` contains any of these (case-insensitive):**
153
+ **Verb + scope detection sourced from `@.rihal/references/verb-dictionary.md`.**
153
154
 
154
- - English: `create`, `make`, `start`, `add`, `new`, `set up`, `setup`, `kick off`, `spin up`
155
- - Roman Urdu / Hindi: `bnao`, `banao`, `bana do`, `bnado`, `banaa`, `banade`, `shuru karo`, `start karo`, `create karo`, `naya banao`, `add karo`, `daal do`
156
- - Arabic transliteration: `ansha'`, `inshaa`
155
+ Match if `$QUESTION` contains any verb from §Create or §Add (English + Roman Urdu/Hindi + Arabic transliteration — full list lives in the dictionary file, do not duplicate here). Pair with a scope noun to determine the route.
157
156
 
158
- **Scope-noun command map:**
157
+ The full mapping is in the dictionary's "Scope nouns" table. Pre-conditions enforced by this workflow:
159
158
 
160
- | Scope noun in input | Direct route | Pre-condition |
159
+ | Scope noun | Direct route | Pre-condition (this workflow only) |
161
160
  |---|---|---|
162
- | `milestone`, `milestones` | `/rihal:new-milestone` | none — methodology chain assumed when greenfield_guard cleared |
163
- | `phase`, `phases` (singular intent — "add a phase") | `/rihal:add-phase` | HAS_PHASES OR HAS_PRD true |
164
- | `story`, `stories`, `user story` | `/rihal:create-story` | HAS_EPICS true |
165
- | `epic`, `epics`, `epics and stories` | `/rihal:create-epics-and-stories` | HAS_PRD true |
166
- | `sprint` | `/rihal:sprint-planning` | HAS_EPICS true |
167
- | `PRD`, `requirements doc`, `product requirements` | `/rihal:create-prd` | none |
168
- | `roadmap` | `/rihal:create-milestone` | HAS_PRD true |
169
- | `council`, `majlis` | `/rihal:council` | none |
170
- | `plan` (verb — "plan phase N") | `/rihal:plan` | HAS_PHASES true |
161
+ | milestone | `/rihal:new-milestone` | none — methodology chain assumed when greenfield_guard cleared |
162
+ | phase | `/rihal:add-phase` | HAS_PHASES OR HAS_PRD true |
163
+ | story | `/rihal:create-story` | HAS_EPICS true |
164
+ | epic | `/rihal:create-epics-and-stories` | HAS_PRD true |
165
+ | sprint | `/rihal:sprint-planning` | HAS_EPICS true |
166
+ | PRD | `/rihal:create-prd` | none |
167
+ | roadmap | `/rihal:create-milestone` | HAS_PRD true |
168
+ | council | `/rihal:council` | none |
169
+ | plan (verb) | `/rihal:plan` | HAS_PHASES true |
171
170
 
172
171
  **Behavior:**
173
172
  1. If both a verb AND a scope-noun match, fire this step.
@@ -1,44 +1,88 @@
1
1
  <purpose>
2
- Execute a trivial task inline without subagent overhead. No SPRINT.md, no Task spawning,
3
- no research, no plan checking. Just: understand → do → commit → log.
2
+ Execute small ad-hoc tasks with guarantees. Two real modes the workflow auto-detects:
4
3
 
5
- For tasks like: fix a typo, update a config value, add a missing import, rename a
6
- variable, commit uncommitted work, add a .gitignore entry, bump a version number.
4
+ - **Trivial inline** single 3-file change, finishes in 1-2 minutes, no planning needed.
5
+ - **Bulk-task auto-route** — when the input contains many tasks (numbered list with 5+ items, or several distinct bugs/asks), automatically route to /rihal:add-phase with the task list pre-extracted, so the user doesn't have to copy-paste their list a second time.
7
6
 
8
- Use /rihal:quick for anything that needs multi-step planning or research.
7
+ Closes the gap where /rihal:quick used to refuse + show a 4-option menu when given many tasks (forcing the user to re-enter the same list into another command).
9
8
  </purpose>
10
9
 
10
+ <required_reading>
11
+ @.rihal/references/verb-dictionary.md
12
+ </required_reading>
13
+
11
14
  <process>
12
15
 
13
16
  <step name="parse_task">
14
- Parse `$ARGUMENTS` for the task description.
17
+ Parse `$ARGUMENTS` for the task description. If empty, ask:
15
18
 
16
- If empty, ask:
17
19
  ```
18
- What's the quick fix? (one sentence)
20
+ What's the quick fix? (one sentence — or paste a bug list and I'll auto-route)
19
21
  ```
20
22
 
21
23
  Store as `$TASK`.
22
24
  </step>
23
25
 
24
- <step name="scope_check">
25
- **Before doing anything, verify this is actually trivial.**
26
+ <step name="bulk_detection" priority="first-match">
27
+ **Detect 'many tasks in one input'** auto-route instead of refusing.
28
+
29
+ Match if `$TASK` contains ANY of:
30
+
31
+ - 5+ numbered list items (`/^\s*\d+\.\s/m` with ≥ 5 matches)
32
+ - 5+ bullet items (`/^\s*[-*]\s/m` with ≥ 5 matches)
33
+ - 3+ "Bug Report:" / "Issue:" / "Severity:" headers
34
+ - 3+ separate "Status:" or "Priority:" lines
35
+ - > 60 lines total
36
+ - Contains the phrase "buht zada bugs" / "many bugs" / "list of bugs" / "bug list" / "saare bugs" / "all these bugs"
37
+
38
+ If matched, **AUTO-ROUTE to `/rihal:add-phase`** without asking. Do not refuse, do not show a menu, do not ask the user to repaste.
39
+
40
+ Procedure:
41
+
42
+ 1. Detect active milestone (per `do.md` state-aware logic):
43
+ ```bash
44
+ ACTIVE_MILESTONE=$(grep -m1 '^## Current Milestone' .planning/PROJECT.md 2>/dev/null | sed 's/^## Current Milestone[: ]*//' | xargs)
45
+ ```
46
+ 2. Generate a phase slug from the bulk content topic:
47
+ - If most items mention "bug" / "fix" / "broken" → `09-ui-bug-cleanup` (use next phase number)
48
+ - If most mention "feature" / "add" / "new" → `09-feature-batch`
49
+ - Otherwise → `09-task-batch`
50
+ 3. Print the auto-route banner:
51
+ ```
52
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
53
+ /rihal:quick — AUTO-ROUTING
54
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
55
+
56
+ Detected: {N} tasks in input — too many for inline.
57
+ Active milestone: {ACTIVE_MILESTONE or "none"}
58
+ Routing to: /rihal:add-phase {phase-slug}
59
+ Reason: bulk-detection threshold ({matched signal}) — auto-route avoids
60
+ refusing and forcing you to re-paste the list.
61
+ ```
62
+ 4. Dispatch `/rihal:add-phase {phase-slug}` and pass `$TASK` verbatim. The add-phase workflow uses the pre-extracted task list as the phase task list — no user re-entry needed.
63
+ 5. STOP this workflow — add-phase takes over from here.
64
+
65
+ If the bulk detection does NOT match, continue to scope_check.
66
+ </step>
26
67
 
27
- A task is trivial if it can be completed in:
68
+ <step name="scope_check">
69
+ **Lightweight trivial-task gate** for the inline path. Reasonable scope for inline:
28
70
  - ≤ 3 file edits
29
- - ≤ 1 minute of work
71
+ - ≤ 2 minutes of work
30
72
  - No new dependencies or architecture changes
31
- - No research needed
73
+ - No multi-file research needed
32
74
 
33
- If the task seems non-trivial (multi-file refactor, new feature, needs research),
34
- say:
75
+ If the task seems non-trivial but did NOT trigger bulk_detection above (e.g., a single complex task — not a list), redirect:
35
76
 
36
77
  ```
37
- This looks like it needs planning. Use /rihal:quick instead:
38
- /rihal:quick "{task description}"
78
+ This is a single task but looks non-trivial. Recommended:
79
+ /rihal:add-phase for multi-file refactor / new feature / structural change
80
+ /rihal:plan — when scope is clear, jump straight to a SPRINT.md plan
81
+
82
+ Or paste --force-inline at the end of your input to override and try inline anyway.
39
83
  ```
40
84
 
41
- And stop.
85
+ If `$TASK` contains `--force-inline`, skip this gate and continue.
42
86
  </step>
43
87
 
44
88
  <step name="execute_inline">
@@ -46,33 +90,86 @@ Do the work directly:
46
90
 
47
91
  1. Read the relevant file(s)
48
92
  2. Make the change(s)
49
- 3. Verify the change works (run existing tests if applicable, or do a quick sanity check)
93
+ 3. Verify (run existing tests if applicable, or quick sanity check)
94
+
95
+ **No SPRINT.md. No subagents. Just do it.**
96
+ </step>
97
+
98
+ <step name="blocker_handling">
99
+ **When investigation reveals a blocker, do NOT present a multi-option menu.** Pick ONE response per the rules below.
100
+
101
+ Common blocker types:
102
+ - Need a screenshot / browser-rendered state to confirm
103
+ - Need the dev server running
104
+ - Need a decision the user hasn't given yet
105
+ - Need access to an external system (production logs, Sentry, etc.)
106
+
107
+ **Rules:**
108
+
109
+ 1. **If the original input was a LIST of tasks** (bulk_detection-eligible OR the user passed multiple tasks): silently SKIP the blocked task, log the blocker in the running tracker, and PIVOT to the next clearly-runnable task in the list. Do not stop. Do not ask. Do not present 5 options.
110
+
111
+ Example log line (appended to `.planning/BUG-TRACKER-YYYY-MM-DD.md` if it exists, or stdout otherwise):
112
+
113
+ ```
114
+ ⏸ #36 (Extraction wizard CSS) — skipped: needs runtime screenshot to confirm cascade-layer hypothesis. Will resume when dev server is available.
115
+ ```
116
+
117
+ Then continue with #19 / #17 / whichever is the next-most-runnable in the list. State the pivot in one line:
50
118
 
51
- **No SPRINT.md.** Just do it.
119
+ ```
120
+ ▶ Pivoting to next runnable: #19 (Breadcrumb UUID→name) — clear scope, no runtime needed.
121
+ ```
122
+
123
+ 2. **If the input was a SINGLE task and there's nothing to pivot to**: stop with ONE line stating the single specific blocker and how to unblock it. No menu. No options. The user pastes back the resolved info and re-runs.
124
+
125
+ ```
126
+ ⏸ Blocked on: a screenshot of the broken Extraction wizard. Paste the screenshot or run `pnpm dev` and share what you see — I'll resume from where I left off.
127
+ ```
128
+
129
+ 3. **If the user passed `--force-inline` AND the input was single-task AND blocked**: attempt the highest-confidence speculative fix, COMMIT it with a clear "speculative — needs runtime verification" prefix in the commit message, and proceed. The user explicitly chose this path.
130
+
131
+ **Never present a 4+ option menu in blocker_handling.** Multi-option menus during execution are decision-fatigue. Pick one response, do it, move on.
132
+ </step>
133
+
134
+ <step name="next_task_loop">
135
+ **If the original input was a list and there are remaining tasks after this one** (whether the current task succeeded, failed, or was skipped due to blocker), automatically continue to the next task without asking. State the pivot in one line and re-enter execute_inline.
136
+
137
+ **Stop the loop only when:**
138
+ - All tasks in the list are processed (done / skipped / blocked)
139
+ - A task touches `> 5` files (escalate the rest of the list to /rihal:add-phase)
140
+ - The user types stop / cancel / pause
141
+
142
+ At the end of the loop, summarise:
143
+
144
+ ```
145
+ ✅ Loop complete: {N} done · {M} skipped · {K} blocked
146
+ Done: {bullet list with commit hashes}
147
+ Skipped: {bullet list with reasons}
148
+ Blocked: {bullet list with what info is needed}
149
+
150
+ Resume blocked tasks: {one-line guidance on what to provide and re-run}
151
+ ```
52
152
  </step>
53
153
 
54
154
  <step name="commit">
55
- Commit the change atomically:
155
+ Commit atomically with conventional commit format (`fix:`, `feat:`, `docs:`, `chore:`, `refactor:`):
56
156
 
57
157
  ```bash
58
158
  git add -A
59
- git commit -m "fix: {concise description of what changed}"
159
+ git commit -m "{type}: {concise description of what changed}"
60
160
  ```
61
-
62
- Use conventional commit format: `fix:`, `feat:`, `docs:`, `chore:`, `refactor:` as appropriate.
63
161
  </step>
64
162
 
65
163
  <step name="log_to_state">
66
- If `.planning/STATE.md` exists, append to the "Quick Tasks Completed" table.
67
- If the table doesn't exist, skip this step silently.
164
+ If `.planning/STATE.md` exists with a "Quick Tasks Completed" table, append:
68
165
 
69
166
  ```bash
70
- # Check if STATE.md has quick tasks table
71
167
  if grep -q "Quick Tasks Completed" .planning/STATE.md 2>/dev/null; then
72
- # Append entry workflow handles the format
73
- echo "| $(date +%Y-%m-%d) | fast | $TASK | ✅ |" >> .planning/STATE.md
168
+ echo "| $(date +%Y-%m-%d) | quick | $TASK | ✅ |" >> .planning/STATE.md
74
169
  fi
75
170
  ```
171
+
172
+ Skip silently if the table doesn't exist.
76
173
  </step>
77
174
 
78
175
  <step name="done">
@@ -81,7 +178,7 @@ Report completion:
81
178
  ```
82
179
  ✅ Done: {what was changed}
83
180
  Commit: {short hash}
84
- Files: {list of changed files}
181
+ Files: {list of changed files}
85
182
  ```
86
183
 
87
184
  No next-step suggestions. No workflow routing. Just done.
@@ -90,16 +187,16 @@ No next-step suggestions. No workflow routing. Just done.
90
187
  </process>
91
188
 
92
189
  <guardrails>
93
- - NEVER spawn a Task/subagent — this runs inline
94
- - NEVER create SPRINT.md or SUMMARY.md files
95
- - NEVER run research or plan-checking
96
- - If the task takes more than 3 file edits, STOP and redirect to /rihal:quick
97
- - If you're unsure how to implement it, STOP and redirect to /rihal:quick
190
+ - NEVER spawn a Task/subagent — this runs inline (except via the add-phase auto-route, which is itself a workflow dispatch, not a Task spawn)
191
+ - NEVER create SPRINT.md or SUMMARY.md files directly (add-phase will, when bulk-routed)
192
+ - NEVER run research or plan-checking inline
193
+ - If bulk_detection matches, auto-route silently do not stop and ask
194
+ - If a single non-bulk task exceeds 3 file edits and the user did NOT pass `--force-inline`, redirect to /rihal:add-phase or /rihal:plan
98
195
  </guardrails>
99
196
 
100
197
  <success_criteria>
101
- - [ ] Task completed in current context (no subagents)
102
- - [ ] Atomic git commit with conventional message
198
+ - [ ] Bulk inputs are auto-routed to /rihal:add-phase without forcing the user to re-paste
199
+ - [ ] Trivial inputs are completed inline (single context, ≤3 files, conventional commit)
103
200
  - [ ] STATE.md updated if it exists
104
- - [ ] Total operation under 2 minutes wall time
201
+ - [ ] No self-referential redirects (the old quick.md redirected to /rihal:quick — that infinite loop is closed)
105
202
  </success_criteria>