@axiomatic-labs/claudeflow 2.12.66 → 2.12.68

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 +19 -3
  2. package/package.json +1 -1
package/lib/install.js CHANGED
@@ -12,6 +12,7 @@ const ui = require('./ui.js');
12
12
  const TEMPLATE_AGENTS = new Set(['claudeflow-explorer', 'claudeflow-planner', 'example-agent']);
13
13
  const TEMPLATE_MANAGED_MANIFEST = path.join('.claudeflow', 'config', 'template-managed-manifest.json');
14
14
  const CLAUDE_BACKUP_ROOT = '.claudeflow-backups';
15
+ const REQUIRED_TEMPLATE_RULES = ['claudeflow-implementation.md'];
15
16
 
16
17
  async function run() {
17
18
  const current = readLocalVersion();
@@ -159,9 +160,11 @@ async function run() {
159
160
  // Copy rules
160
161
  const srcRules = path.join(srcClaude, 'rules');
161
162
  const dstRules = path.join(cwd, '.claude', 'rules');
162
- if (fs.existsSync(srcRules)) {
163
- copyDirSync(srcRules, dstRules);
163
+ if (!fs.existsSync(srcRules)) {
164
+ throw new Error('Release asset is missing required .claude/rules directory. Rebuild the release before installing.');
164
165
  }
166
+ assertRequiredTemplateRules(srcRules);
167
+ copyDirSync(srcRules, dstRules);
165
168
 
166
169
  // Copy commands
167
170
  const srcCommands = path.join(srcClaude, 'commands');
@@ -724,6 +727,17 @@ function pruneEmptyAncestors(startDir, stopDir) {
724
727
  }
725
728
  }
726
729
 
730
+ function assertRequiredTemplateRules(rulesDir) {
731
+ for (const filename of REQUIRED_TEMPLATE_RULES) {
732
+ const rulePath = path.join(rulesDir, filename);
733
+ if (!fs.existsSync(rulePath)) {
734
+ throw new Error(
735
+ `Release asset is missing required template rule .claude/rules/${filename}. Rebuild the release before installing.`,
736
+ );
737
+ }
738
+ }
739
+ }
740
+
727
741
  // Recursively copy a directory, creating parents as needed
728
742
  function copyDirSync(src, dst, skipNames) {
729
743
  fs.mkdirSync(dst, { recursive: true });
@@ -740,4 +754,6 @@ function copyDirSync(src, dst, skipNames) {
740
754
  }
741
755
  }
742
756
 
743
- module.exports = run;
757
+ module.exports = Object.assign(run, {
758
+ assertRequiredTemplateRules,
759
+ });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@axiomatic-labs/claudeflow",
3
- "version": "2.12.66",
3
+ "version": "2.12.68",
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"