devflow-kit 0.1.2 โ†’ 0.3.0

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
@@ -5,6 +5,153 @@ All notable changes to DevFlow will be documented in this file.
5
5
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6
6
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
7
 
8
+ ## [0.3.0] - 2025-10-16
9
+
10
+ ### Added
11
+
12
+ #### Language-Agnostic Global CLAUDE.md
13
+ - **Global engineering principles** - Universal CLAUDE.md works across all programming languages
14
+ - Strips language-specific syntax, focuses on concepts (Result types, DI, immutability, pure functions)
15
+ - Critical anti-patterns enforcement (NO FAKE SOLUTIONS, FAIL HONESTLY, BE TRANSPARENT)
16
+ - Code quality enforcement (root cause analysis over workarounds)
17
+ - Architecture documentation standards (document patterns, boundaries, exceptions)
18
+ - Type safety best practices, security requirements, naming conventions
19
+ - Structured as ~330 lines of precise, non-bloated global instructions
20
+
21
+ #### Smart CLAUDE.md Installation
22
+ - **Intelligent mounting logic** - Preserves user's existing global configuration
23
+ - Fresh install: Directly installs CLAUDE.md (no conflicts)
24
+ - Existing CLAUDE.md: Preserves user file, creates CLAUDE.devflow.md with merge instructions
25
+ - `--force` flag: Prompts for confirmation, backs up to .backup before override
26
+ - `-y` flag: Auto-approves prompts for automation/CI/CD workflows
27
+ - Parallel implementation to settings.json (consistent UX across installations)
28
+ - Never overwrites without explicit permission
29
+
30
+ #### TypeScript Auditor Sub-Agent
31
+ - **audit-typescript** - Specialized TypeScript code quality and type safety auditor
32
+ - Conditional execution: Runs only if .ts/.tsx files changed OR tsconfig.json exists
33
+ - Built-in detection logic (gracefully skips non-TypeScript projects)
34
+ - Comprehensive audits: type safety config, `any` usage, type assertions, branded types
35
+ - Advanced patterns: discriminated unions, immutability, Result types
36
+ - Code quality: naming conventions, dependency injection, pure functions
37
+ - Severity-based reporting (CRITICAL/HIGH/MEDIUM/LOW) with file:line references
38
+ - Integrated into `/pre-commit` and `/pre-pr` workflows
39
+
40
+ #### Release Automation Workflow
41
+ - **`/release` command** - Project-agnostic release automation for professional releases
42
+ - Multi-step interactive workflow with user confirmations
43
+ - Preview changes before committing, pushing, or publishing
44
+ - Clear rollback instructions if any step fails
45
+ - Comprehensive final summary with verification links
46
+
47
+ - **release sub-agent** - Specialized agent for safe, automated release management
48
+ - Universal project detection (10+ ecosystems supported)
49
+ - Intelligent version bumping based on conventional commit analysis
50
+ - Auto-generated changelogs from git history
51
+ - Built-in safety checks (clean directory, builds, tests)
52
+ - Platform integration (creates GitHub/GitLab releases via gh/glab)
53
+
54
+ #### Supported Release Ecosystems
55
+ - Node.js (package.json + npm)
56
+ - Rust (Cargo.toml + cargo)
57
+ - Python (pyproject.toml/setup.py + pip/twine)
58
+ - Go (go.mod + git tags)
59
+ - Ruby (gemspec + gem)
60
+ - PHP (composer.json + composer)
61
+ - Java/Maven (pom.xml + mvn)
62
+ - Java/Gradle (build.gradle + gradle)
63
+ - Swift (Package.swift + git tags)
64
+ - Generic (VERSION file + git tags)
65
+
66
+ #### Release Workflow Steps
67
+ 1. Detect project type and configuration
68
+ 2. Verify clean working directory
69
+ 3. Analyze commits since last release
70
+ 4. Generate changelog entry from commit history
71
+ 5. Update version files (automatic detection)
72
+ 6. Build and test project
73
+ 7. Preview changes and await user confirmation
74
+ 8. Commit version bump
75
+ 9. Push to remote repository
76
+ 10. Publish to package registry (npm, crates.io, PyPI, etc.)
77
+ 11. Create annotated git tag
78
+ 12. Create platform release (GitHub/GitLab)
79
+ 13. Provide verification links and next steps
80
+
81
+ ### Changed
82
+ - **Pre-commit workflow** - Integrated audit-typescript into 5-agent review
83
+ - Conditionally executes for TypeScript projects
84
+ - No manual configuration needed
85
+ - **Pre-PR workflow** - Integrated audit-typescript into comprehensive review
86
+ - Automatic TypeScript detection and execution
87
+ - Preserves existing audit orchestration patterns
88
+
89
+ ### Documentation
90
+ - Added `/release` command to README commands table
91
+ - Added `release` sub-agent to README sub-agents table
92
+ - Added `audit-typescript` sub-agent to README sub-agents table
93
+ - Created "Creating a Release" workflow section in README
94
+ - Documented smart CLAUDE.md installation behavior
95
+ - Included release automation in integration examples
96
+
97
+
98
+ ## [0.2.0] - 2025-10-16
99
+
100
+ ### Added
101
+ - **audit-documentation sub-agent** - Ensures documentation stays aligned with code
102
+ - Validates README accuracy (installation, usage, examples)
103
+ - Checks API documentation matches actual function signatures
104
+ - Detects stale code comments and commented-out code
105
+ - Verifies code examples actually work
106
+ - Language-agnostic documentation pattern detection
107
+ - Severity-based reporting (CRITICAL/HIGH/MEDIUM/LOW)
108
+ - **Smart settings.json management** - 3-tier backup strategy prevents data loss
109
+ - First install: Direct installation
110
+ - Existing settings: Backup to managed-settings.json
111
+ - Both exist: Save as settings.devflow.json with clear instructions
112
+ - User maintains control of their configuration
113
+ - **Surgical test execution** - Prevents Claude Code session crashes
114
+ - Static analysis by default (80% value, 0% crash risk)
115
+ - Smart test selection based on git changes
116
+ - Individual test file execution with 30s timeouts
117
+ - Max 10 test files per run with resource limits
118
+ - Early termination on repeated error patterns
119
+ - **Language-agnostic agents** - Works with any programming language
120
+ - Auto-detection for 9+ package managers
121
+ - Universal ORM and database patterns
122
+ - Smart test command detection from manifests
123
+ - Generic file search patterns for all ecosystems
124
+
125
+ ### Changed
126
+ - **Pre-commit strategy** - Lightweight 5-agent review for fast feedback
127
+ - Core audits: Security, Performance, Architecture, Tests, Complexity
128
+ - Typical execution: 30-60 seconds
129
+ - Additional audits available on explicit request
130
+ - **Pre-pr strategy** - Comprehensive 7-8 agent review
131
+ - All core audits plus Dependencies and Documentation
132
+ - Conditional Database audit (only if DB files changed)
133
+ - Typical execution: 2-3 minutes
134
+ - Thorough branch review before PR creation
135
+ - **Path handling** - No longer assumes HOME environment variable
136
+ - Uses Node.js homedir() as fallback
137
+ - Environment variable overrides: CLAUDE_CODE_DIR, DEVFLOW_DIR
138
+ - Cross-platform compatibility improvements
139
+
140
+ ### Fixed
141
+ - **Git lock file conflicts** - Wait-based prevention instead of deletion
142
+ - Implemented wait_for_lock_release() with 10s timeout
143
+ - Explicit wait commands after each git operation
144
+ - Command substitution patterns for synchronous execution
145
+ - Prevents zombie process lock file issues
146
+ - No more `.git/index.lock` errors
147
+ - **Settings overwrite issue** - User settings preserved with backup strategy
148
+ - **Hardcoded path assumptions** - Proper fallbacks and environment overrides
149
+
150
+ ### Documentation
151
+ - Added audit-documentation to sub-agents table in README
152
+ - Clarified audit strategies for pre-commit vs pre-pr
153
+ - Updated workflow examples with refined command usage
154
+
8
155
  ## [0.1.2] - 2025-10-05
