azclaude-copilot 0.4.30 → 0.4.32

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.
@@ -9,7 +9,7 @@
9
9
  {
10
10
  "name": "azclaude",
11
11
  "description": "AZCLAUDE is a complete AI coding environment for Claude Code. It installs 34 commands, 9 auto-invoked skills, 15 specialized agents, 4 hooks, and a persistent memory system — in one command.\n\nKey features:\n• Memory across sessions — goals.md + checkpoints injected automatically before every session\n• Self-improving loop — /reflect fixes stale CLAUDE.md rules, /reflexes learns from tool-use patterns, /evolve creates agents from git evidence\n• Autonomous copilot mode — /copilot runs a three-tier team (orchestrator → problem-architect → milestone-builder) across sessions until the product ships\n• Spec-driven workflow — /constitute writes project rules, /spec writes structured ACs, /analyze detects plan drift and ghost milestones, /blueprint traces every milestone to a spec\n• Security layer — 111-rule environment scan (/sentinel), pre-write secret blocking, pre-ship credential audit\n• Progressive levels 0–10 — start with CLAUDE.md, grow into multi-agent pipelines and self-evolving environments\n• Zero dependencies — no npm packages, no external APIs, no vector databases. Plain markdown files and Claude Code's native architecture.\n• Smart install — npx azclaude-copilot@latest auto-detects first install vs upgrade vs verify. Context-aware onboarding shows the right next command for your project state.\n\nExample use cases:\n• /setup — scan an existing project, detect stack + domain + scale, fill CLAUDE.md, generate project-specific skills and agents automatically\n• /copilot \"Build a compliance SaaS with trilingual support\" — walk away, come back to working code across multiple sessions\n• /sentinel — run a scored security audit (0–100, grade A–F) across hooks, permissions, MCP servers, agent configs, and secrets\n• /evolve — detect gaps in the environment, generate new skills and agents from git co-change evidence, report score delta (e.g. 42/100 → 68/100)\n• /constitute — write your project's constitution (non-negotiables, architectural commitments, definition of done) — gates all future AI actions\n• /analyze — cross-artifact consistency check: ghost milestones, spec vs. code drift, unplanned commits\n• /reflect — find stale, missing, or contradicting rules in CLAUDE.md and propose exact fixes\n• /debate \"REST vs GraphQL for this project\" — adversarial evidence-based decision with order-independent scoring, logged to decisions.md",
12
- "version": "0.4.30",
12
+ "version": "0.4.32",
13
13
  "source": {
14
14
  "source": "github",
15
15
  "repo": "haytamAroui/AZ-CLAUDE-COPILOT",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "azclaude",
3
- "version": "0.4.30",
3
+ "version": "0.4.32",
4
4
  "description": "AZCLAUDE is a complete AI coding environment for Claude Code. It installs 34 commands, 9 auto-invoked skills, 15 specialized agents, 4 hooks, and a persistent memory system — in one command.\n\nKey features:\n• Memory across sessions — goals.md + checkpoints injected automatically before every session\n• Self-improving loop — /reflect fixes stale CLAUDE.md rules, /reflexes learns from tool-use patterns, /evolve creates agents from git evidence\n• Autonomous copilot mode — /copilot runs a three-tier team (orchestrator → problem-architect → milestone-builder) across sessions until the product ships\n• Spec-driven workflow — /constitute writes project rules, /spec writes structured ACs, /analyze detects plan drift and ghost milestones, /blueprint traces every milestone to a spec\n• Security layer — 111-rule environment scan (/sentinel), pre-write secret blocking, pre-ship credential audit\n• Progressive levels 0–10 — start with CLAUDE.md, grow into multi-agent pipelines and self-evolving environments\n• Zero dependencies — no npm packages, no external APIs, no vector databases. Plain markdown files and Claude Code's native architecture.\n• Smart install — npx azclaude-copilot@latest auto-detects first install vs upgrade vs verify. Context-aware onboarding shows the right next command for your project state.\n\nExample use cases:\n• /setup — scan an existing project, detect stack + domain + scale, fill CLAUDE.md, generate project-specific skills and agents automatically\n• /copilot \"Build a compliance SaaS with trilingual support\" — walk away, come back to working code across multiple sessions\n• /sentinel — run a scored security audit (0–100, grade A–F) across hooks, permissions, MCP servers, agent configs, and secrets\n• /evolve — detect gaps in the environment, generate new skills and agents from git co-change evidence, report score delta (e.g. 42/100 → 68/100)\n• /constitute — write your project's constitution (non-negotiables, architectural commitments, definition of done) — gates all future AI actions\n• /analyze — cross-artifact consistency check: ghost milestones, spec vs. code drift, unplanned commits\n• /reflect — find stale, missing, or contradicting rules in CLAUDE.md and propose exact fixes\n• /debate \"REST vs GraphQL for this project\" — adversarial evidence-based decision with order-independent scoring, logged to decisions.md",
5
5
  "author": {
6
6
  "name": "haytamAroui",
package/README.md CHANGED
@@ -807,11 +807,11 @@ Run `/level-up` at any time to see your current level and build the next one.
807
807
 
808
808
  ## Verified
809
809
 
810
- 1458 tests. Every template, command, capability, agent, hook, and CLI feature verified.
810
+ 1462 tests. Every template, command, capability, agent, hook, and CLI feature verified.
811
811
 
812
812
  ```bash
813
813
  bash tests/test-features.sh
814
- # Results: 1458 passed, 0 failed, 1458 total
814
+ # Results: 1462 passed, 0 failed, 1462 total
815
815
  ```
816
816
 
817
817
  ---
package/bin/cli.js CHANGED
@@ -1194,32 +1194,44 @@ if (hasPlan && hasPendingMilestones) {
1194
1194
  console.log('\n════════════════════════════════════════════════');
1195
1195
  console.log(` AZCLAUDE v${currentVer} — ${isFirstInstall ? 'installed' : needsUpgrade ? 'upgraded' : 'up to date'}`);
1196
1196
  console.log('');
1197
+
1198
+ // First-time users get a one-liner orientation
1199
+ if (isFirstInstall) {
1200
+ console.log(' AI coding commands for Claude Code: /setup, /add, /fix,');
1201
+ console.log(' /copilot, /ship and 29 more. Run them inside Claude Code.');
1202
+ console.log('');
1203
+ }
1204
+
1197
1205
  console.log(' Open Claude Code in this directory, then:');
1198
1206
  console.log('');
1199
1207
 
1200
1208
  if (onboardingPath === 'RESUME') {
1201
- console.log(' You have a plan with pending work:');
1209
+ console.log(' A plan with pending work was found:');
1202
1210
  console.log('');
1203
- console.log(' /copilot resume autonomous build');
1204
1211
  console.log(' /pulse see current state first');
1212
+ console.log(' /copilot resume autonomous build');
1205
1213
  console.log(' /analyze plan verify plan vs reality');
1214
+ console.log('');
1215
+ console.log(' Starting fresh instead?');
1216
+ console.log('');
1217
+ console.log(' /setup (re)configure this project');
1206
1218
  } else if (onboardingPath === 'EXISTING') {
1207
1219
  console.log(' Existing project detected:');
1208
1220
  console.log('');
1209
- console.log(' /setup scan + configure this project');
1210
- console.log(' /dream define what to build next');
1211
- console.log(' /blueprint plan the next feature');
1212
- console.log(' /copilot . build autonomously');
1221
+ console.log(' /setup scan + configure this project ← start here');
1222
+ console.log(' /add [feature] start building immediately');
1223
+ console.log(' /dream plan a full product first');
1224
+ console.log(' /copilot build autonomously');
1213
1225
  } else {
1214
1226
  console.log(' New project:');
1215
1227
  console.log('');
1216
- console.log(' /setup configure this project');
1228
+ console.log(' /setup configure this project ← start here');
1217
1229
  console.log(' /add [feature] start building immediately');
1218
1230
  console.log(' /dream plan a full product first');
1219
1231
  }
1220
1232
 
1221
1233
  console.log('');
1222
1234
  console.log(' ─────────────────────────────────────────────');
1223
- console.log(' docs: github.com/haytamAroui/AZ-CLAUDE-COPILOT');
1224
- console.log(' upgrade: npx azclaude-copilot@latest');
1235
+ console.log(' all commands: /help · docs: github.com/haytamAroui/AZ-CLAUDE-COPILOT');
1236
+ console.log(' upgrade: npx azclaude-copilot@latest');
1225
1237
  console.log('════════════════════════════════════════════════\n');
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "azclaude-copilot",
3
- "version": "0.4.30",
3
+ "version": "0.4.32",
4
4
  "description": "AI coding environment — 34 commands, 9 skills, 15 agents, memory, reflexes, evolution. Install: npx azclaude-copilot@latest, then open Claude Code.",
5
5
  "bin": {
6
6
  "azclaude": "bin/cli.js",
@@ -191,6 +191,30 @@ const RULES = [
191
191
  message: 'Prompt injection pattern detected in file being written — this content could hijack AI agent context when read. Matches known CVE-2025-54794 attack vector. Review before proceeding.',
192
192
  block: false,
193
193
  },
194
+ {
195
+ id: 'c-gets',
196
+ test: /\bgets\s*\(/,
197
+ message: 'gets() detected — buffer overflow vulnerability (removed from C11). Use fgets() or getline() with explicit bounds.',
198
+ block: false,
199
+ },
200
+ {
201
+ id: 'php-shell-exec',
202
+ test: /\bshell_exec\s*\(/,
203
+ message: 'shell_exec() detected — command injection risk. Use escapeshellarg() or avoid shell execution entirely.',
204
+ block: false,
205
+ },
206
+ {
207
+ id: 'java-runtime-exec',
208
+ test: /Runtime\.getRuntime\(\)\.exec\s*\(/,
209
+ message: 'Runtime.exec() detected — command injection risk. Use ProcessBuilder with a String[] argument array instead.',
210
+ block: false,
211
+ },
212
+ {
213
+ id: 'jinja2-ssti',
214
+ test: /render_template_string\s*\(/,
215
+ message: 'render_template_string() detected — server-side template injection risk. Use render_template() with a file-based template instead.',
216
+ block: false,
217
+ },
194
218
  {
195
219
  id: 'subprocess-shell-true',
196
220
  test: /subprocess\.(run|Popen|call|check_output)\s*\([^)]*shell\s*=\s*True/,
@@ -47,13 +47,14 @@ All hooks share `/tmp/.azclaude-seclog-{PID}` (JSONL). Session summary printed a
47
47
  Warns (once per session) when Claude reads credential files:
48
48
  `.env`, `.env.*`, `secrets.json`, `secrets.yaml`, `credentials.json`, `id_rsa`, `id_ed25519`, `id_ecdsa`, `id_dsa`, `.pem`, `.p12`, `.pfx`, `.keystore`
49
49
 
50
- ## Write Gate — 15 Rules (pre-tool-use.js)
50
+ ## Write Gate — 19 Rules (pre-tool-use.js)
51
51
  Scans all Edit/Write content before writing. Secrets → **Block** (exit 2). Others → Warn.
52
52
 
53
53
  Key patterns: `eval(`, `child_process.exec(`, `dangerouslySetInnerHTML`, `pickle.load(`,
54
- `os.system(`, `subprocess(..., shell=True)`, `MD5`/`SHA1`/`Math.random()`, `__proto__`,
55
- `yaml.load(`, `../` traversal, `ignore previous instructions`,
56
- AWS/GH/GL/Slack/npm/GCP/Stripe/SendGrid/PEM tokens.
54
+ `os.system(`, `subprocess(..., shell=True)`, `gets(`, `shell_exec(`,
55
+ `Runtime.getRuntime().exec(`, `render_template_string(`,
56
+ `MD5`/`SHA1`/`Math.random()`, `__proto__`, `yaml.load(`, `../` traversal,
57
+ `ignore previous instructions`, AWS/GH/GL/Slack/npm/GCP/Stripe/SendGrid/PEM tokens.
57
58
 
58
59
  For fix guidance per pattern: `references/security-details.md`
59
60
 
@@ -15,7 +15,7 @@ Claude plans & calls tools
15
15
  [pre-tool-use.js] — intercepts 3 tool types before execution:
16
16
  Bash → blocks curl|bash RCE, destructive rm; warns npm install, env var echo
17
17
  Read → warns on credential file access (.env, secrets.json, id_rsa, .pem)
18
- Write → 14 code vulnerability pattern rules (see table below)
18
+ Write → 19 code vulnerability pattern rules (see table below)
19
19
  ↓ ↓
20
20
  [post-tool-use.js] /tmp/.azclaude-seclog-{PID}
21
21
  behavioral sequence ↑ shared session event log
@@ -88,6 +88,10 @@ Scans all Edit/Write/MultiEdit operations. Warnings → stderr. Secrets → exit
88
88
  | `path-traversal` | `../` in file paths | Any | Arbitrary file read/write | Warn |
89
89
  | `prompt-injection-write` | `ignore previous instructions` / `{"role":"user","content":` | Any | AI context hijack (CVE-2025-54794) | Warn |
90
90
  | `subprocess-shell-true` | `subprocess.run(..., shell=True)` / `subprocess.Popen(..., shell=True)` | Python | Command injection via shell metacharacters | Warn |
91
+ | `c-gets` | `gets(` | C/C++ | Buffer overflow (removed from C11) | Warn |
92
+ | `php-shell-exec` | `shell_exec(` | PHP | Command injection | Warn |
93
+ | `java-runtime-exec` | `Runtime.getRuntime().exec(` | Java/Kotlin | Command injection | Warn |
94
+ | `jinja2-ssti` | `render_template_string(` | Python/Flask | Server-side template injection | Warn |
91
95
  | `hardcoded-secret` | AWS/GH/GL/Slack/npm/GCP/Stripe/SendGrid/PEM key tokens | Any | Credential exposure | **Block** |
92
96
 
93
97
  **Fix guidance per pattern:**
@@ -102,6 +106,10 @@ Scans all Edit/Write/MultiEdit operations. Warnings → stderr. Secrets → exit
102
106
  - `yaml-unsafe-load` → use `yaml.safe_load()` — always
103
107
  - `path-traversal` → use `path.resolve()` + validate result starts with allowed base dir
104
108
  - `prompt-injection-write` → review content before writing to files that will be read by AI agents; never embed instruction-like text in project files
109
+ - `c-gets` → use `fgets(buf, sizeof(buf), stdin)` or `getline()` — always specify buffer bounds
110
+ - `php-shell-exec` → use `escapeshellarg()` / `escapeshellcmd()`, or avoid shell calls entirely
111
+ - `java-runtime-exec` → use `new ProcessBuilder(List.of("cmd", "arg1")).start()` with a String array
112
+ - `jinja2-ssti` → use `render_template("file.html", ...)` with a file-based template, never render raw strings
105
113
  - `hardcoded-secret` → use environment variables (`process.env.MY_SECRET` / `os.environ['MY_SECRET']`)
106
114
 
107
115
  ---