@axiomatic-labs/claudeflow 2.13.151 → 2.13.152

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/lib/install.js +11 -13
  2. package/package.json +1 -1
package/lib/install.js CHANGED
@@ -1304,17 +1304,19 @@ function copyDirSync(src, dst, skipNames) {
1304
1304
  // already exists. When mode = normal, strips the block if present so the
1305
1305
  // user's CLAUDE.md is left untouched.
1306
1306
  function syncBoostAddendumOnInstall(cwd) {
1307
- const activeModePath = path.join(cwd, '.claudeflow', 'active-mode');
1307
+ // v2.13.152: in unified mode (mode is per-build, picked at /claudeflow-build
1308
+ // invocation), the addendum is always injected when CLAUDE.md exists. The
1309
+ // load-bearing rule "all code changes flow through /claudeflow-build" applies
1310
+ // regardless of which mode is picked per build, so we no longer gate on
1311
+ // .claudeflow/active-mode (which was removed in v2.13.148). Mode-specific
1312
+ // mandates inside the addendum body explicitly say "fast-only" or
1313
+ // "normal-only" so the LLM applies them conditionally.
1308
1314
  const claudeMdPath = path.join(cwd, 'CLAUDE.md');
1309
- // The addendum lives in .claudeflow/templates/ (not inside variants/) so
1310
- // the /claudeflow-mode switch's persist-step does not wipe it on every
1311
- // rotation. See .claudeflow/cli/claudeflow-mode.js for the same rationale.
1312
1315
  const addendumPath = path.join(cwd, '.claudeflow', 'templates', 'CLAUDE_BOOST_ADDENDUM.md');
1313
- if (!fs.existsSync(activeModePath) || !fs.existsSync(claudeMdPath)) return;
1316
+ if (!fs.existsSync(claudeMdPath) || !fs.existsSync(addendumPath)) return;
1314
1317
 
1315
1318
  const ADDENDUM_BEGIN = '<!-- claudeflow:boost-mode:BEGIN -->';
1316
1319
  const ADDENDUM_END = '<!-- claudeflow:boost-mode:END -->';
1317
- const activeMode = fs.readFileSync(activeModePath, 'utf8').trim();
1318
1320
  const original = fs.readFileSync(claudeMdPath, 'utf8');
1319
1321
  const beginIdx = original.indexOf(ADDENDUM_BEGIN);
1320
1322
  const endIdx = original.indexOf(ADDENDUM_END);
@@ -1326,13 +1328,9 @@ function syncBoostAddendumOnInstall(cwd) {
1326
1328
  base = original.slice(0, beginIdx).replace(/\s*$/, '') + original.slice(blockEnd).replace(/^\s*/, '\n');
1327
1329
  }
1328
1330
 
1329
- if (activeMode === 'boost' && fs.existsSync(addendumPath)) {
1330
- const addendumBody = fs.readFileSync(addendumPath, 'utf8').trimEnd();
1331
- const block = `\n\n${ADDENDUM_BEGIN}\n${addendumBody}\n${ADDENDUM_END}\n`;
1332
- fs.writeFileSync(claudeMdPath, base.replace(/\s*$/, '') + block);
1333
- } else if (hasBlock) {
1334
- fs.writeFileSync(claudeMdPath, base.replace(/\s*$/, '') + '\n');
1335
- }
1331
+ const addendumBody = fs.readFileSync(addendumPath, 'utf8').trimEnd();
1332
+ const block = `\n\n${ADDENDUM_BEGIN}\n${addendumBody}\n${ADDENDUM_END}\n`;
1333
+ fs.writeFileSync(claudeMdPath, base.replace(/\s*$/, '') + block);
1336
1334
  }
1337
1335
 
1338
1336
  module.exports = Object.assign(run, {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@axiomatic-labs/claudeflow",
3
- "version": "2.13.151",
3
+ "version": "2.13.152",
4
4
  "description": "Claudeflow — AI-powered development toolkit for Claude Code. Skills, agents, hooks, and quality gates that ship production apps.",
5
5
  "bin": {
6
6
  "claudeflow": "./bin/cli.js"