9
156
 
10
157
  ### Added
@@ -91,6 +238,8 @@ devflow init
91
238
 
92
239
  ---
93
240
 
241
+ [0.3.0]: https://github.com/dean0x/devflow/releases/tag/v0.3.0
242
+ [0.2.0]: https://github.com/dean0x/devflow/releases/tag/v0.2.0
94
243
  [0.1.2]: https://github.com/dean0x/devflow/releases/tag/v0.1.2
95
244
  [0.1.1]: https://github.com/dean0x/devflow/releases/tag/v0.1.1
96
- [0.1.0]: https://github.com/dean0x/devflow/releases/tag/v0.1.0
245
+ [0.1.0]: https://github.com/dean0x/devflow/releases/tag/v0.1.0
package/README.md CHANGED
@@ -25,6 +25,7 @@ That's it! DevFlow is now installed and ready to use in Claude Code.
25
25
  | `/pre-commit` | Review uncommitted changes using specialized sub-agents | Before committing |
26
26
  | `/commit` | Intelligent atomic commit creation with safety checks | When ready to commit |
27
27
  | `/pre-pr` | Comprehensive branch review for PR readiness | Before creating PR |
28
+ | `/release` | Automated release workflow with version management and publishing | Creating a new release |
28
29
 
29
30
  ### ๐Ÿค– Sub-Agents
