ima-claude 2.25.0 → 2.26.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/README.md +26 -0
- package/dist/cli.js +2 -1
- package/package.json +1 -1
- package/plugins/ima-claude/.claude-plugin/plugin.json +2 -2
- package/plugins/ima-claude/agents/reviewer.md +29 -1
- package/plugins/ima-claude/skills/ima-git/SKILL.md +81 -0
- package/plugins/ima-claude/skills/scorecard/SKILL.md +20 -4
package/README.md
CHANGED
|
@@ -63,6 +63,31 @@ npx ima-claude install --target claude # Claude Code only (plugin recommend
|
|
|
63
63
|
npx ima-claude detect # Show detected platforms
|
|
64
64
|
```
|
|
65
65
|
|
|
66
|
+
**Tip: Install into a single project instead of globally**
|
|
67
|
+
|
|
68
|
+
The installer resolves its target paths via `$HOME` (`~/.claude/...`). Override `$HOME` at invocation time to write skills, agents, hooks, and `settings.json` into the current repo's `./.claude/` instead:
|
|
69
|
+
|
|
70
|
+
```bash
|
|
71
|
+
HOME=$(pwd) npx ima-claude install --target claude
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
Produces:
|
|
75
|
+
|
|
76
|
+
```
|
|
77
|
+
./.claude/skills/ # project-scoped skills
|
|
78
|
+
./.claude/agents/ # project-scoped agents
|
|
79
|
+
./.claude/hooks/ # Python hook scripts
|
|
80
|
+
./.claude/settings.json # hook configuration (absolute paths)
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
Claude Code already reads these as project-scoped config, so the skills/hooks load only when you're working inside that repo.
|
|
84
|
+
|
|
85
|
+
Caveats:
|
|
86
|
+
|
|
87
|
+
- The plugin marketplace flow (`/plugin install ima-claude`) remains the recommended path for most users. Use this override only when you want per-repo skill customization without touching your home install.
|
|
88
|
+
- `settings.json` records hook paths as absolute strings resolved at install time — if you rename or move the project, the hook entries break.
|
|
89
|
+
- `HOME=$(pwd)` also redirects npm's cache, so the install may drop a `.npm/` folder in the project root. Add it to `.gitignore` or clean up afterward.
|
|
90
|
+
|
|
66
91
|
**What's different per platform?**
|
|
67
92
|
|
|
68
93
|
| | Claude Code | Junie CLI | Gemini CLI | GitHub Copilot |
|
|
@@ -311,6 +336,7 @@ For in-scope hard reasoning (debugging, trade-offs within plan), agents invoke `
|
|
|
311
336
|
| `wp-ddev` | WP-CLI commands for DDEV WordPress environments |
|
|
312
337
|
| `wp-local` | WP-CLI commands for Flywheel Local WP |
|
|
313
338
|
| `jira-checkpoint` | Jira awareness checkpoints for team visibility |
|
|
339
|
+
| `ima-git` | IMA trunk-based git workflow (main/release/tag model, hotfix flow, deploy-gate push cadence, commit atomicity) |
|
|
314
340
|
| `phpunit-wp` | PHPUnit testing for WordPress plugins with FP principles |
|
|
315
341
|
| `rg` | Ripgrep usage patterns |
|
|
316
342
|
| `ima-forms-expert` | WordPress form components (IMA Forms) |
|
package/dist/cli.js
CHANGED
|
@@ -11,7 +11,7 @@ var HOOKS_DIR = join(CLAUDE_DIR, "hooks");
|
|
|
11
11
|
var COMMANDS_DIR = join(CLAUDE_DIR, "commands");
|
|
12
12
|
var RULES_DIR = join(CLAUDE_DIR, "rules");
|
|
13
13
|
var SETTINGS_FILE = join(CLAUDE_DIR, "settings.json");
|
|
14
|
-
var VERSION = "2.
|
|
14
|
+
var VERSION = "2.26.0";
|
|
15
15
|
var colors = {
|
|
16
16
|
reset: "\x1B[0m",
|
|
17
17
|
bright: "\x1B[1m",
|
|
@@ -111,6 +111,7 @@ var SKILLS_TO_INSTALL = [
|
|
|
111
111
|
"design-to-code",
|
|
112
112
|
"livecanvas",
|
|
113
113
|
"jira-checkpoint",
|
|
114
|
+
"ima-git",
|
|
114
115
|
// Testing skills
|
|
115
116
|
"unit-testing",
|
|
116
117
|
"phpunit-wp",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "ima-claude",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.26.0",
|
|
4
4
|
"description": "IMA's AI coding agent skills - FP patterns, architecture guidance, and team standards. Supports Claude Code, Junie CLI, Gemini CLI, and GitHub Copilot.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"scripts": {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "ima-claude",
|
|
3
|
-
"version": "2.
|
|
4
|
-
"description": "IMA's Claude Code skills for functional programming, architecture, and team standards.
|
|
3
|
+
"version": "2.26.0",
|
|
4
|
+
"description": "IMA's Claude Code skills for functional programming, architecture, and team standards. 63 skills, 24 hooks, default persona, 3-tier memory system.",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "IMA",
|
|
7
7
|
"url": "https://github.com/Soabirw/ima-claude"
|
|
@@ -23,6 +23,33 @@ Use Serena as FIRST approach for ALL code investigation. Saves 40-70% tokens vs
|
|
|
23
23
|
|
|
24
24
|
Use Read only for specific symbol bodies under review. Fall back to Read/Grep for non-code files.
|
|
25
25
|
|
|
26
|
+
## Configured validators (REQUIRED — run first)
|
|
27
|
+
|
|
28
|
+
A review is incomplete without running the project's configured gate. Validator output is primary evidence; code-reading is supplementary.
|
|
29
|
+
|
|
30
|
+
Discover validators in this order:
|
|
31
|
+
|
|
32
|
+
| Ecosystem | Where to look |
|
|
33
|
+
|---|---|
|
|
34
|
+
| PHP | `composer.json` scripts — `check`, `test`, `test:unit`, `phpcs`, `phpcs:report`, `lint` |
|
|
35
|
+
| JS/TS | `package.json` scripts — `test`, `lint`, `typecheck`, `check`, `ci` |
|
|
36
|
+
| Make-based | `Makefile` targets — `check`, `test`, `lint`, `ci` |
|
|
37
|
+
| Python | `pyproject.toml` / `tox.ini` / `noxfile.py` |
|
|
38
|
+
| Ruby | `Rakefile` — `ci`, `test`, `rubocop` |
|
|
39
|
+
|
|
40
|
+
Run the project's aggregated gate if one exists (`composer check`, `npm run check`, `make check`, `rake ci`, etc.). Otherwise run lint + tests separately. If the project has none, that's a finding — not a silent pass.
|
|
41
|
+
|
|
42
|
+
**Every review output MUST include a "Validators run" block:**
|
|
43
|
+
|
|
44
|
+
```
|
|
45
|
+
## Validators run
|
|
46
|
+
- composer test:unit → exit 0 (308 tests, 0 failures)
|
|
47
|
+
- composer phpcs:report → exit 1 (0 errors, 82 warnings)
|
|
48
|
+
- (no JS lint configured)
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
A review with zero validator invocations is structurally incomplete. If you couldn't run a discovered validator (missing deps, auth required, etc.), say so explicitly and flag as a blocker for the review.
|
|
52
|
+
|
|
26
53
|
## PR review mode
|
|
27
54
|
|
|
28
55
|
When given a Gitea/GitHub PR URL or diff:
|
|
@@ -39,7 +66,7 @@ Diff-only analysis is the failure mode. Always read surrounding context.
|
|
|
39
66
|
|
|
40
67
|
**FP** — unnecessary mutation, side effects mixed with business logic, missing composition, custom FP utilities over native patterns
|
|
41
68
|
|
|
42
|
-
**Security** — input validation at boundaries, SQL injection, XSS, exposed secrets, auth/authz
|
|
69
|
+
**Security** — start with security-sniff output (WPCS security, eslint-plugin-security, bandit, etc.) if available; then input validation at boundaries, SQL injection, XSS, exposed secrets, auth/authz
|
|
43
70
|
|
|
44
71
|
**Quality** — naming clarity, over-engineering, dead code, pattern consistency
|
|
45
72
|
|
|
@@ -73,3 +100,4 @@ Parent (Opus) decides whether to expand scope, re-dispatch a focused follow-up r
|
|
|
73
100
|
- Flag style preferences that don't affect correctness
|
|
74
101
|
- Suggest adding comments/docstrings/types to unchanged code
|
|
75
102
|
- Report more than 10 findings — prioritize ruthlessly
|
|
103
|
+
- Assert on code standards, security, or test coverage without having run the corresponding validator. "Looks clean" is not a finding; "phpcs reports 0 errors" is.
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: "ima-git"
|
|
3
|
+
description: "IMA git workflow. Trunk-based development with release branches: main = dev trunk, release/* = release candidate branches, v* tags = production releases. Covers branch promotion, hotfix flow, push cadence for deploy-gate verification, commit atomicity. Use when: creating branches, opening PRs, cutting releases or tags, writing hotfixes, or asked about git workflow, branching strategy, trunk-based development, release process, or when a deploy gate fails because commits weren't pushed."
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# IMA Git Workflow
|
|
7
|
+
|
|
8
|
+
**Strategy:** Trunk-based development with release branches.
|
|
9
|
+
|
|
10
|
+
## Branch model
|
|
11
|
+
|
|
12
|
+
| Branch / tag | Role | Source | Deploys to |
|
|
13
|
+
|---|---|---|---|
|
|
14
|
+
| `main` | Dev trunk — latest integrated work | All new work lands here first | Dev environment |
|
|
15
|
+
| `release/<name>` | Release candidate | Fast-forwarded from `main` when ready | Staging environment |
|
|
16
|
+
| `v<version>` (tags) | Production release | Tag cut from a release branch at promotion | Production environment |
|
|
17
|
+
| `hotfix/<name>` | Emergency production fix | Branched off the production tag | Merged back to `main` + new tag cut |
|
|
18
|
+
|
|
19
|
+
## Core rules
|
|
20
|
+
|
|
21
|
+
1. **Commits originate on `main`.** Not on release branches. Feature work, bug fixes, refactors — all start on the trunk.
|
|
22
|
+
2. **Release branches only fast-forward from `main`.** Never merge sideways; never commit directly to a release branch.
|
|
23
|
+
3. **Hotfixes branch off the production tag**, not main. After the fix lands, cut a new tag and merge the hotfix back into `main`.
|
|
24
|
+
4. **Tags are immutable.** Rolling back to a prior production state means deploying the prior tag — not force-pushing or retagging.
|
|
25
|
+
|
|
26
|
+
## Deploy-gate verification cadence
|
|
27
|
+
|
|
28
|
+
Deploy tools (e.g., `trn-deploy` at `/home/eric/IMA/dev/sites/trn/deploy/`) **clone fresh from the remote** — they do not read the local filesystem. Unpushed commits are invisible to the gate.
|
|
29
|
+
|
|
30
|
+
**To verify a change:** push to `main` first, then invoke the dry-run.
|
|
31
|
+
|
|
32
|
+
Between commits in a multi-commit sequence:
|
|
33
|
+
|
|
34
|
+
1. Commit locally
|
|
35
|
+
2. `git push origin main`
|
|
36
|
+
3. Run `./deploy dev --dry-run`
|
|
37
|
+
4. Confirm exit 0 in `log.jsonl` before the next commit
|
|
38
|
+
|
|
39
|
+
## Commit atomicity
|
|
40
|
+
|
|
41
|
+
- **Security fixes: separate commits** from test-only changes and mechanical sweeps. A security change should land in a reviewable, revertable commit of its own.
|
|
42
|
+
- One commit per logical change class. Don't batch "fix XSS + rename variable + reformat whitespace" into one diff.
|
|
43
|
+
- Pure tests-only changes never mix with production code changes in the same commit.
|
|
44
|
+
|
|
45
|
+
## Commit messages
|
|
46
|
+
|
|
47
|
+
- Use a HEREDOC to pass multi-line messages: `git commit -m "$(cat <<'EOF' ... EOF)"`.
|
|
48
|
+
- Single-quoted `EOF` marker (`<<'EOF'`) prevents shell expansion — required to keep `$_POST`, `$_GET`, `$variable` etc. unescaped.
|
|
49
|
+
- A message with literal `\$_POST` in the body is a shell-escape artifact — amend before pushing, or treat it as a signal the HEREDOC was wrong.
|
|
50
|
+
|
|
51
|
+
## Deploy tool exit codes
|
|
52
|
+
|
|
53
|
+
Shared convention across IMA deploy tools:
|
|
54
|
+
|
|
55
|
+
| Code | Meaning |
|
|
56
|
+
|---|---|
|
|
57
|
+
| 0 | Success |
|
|
58
|
+
| 1 | Generic failure |
|
|
59
|
+
| 2 | Validation / config error |
|
|
60
|
+
| 3 | Pre-flight failure (tests, lint, clean-state check) |
|
|
61
|
+
| 4 | Remote push failure (WPEngine or similar) |
|
|
62
|
+
|
|
63
|
+
The authoritative record is the tool's `log.jsonl`: `tail -1 log.jsonl` shows the last run's sha, exitCode, duration. The shell's `$?` may be masked by a pipe (`| tail`), so trust the log over stdout exit.
|
|
64
|
+
|
|
65
|
+
## Gitea / GitHub
|
|
66
|
+
|
|
67
|
+
- IMA internal repos live on Gitea: `ssh://git@gitea.theflccc.org:2222/IMA/<repo>.git`
|
|
68
|
+
- Some are mirrored to GitHub for FOSS / public presence.
|
|
69
|
+
- Use `mcp-gitea` for internal repo operations, `mcp-github` or `gh-cli` for public.
|
|
70
|
+
|
|
71
|
+
## When the deploy gate fails
|
|
72
|
+
|
|
73
|
+
1. Check `log.jsonl` for the exit code. Don't guess from terminal output.
|
|
74
|
+
2. Exit 3 = pre-flight. Look at the pipeline stage that failed — tests, lint, clean-state, composer check.
|
|
75
|
+
3. Reproduce locally with the project's configured validators (`composer check`, `npm run check`, `make check`, etc.) before touching code.
|
|
76
|
+
4. If a pre-flight failure is tests, invoke the source-quality triage pattern: categorize each failure as test rot, code bug, or design question **before** changing anything.
|
|
77
|
+
|
|
78
|
+
## Reference
|
|
79
|
+
|
|
80
|
+
- Qdrant `ima-knowledge` → article "IMA Git Workflow & Pre-flight Deploy Gate" for full detail on the gate architecture and the source-quality triage playbook.
|
|
81
|
+
- Project-specific deploy specifics live in the project's Serena memory (typically named `project-workflow` or similar).
|
|
@@ -26,9 +26,25 @@ Arguments are domain skills to evaluate against. If none provided, auto-detect f
|
|
|
26
26
|
3. Identify project's primary language(s) and framework(s)
|
|
27
27
|
4. Locate README (or note its absence)
|
|
28
28
|
|
|
29
|
-
### Step 2:
|
|
29
|
+
### Step 2: Run project validators (REQUIRED)
|
|
30
30
|
|
|
31
|
-
|
|
31
|
+
Before any grading, discover and run the project's configured gate. Same discovery order as the `reviewer` agent:
|
|
32
|
+
|
|
33
|
+
| Ecosystem | Where to look |
|
|
34
|
+
|---|---|
|
|
35
|
+
| PHP | `composer.json` scripts — `check`, `test`, `phpcs`, `phpcs:report` |
|
|
36
|
+
| JS/TS | `package.json` scripts — `test`, `lint`, `typecheck`, `check` |
|
|
37
|
+
| Make-based | `Makefile` targets — `check`, `test`, `lint`, `ci` |
|
|
38
|
+
| Python | `pyproject.toml` / `tox.ini` / `noxfile.py` |
|
|
39
|
+
| Ruby | `Rakefile` — `ci`, `test`, `rubocop` |
|
|
40
|
+
|
|
41
|
+
Capture exit codes, error/warning counts, and test coverage % (run the coverage variant — `composer test:coverage`, `npm test -- --coverage` — when available). These are primary evidence for Code Standards, Security, and Test Coverage grades.
|
|
42
|
+
|
|
43
|
+
Grades without validator backing are vibes grades. Don't ship them. No validators configured is itself a signal — floor Code Standards at C until they exist.
|
|
44
|
+
|
|
45
|
+
### Step 3: Parallel Review
|
|
46
|
+
|
|
47
|
+
Spawn parallel agents per category (`model: "sonnet"`). Each returns letter grade (A-F) + 2-3 justifying bullets rooted in validator output. Be honest — inflated scores help nobody.
|
|
32
48
|
|
|
33
49
|
| Category | What to Evaluate | Key Signals |
|
|
34
50
|
|----------|-----------------|-------------|
|
|
@@ -38,7 +54,7 @@ Spawn parallel agents per category (`model: "sonnet"`). Each returns letter grad
|
|
|
38
54
|
| **Documentation** | README quality, inline docs, API docs | Setup instructions, usage examples, architecture notes |
|
|
39
55
|
| **Maintainability** | Complexity, coupling, file organization | Small functions, clear boundaries, no circular deps |
|
|
40
56
|
|
|
41
|
-
### Step
|
|
57
|
+
### Step 4: Compile Scores
|
|
42
58
|
|
|
43
59
|
```markdown
|
|
44
60
|
## Scorecard
|
|
@@ -69,7 +85,7 @@ Spawn parallel agents per category (`model: "sonnet"`). Each returns letter grad
|
|
|
69
85
|
| D | 🔴 D | Poor — significant issues |
|
|
70
86
|
| F | 🔴 F | Failing — critical problems |
|
|
71
87
|
|
|
72
|
-
### Step
|
|
88
|
+
### Step 5: Insert into README
|
|
73
89
|
|
|
74
90
|
- Replace existing `## Scorecard` section, or insert after first heading if absent
|
|
75
91
|
- Present full scorecard to user before writing
|