azclaude-copilot 0.4.29 → 0.4.31

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.29",
12
+ "version": "0.4.31",
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.29",
3
+ "version": "0.4.31",
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
- 1455 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: 1455 passed, 0 failed, 1455 total
814
+ # Results: 1462 passed, 0 failed, 1462 total
815
815
  ```
816
816
 
817
817
  ---
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "azclaude-copilot",
3
- "version": "0.4.29",
3
+ "version": "0.4.31",
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",
@@ -77,7 +77,7 @@ if (toolName === 'Bash' && command) {
77
77
 
78
78
  // ── Gate: Read tool — warn on credential file access ─────────────────────────
79
79
  if (toolName === 'Read' && filePath) {
80
- const CRED_FILE = /\.env$|\.env\.\w+$|secrets?\.(json|ya?ml)$|credentials?(\.json)?$|id_rsa$|\.pem$|\.p12$|\.pfx$|\.keystore$/i;
80
+ const CRED_FILE = /\.env$|\.env\.\w+$|secrets?\.(json|ya?ml)$|credentials?(\.json)?$|id_rsa$|id_ed25519$|id_ecdsa$|id_dsa$|\.pem$|\.p12$|\.pfx$|\.keystore$/i;
81
81
  if (CRED_FILE.test(filePath)) {
82
82
  const rel = path.relative(process.cwd(), path.resolve(filePath));
83
83
  if (!rel.startsWith('..')) {
@@ -191,6 +191,36 @@ 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
+ },
218
+ {
219
+ id: 'subprocess-shell-true',
220
+ test: /subprocess\.(run|Popen|call|check_output)\s*\([^)]*shell\s*=\s*True/,
221
+ message: 'subprocess with shell=True detected — command injection via shell metacharacters. Use list args with shell=False instead.',
222
+ block: false,
223
+ },
194
224
  {
195
225
  id: 'hardcoded-secret',
196
226
  test: /AKIA[A-Z0-9]{16}|sk-[a-zA-Z0-9]{20,}|ghp_[A-Za-z0-9]{36}|glpat-[A-Za-z0-9_-]{20}|xoxb-[0-9]|xoxp-[0-9]|npm_[A-Za-z0-9]{36}|AIza[0-9A-Za-z_-]{35}|sk_live_[0-9a-zA-Z]{24}|SG\.[A-Za-z0-9_-]{22}\.|-----BEGIN (RSA |EC |DSA |OPENSSH )?PRIVATE KEY/,
@@ -45,13 +45,15 @@ All hooks share `/tmp/.azclaude-seclog-{PID}` (JSONL). Session summary printed a
45
45
 
46
46
  ## Read Gate (pre-tool-use.js)
47
47
  Warns (once per session) when Claude reads credential files:
48
- `.env`, `.env.*`, `secrets.json`, `secrets.yaml`, `credentials.json`, `id_rsa`, `.pem`, `.p12`, `.pfx`, `.keystore`
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 — 14 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(`, `MD5`/`SHA1`/`Math.random()`, `__proto__`, `yaml.load(`, `../` traversal,
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,
55
57
  `ignore previous instructions`, AWS/GH/GL/Slack/npm/GCP/Stripe/SendGrid/PEM tokens.
56
58
 
57
59
  For fix guidance per pattern: `references/security-details.md`
@@ -48,7 +48,7 @@ Levels: `block` (exit 2 — Claude Code refuses the action) · `warn` (exit 0
48
48
 
49
49
  ### Read Gate Rules (pre-tool-use.js)
50
50
 
51
- Files matching: `.env`, `.env.*`, `secrets.json`, `secrets.yaml`, `credentials.json`, `id_rsa`, `.pem`, `.p12`, `.pfx`, `.keystore`
51
+ Files matching: `.env`, `.env.*`, `secrets.json`, `secrets.yaml`, `credentials.json`, `id_rsa`, `id_ed25519`, `id_ecdsa`, `id_dsa`, `.pem`, `.p12`, `.pfx`, `.keystore`
52
52
  → Warn once per session per file (deduplicated).
53
53
 
54
54
  ### Behavioral Sequence Detection (post-tool-use.js)
@@ -87,6 +87,11 @@ Scans all Edit/Write/MultiEdit operations. Warnings → stderr. Secrets → exit
87
87
  | `yaml-unsafe-load` | `yaml.load(` | Python | Arbitrary code execution | Warn |
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
+ | `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 |
90
95
  | `hardcoded-secret` | AWS/GH/GL/Slack/npm/GCP/Stripe/SendGrid/PEM key tokens | Any | Credential exposure | **Block** |
91
96
 
92
97
  **Fix guidance per pattern:**
@@ -94,7 +99,7 @@ Scans all Edit/Write/MultiEdit operations. Warnings → stderr. Secrets → exit
94
99
  - `eval` / `new Function` → use `JSON.parse()` for data; avoid string→code entirely
95
100
  - `dangerouslySetInnerHTML` / `dom-xss` → use `textContent` or sanitize with DOMPurify
96
101
  - `pickle.*` → use `json.loads()` for serialization; never unpickle external data
97
- - `os.system` → use `subprocess.run(['cmd', 'arg1'], shell=False)`
102
+ - `os.system` / `subprocess-shell-true` → use `subprocess.run(['cmd', 'arg1'], shell=False)`
98
103
  - `gh-actions-injection` → store event data in env vars before using in `run:` steps
99
104
  - `weak-crypto` → use `crypto.randomBytes()` / `secrets.token_bytes()`, SHA-256+, AES-GCM
100
105
  - `prototype-pollution` → use `Object.create(null)`, `Object.freeze()`, avoid dynamic key assignment