30
31
 
@@ -33,13 +34,15 @@ That's it! DevFlow is now installed and ready to use in Claude Code.
33
34
  | `audit-security` | Security Analysis | Expert vulnerability detection and security code review |
34
35
  | `audit-performance` | Performance | Optimization and bottleneck detection |
35
36
  | `audit-architecture` | Architecture | Design pattern analysis and code structure review |
36
- | `audit-tests` | Testing | Test quality, coverage, and effectiveness analysis |
37
- | `audit-dependencies` | Dependencies | Dependency management and security analysis |
37
+ | `audit-tests` | Testing | Test quality, coverage, and effectiveness analysis (surgical execution) |
38
38
  | `audit-complexity` | Complexity | Code complexity and maintainability assessment |
39
+ | `audit-dependencies` | Dependencies | Dependency management and security analysis |
39
40
  | `audit-database` | Database | Database design and optimization review |
41
+ | `audit-documentation` | Documentation | Docs-code alignment, API accuracy, comment quality |
40
42
  | `catch-up` | Context Restoration | Project status and context restoration with validation |
41
43
  | `commit` | Git Operations | Intelligent commit creation with safety checks |
42
44
  | `research` | Implementation Planning | Pre-implementation research, approach analysis, and planning |
45
+ | `release` | Release Automation | Project-agnostic release workflow with version management |
43
46
 
44
47
  **How Sub-Agents Work:**
45
48
  - Specialized AI assistants with deep expertise in specific domains
@@ -103,6 +106,16 @@ Covers patterns for all major languages and operating systems.
103
106
  2. `/pre-pr` - Review branch before creating PR
104
107
  3. `/commit` - Final commits with validation
105
108
 
109
+ ### Creating a Release
110
+ 1. `/pre-pr` - Comprehensive branch review
111
+ 2. `/release` - Automated release workflow
112
+ - Detects project type (Node.js, Rust, Python, Go, etc.)
113
+ - Analyzes commits and suggests version bump
114
+ - Generates changelog from git history
115
+ - Builds and tests before publishing
116
+ - Creates git tags and platform releases
117
+ 3. Verify package in registry
118
+
106
119
  ### When Things Go Wrong
107
120
  1. Check git log and recent commits
108
121
  2. `/debug [issue description]` - Structured debugging
@@ -153,6 +166,7 @@ git commit -m "Session status: completed user auth feature"
153
166
  /pre-commit # Review uncommitted changes
154
167
  /commit # Create atomic commits
155
168
  /pre-pr # Branch review before PR
