@pjmendonca/devflow 1.10.1 → 1.10.2
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 +10 -0
- package/README.md +1 -1
- package/bin/devflow.js +81 -0
- package/package.json +2 -1
- package/tooling/scripts/lib/__init__.py +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -5,6 +5,16 @@ All notable changes to this project 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
|
+
## [1.10.2] - 2025-12-24
|
|
9
|
+
|
|
10
|
+
### Fixed
|
|
11
|
+
- **npx Command** - Fixed "could not determine executable to run" error when running `npx @pjmendonca/devflow`
|
|
12
|
+
- Added main `devflow` bin entry to package.json
|
|
13
|
+
- Created bin/devflow.js as smart entry point with context detection
|
|
14
|
+
- Outside Devflow project: automatically scaffolds new project
|
|
15
|
+
- Inside Devflow project: shows help and dispatches to commands
|
|
16
|
+
- Simplified workflow: single command for both setup and usage
|
|
17
|
+
|
|
8
18
|
## [1.10.1] - 2025-12-24
|
|
9
19
|
|
|
10
20
|
### Fixed
|
package/README.md
CHANGED
|
@@ -532,7 +532,7 @@ Free to use in commercial and personal projects.
|
|
|
532
532
|
|
|
533
533
|
|
|
534
534
|
<!-- VERSION_START - Auto-updated by update_version.py -->
|
|
535
|
-
**Version**: 1.10.
|
|
535
|
+
**Version**: 1.10.2
|
|
536
536
|
**Status**: Production Ready
|
|
537
537
|
**Last Updated**: 2025-12-24
|
|
538
538
|
<!-- VERSION_END -->
|
package/bin/devflow.js
ADDED
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
|
|
3
|
+
const fs = require('fs');
|
|
4
|
+
const path = require('path');
|
|
5
|
+
const { spawn } = require('child_process');
|
|
6
|
+
|
|
7
|
+
const commands = {
|
|
8
|
+
'init': 'Initialize Devflow in your project',
|
|
9
|
+
'story': 'Run full story pipeline (context + dev + review)',
|
|
10
|
+
'collab': 'Run collaborative story with mode selection',
|
|
11
|
+
'checkpoint': 'Create or restore context checkpoints',
|
|
12
|
+
'memory': 'View or query shared agent memory',
|
|
13
|
+
'cost': 'View cost dashboard and spending analytics',
|
|
14
|
+
'validate': 'Validate project configuration',
|
|
15
|
+
'create-persona': 'Create a new agent persona',
|
|
16
|
+
'personalize': 'Personalize agent behavior with guided wizard',
|
|
17
|
+
'validate-overrides': 'Validate override configurations',
|
|
18
|
+
'new-doc': 'Create new documentation',
|
|
19
|
+
'tech-debt': 'Analyze and track technical debt',
|
|
20
|
+
'setup-checkpoint': 'Setup checkpoint system',
|
|
21
|
+
'version': 'Show version information'
|
|
22
|
+
};
|
|
23
|
+
|
|
24
|
+
/**
|
|
25
|
+
* Check if we're in a Devflow project
|
|
26
|
+
*/
|
|
27
|
+
function isInDevflowProject() {
|
|
28
|
+
const indicators = [
|
|
29
|
+
'tooling/.automation',
|
|
30
|
+
'tooling/scripts',
|
|
31
|
+
'.claude'
|
|
32
|
+
];
|
|
33
|
+
|
|
34
|
+
return indicators.some(indicator => fs.existsSync(path.join(process.cwd(), indicator)));
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
/**
|
|
38
|
+
* Show help message
|
|
39
|
+
*/
|
|
40
|
+
function showHelp() {
|
|
41
|
+
console.log('Devflow - Development workflow automation with Claude Code\n');
|
|
42
|
+
console.log('Usage: devflow <command> [options]\n');
|
|
43
|
+
console.log('Available commands:\n');
|
|
44
|
+
|
|
45
|
+
Object.entries(commands).forEach(([cmd, desc]) => {
|
|
46
|
+
console.log(` ${cmd.padEnd(20)} ${desc}`);
|
|
47
|
+
});
|
|
48
|
+
|
|
49
|
+
console.log('\nRun "devflow <command> --help" for more information on a command.');
|
|
50
|
+
console.log('\nGet started: devflow init');
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
const args = process.argv.slice(2);
|
|
54
|
+
|
|
55
|
+
// If no arguments or --help, check if we're in a project
|
|
56
|
+
if (args.length === 0 || args[0] === '--help' || args[0] === '-h') {
|
|
57
|
+
if (!isInDevflowProject()) {
|
|
58
|
+
// Not in a project - run scaffolder
|
|
59
|
+
console.log('No Devflow project detected. Running project scaffolder...\n');
|
|
60
|
+
const createScript = require.resolve('./create-devflow.js');
|
|
61
|
+
const child = spawn('node', [createScript], { stdio: 'inherit' });
|
|
62
|
+
child.on('exit', (code) => process.exit(code || 0));
|
|
63
|
+
} else {
|
|
64
|
+
// In a project - show help
|
|
65
|
+
showHelp();
|
|
66
|
+
process.exit(0);
|
|
67
|
+
}
|
|
68
|
+
} else {
|
|
69
|
+
// Command provided
|
|
70
|
+
const command = args[0];
|
|
71
|
+
|
|
72
|
+
if (commands[command]) {
|
|
73
|
+
const binPath = require.resolve(`./devflow-${command}.js`);
|
|
74
|
+
const child = spawn('node', [binPath, ...args.slice(1)], { stdio: 'inherit' });
|
|
75
|
+
child.on('exit', (code) => process.exit(code || 0));
|
|
76
|
+
} else {
|
|
77
|
+
console.error(`Unknown command: ${command}`);
|
|
78
|
+
console.error('Run "devflow --help" to see available commands.');
|
|
79
|
+
process.exit(1);
|
|
80
|
+
}
|
|
81
|
+
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pjmendonca/devflow",
|
|
3
|
-
"version": "1.10.
|
|
3
|
+
"version": "1.10.2",
|
|
4
4
|
"description": "Development workflow automation with Claude Code - agent-based development system with cost tracking",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"devflow",
|
|
@@ -24,6 +24,7 @@
|
|
|
24
24
|
"name": "Pedro Jose da Rocha Mendonca"
|
|
25
25
|
},
|
|
26
26
|
"bin": {
|
|
27
|
+
"devflow": "bin/devflow.js",
|
|
27
28
|
"create-devflow": "bin/create-devflow.js",
|
|
28
29
|
"devflow-cost": "bin/devflow-cost.js",
|
|
29
30
|
"devflow-validate": "bin/devflow-validate.js",
|