@hanzlaa/rcode 4.3.3 → 4.4.1
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/CONTRIBUTING.md +1 -1
- package/README.md +28 -5
- package/cli/doctor.js +21 -3
- package/cli/generate-command-skills.cjs +1 -1
- package/cli/index.js +5 -1
- package/cli/install.js +7 -9
- package/cli/postinstall.js +22 -2
- package/cli/uninstall.js +48 -6
- package/dist/rcode.js +202 -203
- package/package.json +13 -23
- package/rcode/agents/rcode-codebase-mapper.md +12 -0
- package/rcode/agents/rcode-phase-researcher.md +13 -0
- package/rcode/agents/rcode-project-researcher.md +32 -0
- package/rcode/agents/rcode-roadmapper.md +15 -0
- package/rcode/agents/rules/planner/common-patterns.md +40 -0
- package/rcode/bin/lib/roadmap.cjs +184 -11
- package/rcode/bin/rcode-hooks.cjs +102 -151
- package/rcode/bin/rcode-tools.cjs +669 -55
- package/rcode/commands/lazy.md +10 -0
- package/rcode/data/intent-table.json +87 -0
- package/rcode/modules/seo.yaml +22 -0
- package/rcode/references/project-types.yaml +75 -0
- package/rcode/references/verb-dictionary.md +1 -1
- package/rcode/skills/SKILLS_INDEX.md +18 -1
- package/rcode/skills/actions/1-analysis/rcode-prfaq/SKILL.md +1 -1
- package/rcode/skills/actions/4-implementation/rcode-herdr-orchestration/SKILL.md +4 -21
- package/rcode/skills/actions/4-implementation/rcode-herdr-orchestration/templates/heartbeat.sh +0 -0
- package/rcode/skills/actions/4-implementation/rcode-scaffold-project/SKILL.md +60 -1
- package/rcode/skills/core/rcode-init/scripts/__pycache__/rcode_init.cpython-38.pyc +0 -0
- package/rcode/skills/core/rcode-init/scripts/tests/__pycache__/test_rcode_init.cpython-38.pyc +0 -0
- package/rcode/skills/seo/module.yaml +20 -0
- package/rcode/skills/seo/on-page-seo-auditor/SKILL.md +308 -0
- package/rcode/skills/seo/on-page-seo-auditor/references/audit-example.md +109 -0
- package/rcode/skills/seo/on-page-seo-auditor/references/audit-templates.md +427 -0
- package/rcode/skills/seo/on-page-seo-auditor/references/bulk-audit-playbook.md +116 -0
- package/rcode/skills/seo/on-page-seo-auditor/references/scoring-rubric.md +525 -0
- package/rcode/skills/seo/rank-and-rent-local-seo/SKILL.md +94 -0
- package/rcode/skills/seo/rank-and-rent-local-seo/rules/city-matrix-and-pages.md +76 -0
- package/rcode/skills/seo/rank-and-rent-local-seo/rules/monetization.md +70 -0
- package/rcode/skills/seo/rank-and-rent-local-seo/rules/niche-selection.md +60 -0
- package/rcode/skills/seo/rank-and-rent-local-seo/rules/subniche-discovery.md +66 -0
- package/rcode/skills/seo/rank-and-rent-local-seo/templates/service-city-page.md +36 -0
- package/rcode/skills/seo/rank-and-rent-local-seo/templates/subniche-research-prompt.md +34 -0
- package/rcode/skills/seo/seo-audit/SKILL.md +412 -0
- package/rcode/skills/seo/seo-audit/evals/evals.json +136 -0
- package/rcode/skills/seo/seo-audit/references/ai-writing-detection.md +200 -0
- package/rcode/skills/seo/seo-content-factory/SKILL.md +130 -0
- package/rcode/skills/seo/seo-content-factory/rules/agents.md +80 -0
- package/rcode/skills/seo/seo-content-factory/rules/herdr-wave-mapping.md +80 -0
- package/rcode/skills/seo/seo-content-factory/rules/pipeline.md +102 -0
- package/rcode/skills/seo/seo-content-factory/rules/programmatic-pages.md +107 -0
- package/rcode/skills/seo/seo-content-factory/rules/quality-gates.md +68 -0
- package/rcode/skills/seo/seo-content-factory/rules/weekly-cadence.md +61 -0
- package/rcode/skills/seo/seo-content-factory/templates/BACKLOG.md +23 -0
- package/rcode/skills/seo/seo-content-factory/templates/agent-prompts/01-funnel-A1-A4.md +63 -0
- package/rcode/skills/seo/seo-content-factory/templates/agent-prompts/02-fanout-editorial-A5-A6-A8.md +28 -0
- package/rcode/skills/seo/seo-content-factory/templates/agent-prompts/03-fanout-programmatic-A7-A6-A8.md +25 -0
- package/rcode/skills/seo/seo-content-factory/templates/agent-prompts/04-loop-A9-A10.md +34 -0
- package/rcode/skills/seo/seo-content-factory/templates/article.mdx +39 -0
- package/rcode/skills/seo/seo-content-factory/templates/cluster.schema.json +52 -0
- package/rcode/skills/seo/seo-content-factory/templates/content-brief.md +51 -0
- package/rcode/skills/seo/seo-content-factory/templates/jsonld-builders.ts +49 -0
- package/rcode/skills/seo/seo-content-factory/templates/keywords.csv +13 -0
- package/rcode/skills/seo/seo-content-factory/templates/programmatic-page.tsx +58 -0
- package/rcode/skills/seo/seo-content-writer/SKILL.md +263 -0
- package/rcode/skills/seo/seo-content-writer/references/content-structure-templates.md +875 -0
- package/rcode/skills/seo/seo-content-writer/references/instructions-detail.md +239 -0
- package/rcode/skills/seo/seo-content-writer/references/seo-writing-checklist.md +250 -0
- package/rcode/skills/seo/seo-content-writer/references/title-formulas.md +339 -0
- package/rcode/skills/seo/seo-growth-orchestrator/SKILL.md +79 -0
- package/rcode/skills/seo/seo-growth-orchestrator/rules/backlinks.md +29 -0
- package/rcode/skills/seo/seo-growth-orchestrator/rules/content-engine.md +27 -0
- package/rcode/skills/seo/seo-growth-orchestrator/rules/dos-and-donts.md +40 -0
- package/rcode/skills/seo/seo-growth-orchestrator/rules/goals-protocol.md +34 -0
- package/rcode/skills/seo/seo-growth-orchestrator/rules/local-seo-stack.md +35 -0
- package/rcode/skills/seo/seo-growth-orchestrator/rules/mrr-sprint.md +27 -0
- package/rcode/skills/seo/seo-growth-orchestrator/rules/tools.md +19 -0
- package/rcode/skills/seo/seo-growth-orchestrator/templates/backlink-research.md +29 -0
- package/rcode/skills/seo/seo-growth-orchestrator/templates/goal-protocol.md +35 -0
- package/rcode/skills/seo/seo-growth-orchestrator/templates/local-citations.md +24 -0
- package/rcode/skills/seo/seo-growth-orchestrator/templates/local-city-pages.md +27 -0
- package/rcode/skills/seo/seo-growth-orchestrator/templates/local-gbp-categories.md +23 -0
- package/rcode/skills/seo/seo-growth-orchestrator/templates/local-gsc-goldmine.md +27 -0
- package/rcode/skills/seo/seo-growth-orchestrator/templates/local-review-mining.md +26 -0
- package/rcode/skills/seo/seo-growth-orchestrator/templates/mrr-30day-plan.md +19 -0
- package/rcode/skills/seo/seo-growth-orchestrator/templates/mrr-cut.md +13 -0
- package/rcode/skills/seo/seo-growth-orchestrator/templates/mrr-opportunity-finder.md +17 -0
- package/rcode/skills/seo/seo-growth-orchestrator/templates/mrr-role-model.md +18 -0
- package/rcode/skills/seo/seo-site-builder/SKILL.md +149 -0
- package/rcode/skills/seo/seo-site-builder/rules/01-niche-discovery.md +64 -0
- package/rcode/skills/seo/seo-site-builder/rules/02-deep-research.md +164 -0
- package/rcode/skills/seo/seo-site-builder/rules/03-keyword-strategy.md +82 -0
- package/rcode/skills/seo/seo-site-builder/rules/04-content-plan.md +173 -0
- package/rcode/skills/seo/seo-site-builder/rules/05-site-build.md +187 -0
- package/rcode/skills/seo/seo-site-builder/rules/06-yolo.md +127 -0
- package/rcode/skills/seo/seo-site-builder/templates/article-stub.mdx +62 -0
- package/rcode/skills/seo/seo-site-builder/templates/image-prompt.md +97 -0
- package/rcode/skills/seo/seo-site-builder/templates/keyword-export.md +45 -0
- package/rcode/skills/seo/seo-site-builder/templates/niche-scorecard.md +28 -0
- package/rcode/skills/seo/technical-seo-checker/SKILL.md +329 -0
- package/rcode/skills/seo/technical-seo-checker/references/bulk-audit-playbook.md +118 -0
- package/rcode/skills/seo/technical-seo-checker/references/ecommerce-platform-patterns.md +166 -0
- package/rcode/skills/seo/technical-seo-checker/references/http-status-codes.md +705 -0
- package/rcode/skills/seo/technical-seo-checker/references/llm-crawler-handling.md +257 -0
- package/rcode/skills/seo/technical-seo-checker/references/pre-migration-playbook.md +137 -0
- package/rcode/skills/seo/technical-seo-checker/references/robots-txt-reference.md +717 -0
- package/rcode/skills/seo/technical-seo-checker/references/technical-audit-example.md +169 -0
- package/rcode/skills/seo/technical-seo-checker/references/technical-audit-templates.md +436 -0
- package/rcode/templates/settings-hooks.json +4 -0
- package/rcode/workflows/do.md +16 -0
- package/rcode/workflows/execute-sprint.md +22 -0
- package/rcode/workflows/execute.md +17 -3
- package/rcode/workflows/help.md +0 -2
- package/rcode/workflows/new-milestone.md +21 -9
- package/rcode/workflows/new-project-create-roadmap.md +2 -0
- package/rcode/workflows/new-project-roadmap.md +2 -0
- package/rcode/workflows/new-project.md +3 -0
- package/rcode/workflows/plan.md +15 -2
package/CONTRIBUTING.md
CHANGED
|
@@ -521,7 +521,7 @@ only surface at install time.
|
|
|
521
521
|
### For dashboard changes
|
|
522
522
|
1. `node server/dashboard.js` starts cleanly
|
|
523
523
|
2. Visit `http://localhost:7717` — all sections render
|
|
524
|
-
3. Stop with `kill $(
|
|
524
|
+
3. Stop with `kill $(ss -ltnp 'sport = :7717' | awk 'NR>1{match($6,/pid=([0-9]+)/,m); print m[1]}')`
|
|
525
525
|
|
|
526
526
|
### For new workflows
|
|
527
527
|
1. Read the workflow instructions end-to-end as if executing it
|
package/README.md
CHANGED
|
@@ -2,11 +2,15 @@
|
|
|
2
2
|
|
|
3
3
|
<div dir="rtl">طريقة رحال</div>
|
|
4
4
|
|
|
5
|
-
<p align="center"><img src="brand/
|
|
5
|
+
<p align="center"><img src="brand/dashboard-tour.gif" alt="rcode Diwan dashboard tour — cycling through the project cockpit (progress donut, current phase executing, milestone outlook), the specialist agent roster, the Kanban board (TODO / in-progress / done), and the phase-driven delivery view" width="860"></p>
|
|
6
6
|
|
|
7
|
-
###
|
|
7
|
+
### An engineering org in a folder — and you can watch it work.
|
|
8
8
|
|
|
9
|
-
*
|
|
9
|
+
*A roster of specialist agents, phase-driven delivery, and a persistent Memory Bank — running as plain files your IDE reads. **45 agents · 116 commands · 1 runtime dependency** — test count and CI status tracked by the badge above.*
|
|
10
|
+
|
|
11
|
+
<p align="center"><img src="brand/dashboard-team.png" alt="rcode agent roster grouped by function — Leadership (Sadiq / strategy, Waleed / CTO, Ahmed / delivery, Nasser / eng manager), Engineering (Omar, Haitham / frontend, Yousef / backend, Zayd / ML, Khalid / DevOps), Product (Hussain / PM, Mariam / marketing), each card showing its role and tools" width="860"></p>
|
|
12
|
+
|
|
13
|
+
<p align="center"><sub>The <a href="docs/install.md">Diwan dashboard</a> (<code>node server/dashboard.js</code>) — your project's phases, sprints, agents, decisions, and live orchestration, read straight from the files in <code>.rcode/</code>.</sub></p>
|
|
10
14
|
|
|
11
15
|
> **A curated composition of the best AI-development practices — shipped as files.** Surgical-change discipline, parallel-agent orchestration, persistent Memory Bank patterns, phase-driven planning — packaged as one workflow for Claude Code power users. No multi-agent harness. No vector DB. Your IDE keeps the methodology; the project keeps the memory.
|
|
12
16
|
|
|
@@ -19,7 +23,7 @@ pnpm dlx @hanzlaa/rcode install
|
|
|
19
23
|
[](https://github.com/hanzlahabib/rcode/actions/workflows/test.yml)
|
|
20
24
|
[](LICENSE)
|
|
21
25
|
|
|
22
|
-
Status: `@hanzlaa/rcode` v4.
|
|
26
|
+
Status: `@hanzlaa/rcode` v4.4.1 on npm. 45 agents · 116 commands · 129 workflows · **1 runtime dependency**. Test status tracked by CI badge above. Actively dogfooded on real projects every week.
|
|
23
27
|
|
|
24
28
|
---
|
|
25
29
|
|
|
@@ -123,6 +127,8 @@ The point isn't "I beat LangChain." The point is **you don't need LangChain for
|
|
|
123
127
|
> node benchmarks/facts.cjs
|
|
124
128
|
> ```
|
|
125
129
|
|
|
130
|
+
<p align="center"><img src="brand/hero-receipt.png" alt="benchmarks/facts.cjs output — 497 tests, 0 failing · 45 agents · 116 commands · 1 runtime dependency, computed from files on disk" width="720"></p>
|
|
131
|
+
|
|
126
132
|
| Metric | Value | Why it's not a vanity number |
|
|
127
133
|
|---|---|---|
|
|
128
134
|
| **Portable methodology corpus** | **94,481 lines** of markdown | A 10-person eng org's playbooks (agents + commands + workflows + skills + references) — as files you own and grep, not a SaaS you rent. |
|
|
@@ -146,7 +152,7 @@ pnpm dlx @hanzlaa/rcode install
|
|
|
146
152
|
/rcode-init
|
|
147
153
|
```
|
|
148
154
|
|
|
149
|
-
> **Don't have pnpm?**
|
|
155
|
+
> **Don't have pnpm?** We recommend pnpm to avoid peer-dependency resolution issues on npm 11.x and `npx` cache issues:
|
|
150
156
|
> `npm install -g pnpm`
|
|
151
157
|
|
|
152
158
|
`/rcode-init` detects your project state (fresh / existing / returning) and routes to the right first action. For a greenfield project it auto-routes to `/rcode-new-project`.
|
|
@@ -218,6 +224,23 @@ Named for the Arabic root **رحال** (rahhal) — the traveler. rcode walks al
|
|
|
218
224
|
|
|
219
225
|
---
|
|
220
226
|
|
|
227
|
+
## 💙 Feedback welcome
|
|
228
|
+
|
|
229
|
+
rcode is built and maintained by one person. If you hit a rough edge, a confusing command, or anything that doesn't work — please share it. Every report, even a one-liner, makes the tool better for everyone.
|
|
230
|
+
|
|
231
|
+
**Post an issue in 30 seconds → [github.com/hanzlahabib/rcode/issues/new](https://github.com/hanzlahabib/rcode/issues/new)**
|
|
232
|
+
|
|
233
|
+
Quick template:
|
|
234
|
+
```
|
|
235
|
+
Title: what you were trying to do
|
|
236
|
+
Body: what happened vs what you expected
|
|
237
|
+
+ the command or phrase you used
|
|
238
|
+
```
|
|
239
|
+
|
|
240
|
+
Thank you for using rcode. 🙏
|
|
241
|
+
|
|
242
|
+
---
|
|
243
|
+
|
|
221
244
|
## Credits
|
|
222
245
|
|
|
223
246
|
- [Andrej Karpathy's coding observations](https://github.com/forrestchang/andrej-karpathy-skills) (MIT) — wired into the code-review agents as hard constraints.
|
package/cli/doctor.js
CHANGED
|
@@ -67,10 +67,17 @@ function checkCompliance(filePath) {
|
|
|
67
67
|
if (!/^## Examples/m.test(content)) missing.push('Examples');
|
|
68
68
|
|
|
69
69
|
// Negative-boundary clause (component 1 of the 5-component standard).
|
|
70
|
-
//
|
|
71
|
-
//
|
|
70
|
+
// Three valid locations, checked in order:
|
|
71
|
+
// a) frontmatter `not-for:` array with at least one entry (canonical YAML form)
|
|
72
|
+
// b) a boundary phrase in the frontmatter `description` field
|
|
73
|
+
// c) a "## Do NOT use" heading or "do not use/include" in the body
|
|
74
|
+
// Bug #874: only (b) and (c) were checked, missing skills that use (a).
|
|
75
|
+
const notForField = frontmatter['not-for'];
|
|
76
|
+
const hasNotForField =
|
|
77
|
+
Array.isArray(notForField) && notForField.length > 0;
|
|
72
78
|
const desc = typeof frontmatter.description === 'string' ? frontmatter.description : '';
|
|
73
79
|
const hasBoundary =
|
|
80
|
+
hasNotForField ||
|
|
74
81
|
NEGATIVE_BOUNDARY_RE.test(desc) ||
|
|
75
82
|
/##[^\n]*\bnot\b/i.test(body) ||
|
|
76
83
|
/\bdo not (use|include)\b/i.test(body);
|
|
@@ -188,7 +195,18 @@ function runPreflight(cwd, packageRoot) {
|
|
|
188
195
|
// 6. Agent manifest drift (only if .rcode/ is initialized — indicates installed editors)
|
|
189
196
|
if (fs.existsSync(rcodeDir)) {
|
|
190
197
|
const editors = [];
|
|
191
|
-
|
|
198
|
+
// Detect Claude install via flat .claude/commands/rcode-*.md (installer writes
|
|
199
|
+
// slash commands flat, not under a subdirectory) or .claude/skills as a fallback
|
|
200
|
+
// for legacy layouts. Bug #873: checking only .claude/skills missed fresh installs.
|
|
201
|
+
const claudeCommandsDir = path.join(cwd, '.claude/commands');
|
|
202
|
+
const hasClaudeFlatCommands =
|
|
203
|
+
fs.existsSync(claudeCommandsDir) &&
|
|
204
|
+
fs.readdirSync(claudeCommandsDir).some(
|
|
205
|
+
(f) => f.startsWith('rcode-') && f.endsWith('.md'),
|
|
206
|
+
);
|
|
207
|
+
if (hasClaudeFlatCommands || fs.existsSync(path.join(cwd, '.claude/skills'))) {
|
|
208
|
+
editors.push('claude');
|
|
209
|
+
}
|
|
192
210
|
if (fs.existsSync(path.join(cwd, '.cursor/rules'))) editors.push('cursor');
|
|
193
211
|
if (fs.existsSync(path.join(cwd, '.windsurf/rules'))) editors.push('windsurf');
|
|
194
212
|
if (fs.existsSync(path.join(cwd, '.antigravity/agents'))) editors.push('antigravity');
|
|
@@ -100,7 +100,7 @@ description: >
|
|
|
100
100
|
Sidebar entry — invokes the same workflow as /rcode-${cmdName}.
|
|
101
101
|
triggers:
|
|
102
102
|
${triggers.map((t) => ` - "${t}"`).join('\n')}
|
|
103
|
-
user-invocable:
|
|
103
|
+
user-invocable: true
|
|
104
104
|
generated: true
|
|
105
105
|
generated-by: rcode-install-v${version}
|
|
106
106
|
source: rcode/commands/${cmdName}.md
|
package/cli/index.js
CHANGED
|
@@ -64,6 +64,10 @@ Usage:
|
|
|
64
64
|
init Alias for install
|
|
65
65
|
update Refresh skill files (backs up .rcode/ state first)
|
|
66
66
|
uninstall Remove rcode from the current project
|
|
67
|
+
--yes Skip confirmation prompts
|
|
68
|
+
--purge Remove everything: .rcode/ state, .planning/ scaffolds,
|
|
69
|
+
.claude/agents/rules/, .cursor/ rcode files,
|
|
70
|
+
.gitignore block, and .git/hooks/pre-commit
|
|
67
71
|
remove Alias for uninstall
|
|
68
72
|
nuke Wipe ALL rcode/rcode installs everywhere (global packages,
|
|
69
73
|
binaries, ~/.claude/* rcode artifacts, ~/.rcode/, project artifacts)
|
|
@@ -116,7 +120,7 @@ Getting started:
|
|
|
116
120
|
rcode tiers # see the Golden Path
|
|
117
121
|
rcode set-profile # choose model profile (quality | balanced | budget)
|
|
118
122
|
|
|
119
|
-
Documentation: https://github.com/hanzlahabib/
|
|
123
|
+
Documentation: https://github.com/hanzlahabib/rcode
|
|
120
124
|
`.trim());
|
|
121
125
|
}
|
|
122
126
|
|
package/cli/install.js
CHANGED
|
@@ -370,7 +370,7 @@ function printInstallHeader(targetVersion) {
|
|
|
370
370
|
pc.cyan('│') + ' ' + dim('A persistent context-brain for your editor') + ' ' + pc.cyan('│'),
|
|
371
371
|
pc.cyan('│') + ' ' + pc.cyan('│'),
|
|
372
372
|
pc.cyan('│') + ' ' + dim('version ') + pc.green('v' + v) + ' ' + pc.cyan('│'),
|
|
373
|
-
pc.cyan('│') + ' ' + dim('docs ') + 'github.com/hanzlahabib/
|
|
373
|
+
pc.cyan('│') + ' ' + dim('docs ') + 'github.com/hanzlahabib/rcode ' + pc.cyan('│'),
|
|
374
374
|
pc.cyan('│') + ' ' + dim('by ') + 'Hanzla Habib' + ' ' + pc.cyan('│'),
|
|
375
375
|
pc.cyan('│') + ' ' + pc.cyan('│'),
|
|
376
376
|
pc.cyan('╰───────────────────────────────────────────────────────────╯'),
|
|
@@ -480,7 +480,8 @@ async function resolveIde(opts) {
|
|
|
480
480
|
*/
|
|
481
481
|
async function resolveCommitPlanning(opts) {
|
|
482
482
|
if (opts.commitPlanning !== null) return opts.commitPlanning;
|
|
483
|
-
if (opts.
|
|
483
|
+
if (opts.global) return false; // global install: no planning artifacts
|
|
484
|
+
if (opts.noPrompt) return true; // non-interactive project install: commit planning by default (#936)
|
|
484
485
|
|
|
485
486
|
// Issue #685: on re-install, read the existing .rcode/config.yaml and use
|
|
486
487
|
// its commit_planning value as the default. Otherwise the new prompt
|
|
@@ -726,7 +727,7 @@ function seedStarterPlanning(target, projectName) {
|
|
|
726
727
|
// planning artifacts. See issues #670 #671 #676.
|
|
727
728
|
const STUB_BANNER =
|
|
728
729
|
`<!-- INSTALL STUB — overwritten by /rcode-new-project. Delete this file or run\n` +
|
|
729
|
-
` /rcode-new-project before committing. See https://github.com/hanzlahabib/
|
|
730
|
+
` /rcode-new-project before committing. See https://github.com/hanzlahabib/rcode/issues/670 -->\n\n`;
|
|
730
731
|
|
|
731
732
|
fs.writeFileSync(projectPath,
|
|
732
733
|
STUB_BANNER +
|
|
@@ -744,10 +745,8 @@ function seedStarterPlanning(target, projectName) {
|
|
|
744
745
|
`**Milestone: M1 — Initial Delivery** (v1.0)\n` +
|
|
745
746
|
`Started: ${today} · Current\n\n` +
|
|
746
747
|
`---\n\n` +
|
|
747
|
-
|
|
748
|
-
|
|
749
|
-
`**Status:** Planned\n\n` +
|
|
750
|
-
`**Acceptance:** Working dev environment; first feature in progress.\n\n` +
|
|
748
|
+
`> **No phases yet.** Run \`/rcode-new-project\` to design your roadmap,\n` +
|
|
749
|
+
`> or \`/rcode-add-phase <name>\` to add your first phase manually.\n\n` +
|
|
751
750
|
`---\n\n` +
|
|
752
751
|
`## Backlog\n\n` +
|
|
753
752
|
`Ideas and future phases go here.\n`
|
|
@@ -758,7 +757,7 @@ function seedStarterPlanning(target, projectName) {
|
|
|
758
757
|
`# ${name} — State\n\n` +
|
|
759
758
|
`**Last updated:** ${today}\n` +
|
|
760
759
|
`**Milestone:** M1 — Initial Delivery\n` +
|
|
761
|
-
`**Current phase:**
|
|
760
|
+
`**Current phase:** none — run /rcode-new-project or /rcode-add-phase\n` +
|
|
762
761
|
`**Branch:** main\n\n` +
|
|
763
762
|
`---\n\n` +
|
|
764
763
|
`## Decisions\n\n_None yet._\n\n` +
|
|
@@ -1753,7 +1752,6 @@ function generateConfigYaml(opts) {
|
|
|
1753
1752
|
`mode: "${sanitizeYamlValue(opts.mode)}"`,
|
|
1754
1753
|
`model_profile: "balanced"`,
|
|
1755
1754
|
`commit_planning: ${opts.commitPlanning !== false}`,
|
|
1756
|
-
`rcode_source_path: "${sanitizeYamlValue(resolveStableSourcePath())}/"`,
|
|
1757
1755
|
'workflow:',
|
|
1758
1756
|
' research_by_default: false',
|
|
1759
1757
|
' plan_checker: true',
|
package/cli/postinstall.js
CHANGED
|
@@ -132,9 +132,29 @@ To set up per-project state + planning structure, run inside your project:
|
|
|
132
132
|
|
|
133
133
|
More:
|
|
134
134
|
rcode help # all commands (grouped)
|
|
135
|
-
rcode dashboard #
|
|
135
|
+
rcode dashboard # Diwan project dashboard on :7717
|
|
136
136
|
|
|
137
|
-
Docs: https://github.com/hanzlahabib/
|
|
137
|
+
Docs: https://github.com/hanzlahabib/rcode
|
|
138
|
+
|
|
139
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
140
|
+
💙 Thank you for using rcode!
|
|
141
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
142
|
+
|
|
143
|
+
This package is built and maintained by one person.
|
|
144
|
+
Every piece of feedback — a bug, a rough edge, a
|
|
145
|
+
confusing command — makes it meaningfully better.
|
|
146
|
+
|
|
147
|
+
Hit a problem? Post it in 30 seconds:
|
|
148
|
+
|
|
149
|
+
https://github.com/hanzlahabib/rcode/issues/new
|
|
150
|
+
|
|
151
|
+
Quick template (just paste and fill):
|
|
152
|
+
Title: what you were trying to do
|
|
153
|
+
Body: what happened vs what you expected
|
|
154
|
+
+ paste the command or phrase you used
|
|
155
|
+
|
|
156
|
+
Even a one-line report helps. Thank you. 🙏
|
|
157
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
138
158
|
`);
|
|
139
159
|
}
|
|
140
160
|
|
package/cli/uninstall.js
CHANGED
|
@@ -949,17 +949,59 @@ async function runUninstall(args) {
|
|
|
949
949
|
// Notice about what was intentionally preserved (#876 — never delete user data silently)
|
|
950
950
|
const rcodeStillExists = plan.stateDir && fs.existsSync(path.join(cwd, '.rcode'));
|
|
951
951
|
const planningStillExists = !opts.purge && fs.existsSync(path.join(cwd, '.planning'));
|
|
952
|
-
|
|
952
|
+
const agentsRulesStillExists = !opts.purge && fs.existsSync(path.join(cwd, '.claude/agents/rules'));
|
|
953
|
+
// Only flag .cursor/ as residue if rcode files are still inside it — the dir
|
|
954
|
+
// may exist for unrelated Cursor user config that was never touched by rcode.
|
|
955
|
+
const cursorStillExists = !opts.purge && (() => {
|
|
956
|
+
const rulesDir = path.join(cwd, '.cursor/rules');
|
|
957
|
+
if (!fs.existsSync(rulesDir)) return false;
|
|
958
|
+
try {
|
|
959
|
+
return fs.readdirSync(rulesDir).some(
|
|
960
|
+
(f) => f.startsWith('rcode-') || f === 'rcode.mdc' || f === 'rcode-method.mdc' || f === 'rcode',
|
|
961
|
+
);
|
|
962
|
+
} catch { return false; }
|
|
963
|
+
})();
|
|
964
|
+
const gitignoreBlockStillExists = !opts.purge && (() => {
|
|
965
|
+
try {
|
|
966
|
+
const gi = path.join(cwd, '.gitignore');
|
|
967
|
+
if (!fs.existsSync(gi)) return false;
|
|
968
|
+
const txt = fs.readFileSync(gi, 'utf8');
|
|
969
|
+
return txt.includes('# ===== rcode-managed gitignore block') || txt.includes('# >>> rcode >>>');
|
|
970
|
+
} catch { return false; }
|
|
971
|
+
})();
|
|
972
|
+
// Only flag pre-commit as residue if the rcode block is still present inside
|
|
973
|
+
// it — the hook file may exist for user-written scripts unrelated to rcode.
|
|
974
|
+
const preCommitStillExists = !opts.purge && (() => {
|
|
975
|
+
const hookPath = path.join(cwd, '.git/hooks/pre-commit');
|
|
976
|
+
if (!fs.existsSync(hookPath)) return false;
|
|
977
|
+
try {
|
|
978
|
+
return fs.readFileSync(hookPath, 'utf8').includes('# ===== rcode-managed pre-commit block =====');
|
|
979
|
+
} catch { return false; }
|
|
980
|
+
})();
|
|
981
|
+
|
|
982
|
+
if (rcodeStillExists || planningStillExists || agentsRulesStillExists || cursorStillExists || gitignoreBlockStillExists || preCommitStillExists) {
|
|
953
983
|
console.log();
|
|
954
|
-
console.log(`ℹ Preserved (
|
|
984
|
+
console.log(`ℹ Preserved (use --purge to remove all of these):`);
|
|
955
985
|
if (rcodeStillExists) {
|
|
956
|
-
console.log(` .rcode/
|
|
957
|
-
console.log(` /rcode-init will detect this on reinstall`);
|
|
986
|
+
console.log(` .rcode/ project state, config, decisions`);
|
|
958
987
|
}
|
|
959
988
|
if (planningStillExists) {
|
|
960
|
-
console.log(` .planning/
|
|
989
|
+
console.log(` .planning/ ROADMAP, STATE, PROJECT scaffolds`);
|
|
961
990
|
}
|
|
962
|
-
|
|
991
|
+
if (agentsRulesStillExists) {
|
|
992
|
+
console.log(` .claude/agents/rules/ agent rule files`);
|
|
993
|
+
}
|
|
994
|
+
if (cursorStillExists) {
|
|
995
|
+
console.log(` .cursor/ Cursor IDE integration`);
|
|
996
|
+
}
|
|
997
|
+
if (gitignoreBlockStillExists) {
|
|
998
|
+
console.log(` .gitignore rcode-managed block still present`);
|
|
999
|
+
}
|
|
1000
|
+
if (preCommitStillExists) {
|
|
1001
|
+
console.log(` .git/hooks/ pre-commit hook still present`);
|
|
1002
|
+
}
|
|
1003
|
+
console.log();
|
|
1004
|
+
console.log(` Full cleanup: rcode uninstall --purge`);
|
|
963
1005
|
}
|
|
964
1006
|
|
|
965
1007
|
// IDE cache reload hint — Claude Code caches the slash-command list in memory.
|