169
+ /release # Automated release workflow
156
170
  /debug "TypeError in auth module" # Debug specific issue
157
171
  ```
158
172
 
@@ -1 +1 @@
1
- {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/cli/commands/init.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAUpC,eAAO,MAAM,WAAW,SA0UpB,CAAC"}
1
+ {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/cli/commands/init.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA+DpC,eAAO,MAAM,WAAW,SAqfpB,CAAC"}
@@ -1,26 +1,87 @@
1
1
  import { Command } from 'commander';
2
2
  import { promises as fs } from 'fs';
3
3
  import * as path from 'path';
4
+ import { homedir } from 'os';
4
5
  import { execSync } from 'child_process';
5
6
  import { fileURLToPath } from 'url';
6
7
  import { dirname } from 'path';
8
+ import * as readline from 'readline';
7
9
  const __filename = fileURLToPath(import.meta.url);
8
10
  const __dirname = dirname(__filename);
11
+ /**
12
+ * Get home directory with proper fallback and validation
13
+ * Priority: process.env.HOME > os.homedir()
14
+ */
15
+ function getHomeDirectory() {
16
+ const home = process.env.HOME || homedir();
17
+ if (!home) {
18
+ throw new Error('Unable to determine home directory. Set HOME environment variable.');
19
+ }
20
+ return home;
21
+ }
22
+ /**
23
+ * Get Claude Code directory with environment variable override support
24
+ * Priority: CLAUDE_CODE_DIR env var > ~/.claude
25
+ */
26
+ function getClaudeDirectory() {
27
+ if (process.env.CLAUDE_CODE_DIR) {
28
+ return process.env.CLAUDE_CODE_DIR;
29
+ }
30
+ return path.join(getHomeDirectory(), '.claude');
31
+ }
32
+ /**
33
+ * Get DevFlow directory with environment variable override support
34
+ * Priority: DEVFLOW_DIR env var > ~/.devflow
35
+ */
36
+ function getDevFlowDirectory() {
37
+ if (process.env.DEVFLOW_DIR) {
38
+ return process.env.DEVFLOW_DIR;
39
+ }
40
+ return path.join(getHomeDirectory(), '.devflow');
41
+ }
42
+ /**
43
+ * Prompt user for confirmation (async)
44
+ */
45
+ async function promptUser(question) {
46
+ const rl = readline.createInterface({
47
+ input: process.stdin,
48
+ output: process.stdout
49
+ });
50
+ return new Promise((resolve) => {
51
+ rl.question(question, (answer) => {
52
+ rl.close();
53
+ resolve(answer.toLowerCase() === 'y' || answer.toLowerCase() === 'yes');
54
+ });
55
+ });
56
+ }
9
57
  export const initCommand = new Command('init')
10
58
  .description('Initialize DevFlow for Claude Code')
11
59
  .option('--skip-docs', 'Skip creating .docs/ structure')
60
+ .option('--force', 'Override existing settings.json and CLAUDE.md (prompts for confirmation)')
61
+ .option('-y, --yes', 'Auto-approve all prompts (use with --force)')
12
62
  .action(async (options) => {
13
63
  console.log('๐Ÿš€ DevFlow - Agentic Development Toolkit');
14
64
  console.log(' Intelligent tools for reliable AI-assisted development\n');
65
+ // Get installation paths with proper validation
66
+ let claudeDir;
67
+ let devflowDir;
68
+ try {
69
+ claudeDir = getClaudeDirectory();
70
+ devflowDir = getDevFlowDirectory();
71
+ }
72
+ catch (error) {
73
+ console.error('โŒ Path configuration error:', error instanceof Error ? error.message : error);
74
+ process.exit(1);
75
+ }
15
76
  // Check for Claude Code
16
- const claudeDir = path.join(process.env.HOME || '', '.claude');
17
77
  try {
18
78
  await fs.access(claudeDir);
19
- console.log('๐Ÿ” Detected Claude Code โœ…\n');
79
+ console.log(`๐Ÿ” Detected Claude Code at ${claudeDir} โœ…\n`);
20
80
  }
21
81
  catch {
22
- console.error('โŒ Claude Code not detected');
82
+ console.error(`โŒ Claude Code not detected at ${claudeDir}`);
23
83
  console.error('\nInstall Claude Code from: https://claude.com/claude-code');
84
+ console.error('\nOr set CLAUDE_CODE_DIR environment variable if installed elsewhere.');
24
85
  process.exit(1);
25
86
  }
26
87
  console.log('๐Ÿ› ๏ธ Installing DevFlow for Claude Code...');
@@ -32,7 +93,7 @@ export const initCommand = new Command('init')
32
93
  console.log(' ๐Ÿงน Cleaning old DevFlow files...');
33
94
  const commandsDevflowDir = path.join(claudeDir, 'commands', 'devflow');
34
95
  const agentsDevflowDir = path.join(claudeDir, 'agents', 'devflow');
35
- const devflowScriptsDir = path.join(process.env.HOME || '', '.devflow', 'scripts');
96
+ const devflowScriptsDir = path.join(devflowDir, 'scripts');
36
97
  // Remove old DevFlow subdirectories (not entire commands/agents folders)
37
98
  try {
38
99
  await fs.rm(commandsDevflowDir, { recursive: true, force: true });
@@ -59,10 +120,170 @@ export const initCommand = new Command('init')
59
120
  for (const script of scripts) {
60
121
  await fs.chmod(path.join(devflowScriptsDir, script), 0o755);
61
122
  }
62
- // Install settings
123
+ // Handle --force flag
124
+ let forceOverride = false;
125
+ if (options.force) {
126
+ if (options.yes) {
127
+ console.log(' โš ๏ธ Force override enabled with auto-approval (-y flag)\n');
128
+ forceOverride = true;
129
+ }
130
+ else {
131
+ console.log(' โš ๏ธ WARNING: --force flag will override existing settings.json and CLAUDE.md\n');
132
+ console.log(' This will:');
133
+ console.log(' โ€ข Replace ~/.claude/settings.json with DevFlow settings');
134
+ console.log(' โ€ข Replace ~/.claude/CLAUDE.md with DevFlow global instructions\n');
135
+ forceOverride = await promptUser(' Do you want to proceed? (y/N): ');
136
+ console.log();
137
+ if (!forceOverride) {
138
+ console.log(' โŒ Force override cancelled. Proceeding with safe installation.\n');
139
+ }
140
+ else {
141
+ console.log(' โœ… Force override approved. Proceeding...\n');
142
+ }
143
+ }
144
+ }
145
+ // Install settings with smart backup
63
146
  console.log(' โš™๏ธ Installing settings...');
64
- await fs.copyFile(path.join(claudeSourceDir, 'settings.json'), path.join(claudeDir, 'settings.json'));
147
+ const settingsPath = path.join(claudeDir, 'settings.json');
148
+ const managedSettingsPath = path.join(claudeDir, 'managed-settings.json');
149
+ const devflowSettingsPath = path.join(claudeDir, 'settings.devflow.json');
150
+ const sourceSettingsPath = path.join(claudeSourceDir, 'settings.json');
151
+ let settingsAction = '';
152
+ if (forceOverride) {
153
+ // Force override - backup existing and install
154
+ try {
155
+ await fs.access(settingsPath);
156
+ await fs.rename(settingsPath, path.join(claudeDir, 'settings.json.backup'));
157
+ console.log(' ๐Ÿ’พ Existing settings backed up to: settings.json.backup');
158
+ }
159
+ catch {
160
+ // No existing file
161
+ }
162
+ await fs.copyFile(sourceSettingsPath, settingsPath);
163
+ settingsAction = 'force-installed';
164
+ console.log(' โœ… DevFlow settings force-installed to: settings.json');
165
+ }
166
+ else {
167
+ // Safe installation logic
168
+ try {
169
+ // Check if user has existing settings.json
170
+ await fs.access(settingsPath);
171
+ // User has settings.json - need to preserve it
172
+ try {
173
+ // Check if managed-settings.json already exists
174
+ await fs.access(managedSettingsPath);
175
+ // managed-settings.json exists - install as settings.devflow.json
176
+ await fs.copyFile(sourceSettingsPath, devflowSettingsPath);
177
+ settingsAction = 'saved-as-devflow';
178
+ console.log(' โš ๏ธ Your existing settings.json is preserved');
179
+ console.log(' ๐Ÿ“„ DevFlow settings saved to: settings.devflow.json');
180
+ }
181
+ catch {
182
+ // managed-settings.json doesn't exist - safe to backup and install
183
+ await fs.rename(settingsPath, managedSettingsPath);
184
+ await fs.copyFile(sourceSettingsPath, settingsPath);
185
+ settingsAction = 'backed-up';
186
+ console.log(' ๐Ÿ’พ Your settings backed up to: managed-settings.json');
187
+ console.log(' โœ… DevFlow settings installed to: settings.json');
188
+ }
189
+ }
190
+ catch {
191
+ // No existing settings.json - install normally
192
+ await fs.copyFile(sourceSettingsPath, settingsPath);
193
+ settingsAction = 'fresh-install';
194
+ console.log(' โœ… DevFlow settings installed to: settings.json');
195
+ }
196
+ }
197
+ // Install CLAUDE.md with smart backup
198
+ console.log(' ๐Ÿ“˜ Installing global CLAUDE.md...');
199
+ const claudeMdPath = path.join(claudeDir, 'CLAUDE.md');
200
+ const devflowClaudeMdPath = path.join(claudeDir, 'CLAUDE.devflow.md');
201
+ const sourceClaudeMdPath = path.join(claudeSourceDir, 'CLAUDE.md');
202
+ let claudeMdAction = '';
203
+ if (forceOverride) {
204
+ // Force override - backup existing and install
205
+ try {
206
+ await fs.access(claudeMdPath);
207
+ await fs.rename(claudeMdPath, path.join(claudeDir, 'CLAUDE.md.backup'));
208
+ console.log(' ๐Ÿ’พ Existing CLAUDE.md backed up to: CLAUDE.md.backup');
209
+ }
210
+ catch {
211
+ // No existing file
212
+ }
213
+ await fs.copyFile(sourceClaudeMdPath, claudeMdPath);
214
+ claudeMdAction = 'force-installed';
215
+ console.log(' โœ… DevFlow CLAUDE.md force-installed');
216
+ }
217
+ else {
218
+ // Safe installation logic
219
+ try {
220
+ // Check if user has existing CLAUDE.md
221
+ await fs.access(claudeMdPath);
222
+ // User has CLAUDE.md - install as CLAUDE.devflow.md
223
+ await fs.copyFile(sourceClaudeMdPath, devflowClaudeMdPath);
224
+ claudeMdAction = 'saved-as-devflow';
225
+ console.log(' โš ๏ธ Your existing CLAUDE.md is preserved');
226
+ console.log(' ๐Ÿ“„ DevFlow CLAUDE.md saved to: CLAUDE.devflow.md');
227
+ }
228
+ catch {
229
+ // No existing CLAUDE.md - install normally
230
+ await fs.copyFile(sourceClaudeMdPath, claudeMdPath);
231
+ claudeMdAction = 'fresh-install';
232
+ console.log(' โœ… DevFlow CLAUDE.md installed');
233
+ }
234
+ }
65
235
  console.log(' โœ… Claude Code installation complete\n');
236
+ // Show settings instructions if needed
237
+ if (settingsAction === 'saved-as-devflow') {
238
+ console.log('โš™๏ธ SETTINGS CONFIGURATION REQUIRED:\n');
239
+ console.log(' Your existing settings.json was preserved because managed-settings.json');
240
+ console.log(' already exists. DevFlow settings are in settings.devflow.json\n');
241
+ console.log(` To use DevFlow settings (statusline), manually merge into ${settingsPath}:`);
242
+ console.log(' ```json');
243
+ console.log(' {');
244
+ console.log(' "statusLine": {');
245
+ console.log(' "type": "command",');
246
+ console.log(` "command": "${path.join(devflowDir, 'scripts', 'statusline.sh')}"`);
247
+ console.log(' }');
248
+ console.log(' }');
249
+ console.log(' ```\n');
250
+ }
251
+ else if (settingsAction === 'backed-up') {
252
+ console.log('๐Ÿ’พ SETTINGS BACKUP:\n');
253
+ console.log(` Your original settings saved to: ${managedSettingsPath}`);
254
+ console.log(` DevFlow settings now active in: ${settingsPath}`);
255
+ console.log(` To restore: mv ${managedSettingsPath} ${settingsPath}\n`);
256
+ }
257
+ else if (settingsAction === 'force-installed') {
258
+ console.log('โš ๏ธ FORCE OVERRIDE APPLIED:\n');
259
+ console.log(` Your original settings backed up to: ${path.join(claudeDir, 'settings.json.backup')}`);
260
+ console.log(` DevFlow settings now active in: ${settingsPath}\n`);
261
+ }
262
+ // Show CLAUDE.md instructions if needed
263
+ if (claudeMdAction === 'saved-as-devflow') {
264
+ console.log('๐Ÿ“˜ CLAUDE.MD CONFIGURATION REQUIRED:\n');
265
+ console.log(' Your existing CLAUDE.md was preserved.');
266
+ console.log(` DevFlow global instructions are in: ${devflowClaudeMdPath}\n`);
267
+ console.log(' To use DevFlow global instructions, manually merge into your CLAUDE.md:');
268
+ console.log(' โ€ข Engineering Principles (Result types, DI, immutability)');
269
+ console.log(' โ€ข Critical Anti-Patterns (NO FAKE SOLUTIONS, FAIL HONESTLY)');
270
+ console.log(' โ€ข Code Quality Enforcement (root cause analysis)');
271
+ console.log(' โ€ข Type Safety Best Practices (language-agnostic)');
272
+ console.log(' โ€ข Architecture Documentation (inline docs)\n');
273
+ console.log(` Or replace entirely: cp ${devflowClaudeMdPath} ${claudeMdPath}\n`);
274
+ }
275
+ else if (claudeMdAction === 'fresh-install') {
276
+ console.log('๐Ÿ“˜ CLAUDE.MD INSTALLED:\n');
277
+ console.log(` DevFlow global instructions active in: ${claudeMdPath}`);
278
+ console.log(' โ€ข Language-agnostic engineering principles');
279
+ console.log(' โ€ข Critical anti-patterns and foolishness prevention');
280
+ console.log(' โ€ข Code quality enforcement rules\n');
281
+ }
282
+ else if (claudeMdAction === 'force-installed') {
283
+ console.log('โš ๏ธ CLAUDE.MD FORCE OVERRIDE APPLIED:\n');
284
+ console.log(` Your original CLAUDE.md backed up to: ${path.join(claudeDir, 'CLAUDE.md.backup')}`);
285
+ console.log(` DevFlow global instructions now active in: ${claudeMdPath}\n`);
286
+ }
66
287
  // Create .claudeignore in git repository root
