@curdx/flow 6.0.3 → 6.0.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/CHANGELOG.md CHANGED
@@ -2,6 +2,18 @@
2
2
 
3
3
  All notable changes to `@curdx/flow` are documented here. Format follows [Keep a Changelog](https://keepachangelog.com/) and the project follows [Semantic Versioning](https://semver.org/).
4
4
 
5
+ ## 6.0.5 — 2026-04-29
6
+
7
+ ### Changed
8
+
9
+ - **Drop legacy upstream-attribution chrome from user-facing surfaces.** `src/registry/plugins/curdx-flow.ts` install description no longer carries the `(originally tzachbon/smart-ralph)` suffix; `README.md`'s tools table and the v3.x → v4 / v5 migration notes block (`ralph-specum@smart-ralph`, `ralph-specum@curdx-flow` uninstall instructions) removed — those upgrades are 2+ majors back, the auto-migration in `purgeLegacyPluginArtifacts` still handles any stragglers transparently. Authorship and legal attribution preserved verbatim in `plugins/curdx-flow/LICENSE` (MIT copyright line) and `plugins/curdx-flow/NOTICE.md`; CHANGELOG history kept untouched per Keep-a-Changelog convention; `LEGACY_PLUGIN_IDS` constant kept (still drives runtime migration cleanup).
10
+
11
+ ## 6.0.4 — 2026-04-29
12
+
13
+ ### Changed
14
+
15
+ - **Drop `Available tools/plugins` listing from injected `~/.claude/CLAUDE.md` block.** Each plugin's own SKILL.md `description` is already injected into Claude Code's system prompt at session start, so re-listing every tool's name + version + `whenToUse` was duplicate context that cost tokens for no judgement value. `renderBlock` now emits only the three decision sections — `Tool Combination Patterns`, `Skip Rules`, `Decision Tree` — which carry the cross-tool routing logic that single-skill descriptions cannot. `renderItemLine` removed (dead code); `ManagedItem`'s `name` / `version` / `slashNamespace` / `whenToUse` fields kept for forward compat with any external consumers, but no longer rendered.
16
+
5
17
  ## 6.0.3 — 2026-04-29
6
18
 
7
19
  ### Changed
package/README.md CHANGED
@@ -31,14 +31,10 @@ npx @curdx/flow --lang en # override language
31
31
  | `claude-mem` | plugin | `thedotmack/claude-mem` |
32
32
  | `chrome-devtools-mcp` | plugin | `ChromeDevTools/chrome-devtools-mcp` |
33
33
  | `frontend-design` | plugin | `claude-plugins-official` (built-in) |
34
- | `curdx-flow` | plugin | bundled in this repo (always installed) — spec-driven dev with autonomous task execution (originally [tzachbon/smart-ralph](https://github.com/tzachbon/smart-ralph), MIT, intermediate fork: ralph-specum) |
34
+ | `curdx-flow` | plugin | bundled in this repo (always installed) — spec-driven dev with autonomous task execution |
35
35
  | `sequential-thinking` | mcp | `@modelcontextprotocol/server-sequential-thinking` |
36
36
  | `context7` | mcp | HTTP — `https://mcp.context7.com/mcp` (optional API key) |
37
37
 
38
- > Migration notes:
39
- > - If you installed the upstream `ralph-specum@smart-ralph` build, run `claude plugin uninstall ralph-specum@smart-ralph` before upgrading.
40
- > - If you installed `ralph-specum@curdx-flow` (curdx-flow v3.4.0 / v3.5.0), run `claude plugin uninstall ralph-specum@curdx-flow` and re-run `npx @curdx/flow install`. The plugin is now `curdx-flow@curdx` with slash namespace `/curdx-flow:*`.
41
-
42
38
  ## What it writes to your filesystem
43
39
 
44
40
  After every successful `install` / `update` / `uninstall`, flow keeps a short managed block in your global `~/.claude/CLAUDE.md` so Claude Code knows at session start which tools are installed and when to use them. The block looks like:
package/dist/index.mjs CHANGED
@@ -667,7 +667,7 @@ async function uninstallLegacyIfPresent(ctx) {
667
667
  var curdxFlow = {
668
668
  id: "curdx-flow",
669
669
  name: "curdx-flow",
670
- description: "curdx-flow (originally tzachbon/smart-ralph) \u2014 spec-driven dev with autonomous task execution",
670
+ description: "curdx-flow \u2014 spec-driven dev with autonomous task execution",
671
671
  type: "plugin",
672
672
  required: true,
673
673
  slashNamespace: "/curdx-flow:*",
@@ -809,13 +809,6 @@ var BLOCK_RE = /<!-- BEGIN @curdx\/flow v\d+[^>]*-->[\s\S]*?<!-- END @curdx\/flo
809
809
  function claudeMdPath() {
810
810
  return path3.join(os3.homedir(), ".claude", "CLAUDE.md");
811
811
  }
812
- function renderItemLine(item) {
813
- let line = `- ${item.name}`;
814
- if (item.version) line += ` (v${item.version})`;
815
- if (item.slashNamespace) line += ` \u2014 \`${item.slashNamespace}\``;
816
- if (item.whenToUse) line += ` \u2014 ${item.whenToUse}`;
817
- return line;
818
- }
819
812
  function buildCombinationPatterns(ids) {
820
813
  const has = (k) => ids.has(k);
821
814
  const out = ["\u6309\u573A\u666F\u4E32\u8054\uFF0C\u4E0D\u8981\u4E00\u4E2A\u4E2A\u5B64\u7ACB\u8C03\u7528\uFF1A", ""];
@@ -892,26 +885,17 @@ function buildDecisionTree(ids) {
892
885
  }
893
886
  function renderBlock(items) {
894
887
  const installedIds = new Set(items.map((i) => i.id));
895
- const lines = [
896
- BEGIN_MARKER,
897
- "## Tool Usage",
898
- "",
899
- "Available tools/plugins:",
900
- ...items.map(renderItemLine)
888
+ const sections = [
889
+ ["## Tool Combination Patterns\uFF08\u7EC4\u5408\u5DE5\u4F5C\u6D41\uFF09", buildCombinationPatterns(installedIds)],
890
+ ["## Skip Rules\uFF08\u9632\u8FC7\u5EA6\u5DE5\u5177\u5316\uFF09", buildSkipRules(installedIds)],
891
+ ["## Decision Tree\uFF08\u9047\u5230\u6A21\u7CCA\u8BF7\u6C42\u65F6\uFF09", buildDecisionTree(installedIds)]
901
892
  ];
902
- const combo = buildCombinationPatterns(installedIds);
903
- if (combo.length > 0) {
904
- lines.push("", "## Tool Combination Patterns\uFF08\u7EC4\u5408\u5DE5\u4F5C\u6D41\uFF09", "", ...combo);
905
- }
906
- const skip = buildSkipRules(installedIds);
907
- if (skip.length > 0) {
908
- lines.push("", "## Skip Rules\uFF08\u9632\u8FC7\u5EA6\u5DE5\u5177\u5316\uFF09", "", ...skip);
909
- }
910
- const tree = buildDecisionTree(installedIds);
911
- if (tree.length > 0) {
912
- lines.push("", "## Decision Tree\uFF08\u9047\u5230\u6A21\u7CCA\u8BF7\u6C42\u65F6\uFF09", "", ...tree);
893
+ const lines = [BEGIN_MARKER];
894
+ for (const [heading, body] of sections) {
895
+ if (body.length === 0) continue;
896
+ lines.push(heading, "", ...body, "");
913
897
  }
914
- lines.push("", "Run `npx @curdx/flow` to install / update / uninstall.", END_MARKER);
898
+ lines.push("Run `npx @curdx/flow` to install / update / uninstall.", END_MARKER);
915
899
  return lines.join("\n");
916
900
  }
917
901
  function withEol(s, eol) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@curdx/flow",
3
- "version": "6.0.3",
3
+ "version": "6.0.5",
4
4
  "description": "Interactive installer for Claude Code plugins and MCP servers",
5
5
  "type": "module",
6
6
  "bin": "./dist/index.mjs",