67
288
  try {
68
289
  // Find git repository root
@@ -298,10 +519,11 @@ Pipfile.lock
298
519
  console.log('\nโœ… DevFlow installation complete!\n');
299
520
  console.log('๐ŸŽฏ WHAT\'S INSTALLED:');
300
521
  console.log(' ๐Ÿ“ Claude Code:');
301
- console.log(' โ€ข Commands: ~/.claude/commands/');
302
- console.log(' โ€ข Sub-agents: ~/.claude/agents/');
303
- console.log(' โ€ข Scripts: ~/.devflow/scripts/');
304
- console.log(' โ€ข Settings: ~/.claude/settings.json (statusline and model)\n');
522
+ console.log(` โ€ข Commands: ${path.join(claudeDir, 'commands')}/`);
523
+ console.log(` โ€ข Sub-agents: ${path.join(claudeDir, 'agents')}/`);
524
+ console.log(` โ€ข Scripts: ${path.join(devflowDir, 'scripts')}/`);
525
+ console.log(` โ€ข Settings: ${settingsPath} (statusline and model)`);
526
+ console.log(` โ€ข Global Instructions: ${claudeMdPath} (language-agnostic)\n`);
305
527
  console.log('๐Ÿ“Š SMART STATUSLINE:');
306
528
  console.log(' โœ… Statusline configured');
307
529
  console.log(' โ€ข Shows project context, git status, session cost, and duration\n');
@@ -1 +1 @@
1
- {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/cli/commands/init.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/cli/commands/init.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"uninstall.d.ts","sourceRoot":"","sources":["../../src/cli/commands/uninstall.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIpC,eAAO,MAAM,gBAAgB,SAuEzB,CAAC"}
1
+ {"version":3,"file":"uninstall.d.ts","sourceRoot":"","sources":["../../src/cli/commands/uninstall.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAuCpC,eAAO,MAAM,gBAAgB,SAgFzB,CAAC"}
@@ -1,13 +1,53 @@
1
1
  import { Command } from 'commander';
2
2
  import { promises as fs } from 'fs';
3
3
  import * as path from 'path';
4
+ import { homedir } from 'os';
5
+ /**
6
+ * Get home directory with proper fallback and validation
7
+ * Priority: process.env.HOME > os.homedir()
8
+ */
9
+ function getHomeDirectory() {
10
+ const home = process.env.HOME || homedir();
11
+ if (!home) {
12
+ throw new Error('Unable to determine home directory. Set HOME environment variable.');
13
+ }
14
+ return home;
15
+ }
16
+ /**
17
+ * Get Claude Code directory with environment variable override support
18
+ * Priority: CLAUDE_CODE_DIR env var > ~/.claude
19
+ */
20
+ function getClaudeDirectory() {
21
+ if (process.env.CLAUDE_CODE_DIR) {
22
+ return process.env.CLAUDE_CODE_DIR;
23
+ }
24
+ return path.join(getHomeDirectory(), '.claude');
25
+ }
26
+ /**
27
+ * Get DevFlow directory with environment variable override support
28
+ * Priority: DEVFLOW_DIR env var > ~/.devflow
29
+ */
30
+ function getDevFlowDirectory() {
31
+ if (process.env.DEVFLOW_DIR) {
32
+ return process.env.DEVFLOW_DIR;
33
+ }
34
+ return path.join(getHomeDirectory(), '.devflow');
35
+ }
4
36
  export const uninstallCommand = new Command('uninstall')
5
37
  .description('Uninstall DevFlow from Claude Code')
6
38
  .option('--keep-docs', 'Keep .docs/ directory and documentation')
7
39
  .action(async (options) => {
8
40
  console.log('๐Ÿงน Uninstalling DevFlow...\n');
9
- const claudeDir = path.join(process.env.HOME || '', '.claude');
10
- const devflowScriptsDir = path.join(process.env.HOME || '', '.devflow');
41
+ let claudeDir;
42
+ let devflowScriptsDir;
43
+ try {
44
+ claudeDir = getClaudeDirectory();
45
+ devflowScriptsDir = getDevFlowDirectory();
46
+ }
47
+ catch (error) {
48
+ console.error('โŒ Path configuration error:', error instanceof Error ? error.message : error);
49
+ process.exit(1);
50
+ }
11
51
  let hasErrors = false;
12
52
  // Remove commands
13
53
  try {
@@ -1 +1 @@
1
- {"version":3,"file":"uninstall.js","sourceRoot":"","sources":["../../src/cli/commands/uninstall.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"uninstall.js","sourceRoot":"","sources":["../../src/cli/commands/uninstall.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "devflow-kit",
3
- "version": "0.1.2",
3
+ "version": "0.3.0",
4
4
  "description": "Agentic Development Toolkit for Claude Code - Enhance AI-assisted development with intelligent commands and workflows",
5
5
  "main": "dist/index.js",
6
6
  "type": "module",