@givolt/i3-composer-agent 1.0.1 → 2.1.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/.agents/plugins/marketplace.json +1 -1
- package/.claude/commands/{build.md → i3-build.md} +10 -10
- package/.claude/commands/{code-simplify.md → i3-code-simplify.md} +2 -2
- package/.claude/commands/{constraints.md → i3-constraints.md} +4 -4
- package/.claude/commands/{plan.md → i3-plan.md} +1 -1
- package/.claude/commands/{review.md → i3-review.md} +3 -3
- package/.claude/commands/{ship.md → i3-ship.md} +4 -4
- package/.claude/commands/{spec.md → i3-spec.md} +1 -1
- package/.claude/commands/{test.md → i3-test.md} +2 -2
- package/.claude/commands/{webperf.md → i3-webperf.md} +1 -1
- package/.claude-plugin/marketplace.json +1 -1
- package/.claude-plugin/plugin.json +1 -1
- package/.codex-plugin/plugin.json +1 -1
- package/.gemini/commands/{build.toml → i3-build.toml} +10 -10
- package/.gemini/commands/{code-simplify.toml → i3-code-simplify.toml} +2 -2
- package/.gemini/commands/{constraints.toml → i3-constraints.toml} +4 -4
- package/.gemini/commands/{planning.toml → i3-planning.toml} +1 -1
- package/{commands/review.toml → .gemini/commands/i3-review.toml} +3 -3
- package/.gemini/commands/{ship.toml → i3-ship.toml} +4 -4
- package/.gemini/commands/{spec.toml → i3-spec.toml} +1 -1
- package/{commands/test.toml → .gemini/commands/i3-test.toml} +2 -2
- package/.gemini/commands/{webperf.toml → i3-webperf.toml} +1 -1
- package/README.md +72 -69
- package/agents/code-reviewer.md +2 -2
- package/agents/security-auditor.md +1 -1
- package/agents/test-engineer.md +1 -1
- package/agents/web-performance-auditor.md +3 -3
- package/bin/agent-targets.json +11 -0
- package/bin/asset-fingerprint.cjs +38 -0
- package/bin/cleanup-backups.cjs +16 -0
- package/bin/i3-composer-agent.cjs +29 -14
- package/bin/install.cjs +81 -19
- package/bin/native-content.cjs +29 -0
- package/bin/wizard.cjs +2 -1
- package/commands/{build.toml → i3-build.toml} +10 -10
- package/commands/{code-simplify.toml → i3-code-simplify.toml} +2 -2
- package/commands/{constraints.toml → i3-constraints.toml} +4 -4
- package/commands/{planning.toml → i3-planning.toml} +1 -1
- package/{.gemini/commands/review.toml → commands/i3-review.toml} +3 -3
- package/commands/{ship.toml → i3-ship.toml} +4 -4
- package/commands/{spec.toml → i3-spec.toml} +1 -1
- package/{.gemini/commands/test.toml → commands/i3-test.toml} +2 -2
- package/commands/{webperf.toml → i3-webperf.toml} +1 -1
- package/docs/adoption-guide.md +35 -35
- package/docs/agents.md +12 -12
- package/docs/antigravity-setup.md +14 -14
- package/docs/codebuddy-setup.md +27 -18
- package/docs/codex-setup.md +6 -6
- package/docs/commandcode-setup.md +5 -5
- package/docs/copilot-cli-setup.md +5 -5
- package/docs/copilot-setup.md +22 -22
- package/docs/cursor-setup.md +22 -22
- package/docs/gemini-cli-setup.md +26 -26
- package/docs/getting-started.md +36 -38
- package/docs/opencode-setup.md +31 -31
- package/docs/windsurf-setup.md +7 -7
- package/docs/workbuddy-setup.md +92 -0
- package/hooks/SDD-CACHE.md +3 -3
- package/hooks/SIMPLIFY-IGNORE.md +2 -2
- package/hooks/session-start-test.sh +1 -1
- package/hooks/session-start.sh +3 -3
- package/package.json +36 -20
- package/plugin.json +1 -1
- package/references/accessibility-checklist.md +1 -1
- package/references/definition-of-done.md +7 -7
- package/references/observability-checklist.md +3 -3
- package/references/orchestration-patterns.md +17 -17
- package/references/performance-checklist.md +2 -2
- package/references/security-checklist.md +1 -1
- package/references/testing-patterns.md +1 -1
- package/skills/{api-and-interface-design → i3-api-and-interface-design}/SKILL.md +2 -2
- package/skills/{browser-testing-with-devtools → i3-browser-testing-with-devtools}/SKILL.md +1 -1
- package/skills/{ci-cd-and-automation → i3-ci-cd-and-automation}/SKILL.md +2 -2
- package/skills/{code-review-and-quality → i3-code-review-and-quality}/SKILL.md +5 -5
- package/skills/{code-simplification → i3-code-simplification}/SKILL.md +1 -1
- package/skills/{constraint-driven-development → i3-constraint-driven-development}/SKILL.md +15 -15
- package/skills/{context-engineering → i3-context-engineering}/SKILL.md +1 -1
- package/skills/{debugging-and-error-recovery → i3-debugging-and-error-recovery}/SKILL.md +2 -2
- package/skills/{deprecation-and-migration → i3-deprecation-and-migration}/SKILL.md +2 -2
- package/skills/{documentation-and-adrs → i3-documentation-and-adrs}/SKILL.md +1 -1
- package/skills/{doubt-driven-development → i3-doubt-driven-development}/SKILL.md +8 -8
- package/skills/{frontend-ui-engineering → i3-frontend-ui-engineering}/SKILL.md +1 -1
- package/skills/{git-workflow-and-versioning → i3-git-workflow-and-versioning}/SKILL.md +4 -4
- package/skills/{idea-refine → i3-idea-refine}/SKILL.md +2 -2
- package/skills/{idea-refine → i3-idea-refine}/scripts/idea-refine.sh +1 -1
- package/skills/{incremental-implementation → i3-incremental-implementation}/SKILL.md +3 -3
- package/skills/{interview-me → i3-interview-me}/SKILL.md +12 -12
- package/skills/{observability-and-instrumentation → i3-observability-and-instrumentation}/SKILL.md +5 -5
- package/skills/{performance-optimization → i3-performance-optimization}/SKILL.md +1 -1
- package/skills/{performance-optimization → i3-performance-optimization}/references/optimization-patterns.md +1 -1
- package/skills/{planning-and-task-breakdown → i3-planning-and-task-breakdown}/SKILL.md +2 -2
- package/skills/{security-and-hardening → i3-security-and-hardening}/SKILL.md +3 -3
- package/skills/{security-and-hardening → i3-security-and-hardening}/references/hardening-patterns.md +1 -1
- package/skills/{shipping-and-launch → i3-shipping-and-launch}/SKILL.md +2 -2
- package/skills/{source-driven-development → i3-source-driven-development}/SKILL.md +2 -2
- package/skills/{spec-driven-development → i3-spec-driven-development}/SKILL.md +7 -7
- package/skills/{test-driven-development → i3-test-driven-development}/SKILL.md +2 -2
- package/skills/{using-agent-skills → i3-using-agent-skills}/SKILL.md +67 -67
- package/CHANGELOG.md +0 -34
- package/NOTICE.md +0 -14
- package/docs/advanced-per-agent-configuration.md +0 -70
- package/docs/comparison.md +0 -131
- package/docs/developer-onboarding.md +0 -116
- package/docs/skill-anatomy.md +0 -203
- package/evals/README.md +0 -101
- package/evals/cases/api-and-interface-design.json +0 -45
- package/evals/cases/browser-testing-with-devtools.json +0 -44
- package/evals/cases/ci-cd-and-automation.json +0 -45
- package/evals/cases/code-review-and-quality.json +0 -49
- package/evals/cases/code-simplification.json +0 -45
- package/evals/cases/constraint-driven-development.json +0 -79
- package/evals/cases/context-engineering.json +0 -44
- package/evals/cases/debugging-and-error-recovery.json +0 -58
- package/evals/cases/deprecation-and-migration.json +0 -52
- package/evals/cases/documentation-and-adrs.json +0 -44
- package/evals/cases/doubt-driven-development.json +0 -43
- package/evals/cases/frontend-ui-engineering.json +0 -52
- package/evals/cases/git-workflow-and-versioning.json +0 -47
- package/evals/cases/idea-refine.json +0 -43
- package/evals/cases/incremental-implementation.json +0 -57
- package/evals/cases/interview-me.json +0 -42
- package/evals/cases/observability-and-instrumentation.json +0 -44
- package/evals/cases/performance-optimization.json +0 -53
- package/evals/cases/planning-and-task-breakdown.json +0 -45
- package/evals/cases/security-and-hardening.json +0 -53
- package/evals/cases/shipping-and-launch.json +0 -56
- package/evals/cases/source-driven-development.json +0 -44
- package/evals/cases/spec-driven-development.json +0 -72
- package/evals/cases/test-driven-development.json +0 -73
- package/evals/cases/using-agent-skills.json +0 -44
- package/evals/fixtures/api-and-interface-design/service-brief.md +0 -19
- package/evals/fixtures/browser-testing-with-devtools/README.md +0 -5
- package/evals/fixtures/browser-testing-with-devtools/index.html +0 -24
- package/evals/fixtures/browser-testing-with-devtools/server.js +0 -15
- package/evals/fixtures/ci-cd-and-automation/package.json +0 -8
- package/evals/fixtures/ci-cd-and-automation/src/slug.js +0 -3
- package/evals/fixtures/ci-cd-and-automation/test/slug.test.js +0 -9
- package/evals/fixtures/code-review-and-quality/user-search.diff +0 -16
- package/evals/fixtures/code-simplification/config-parser.js +0 -46
- package/evals/fixtures/code-simplification/config-parser.test.js +0 -15
- package/evals/fixtures/context-engineering/context-audit.md +0 -15
- package/evals/fixtures/debugging-and-error-recovery/pagination.js +0 -8
- package/evals/fixtures/debugging-and-error-recovery/pagination.test.js +0 -9
- package/evals/fixtures/debugging-and-error-recovery/time-pressure.md +0 -6
- package/evals/fixtures/deprecation-and-migration/api-inventory.md +0 -9
- package/evals/fixtures/documentation-and-adrs/decision-context.md +0 -16
- package/evals/fixtures/doubt-driven-development/migration-plan.md +0 -19
- package/evals/fixtures/frontend-ui-engineering/Button.tsx +0 -7
- package/evals/fixtures/frontend-ui-engineering/design-system.md +0 -11
- package/evals/fixtures/git-workflow-and-versioning/.eval/working-tree.patch +0 -21
- package/evals/fixtures/git-workflow-and-versioning/app.js +0 -7
- package/evals/fixtures/git-workflow-and-versioning/app.test.js +0 -9
- package/evals/fixtures/incremental-implementation/reports.js +0 -7
- package/evals/fixtures/incremental-implementation/reports.test.js +0 -12
- package/evals/fixtures/incremental-implementation/tasks/plan.md +0 -8
- package/evals/fixtures/incremental-implementation-pressure/draft-export.js +0 -17
- package/evals/fixtures/incremental-implementation-pressure/scenario.md +0 -9
- package/evals/fixtures/observability-and-instrumentation/operations.md +0 -11
- package/evals/fixtures/observability-and-instrumentation/payment-retry.js +0 -14
- package/evals/fixtures/performance-optimization/benchmark.js +0 -15
- package/evals/fixtures/performance-optimization/products.js +0 -14
- package/evals/fixtures/planning-and-task-breakdown/notifications-spec.md +0 -18
- package/evals/fixtures/security-and-hardening/webhook.js +0 -11
- package/evals/fixtures/security-and-hardening/webhook.test.js +0 -13
- package/evals/fixtures/shipping-and-launch/authority-pressure.md +0 -6
- package/evals/fixtures/shipping-and-launch/launch-status.md +0 -11
- package/evals/fixtures/source-driven-development/framework-task.md +0 -10
- package/evals/fixtures/spec-driven-development/billing-brief.md +0 -16
- package/evals/fixtures/spec-driven-development-decomposition/portal-brief.md +0 -22
- package/evals/fixtures/test-driven-development/BUG.md +0 -10
- package/evals/fixtures/test-driven-development/README.md +0 -28
- package/evals/fixtures/test-driven-development/package.json +0 -9
- package/evals/fixtures/test-driven-development/src/split.js +0 -8
- package/evals/fixtures/test-driven-development/test/split.test.js +0 -13
- package/evals/fixtures/test-driven-development-ecosystem/README.md +0 -9
- package/evals/fixtures/test-driven-development-ecosystem/ledger.py +0 -15
- package/evals/fixtures/test-driven-development-ecosystem/test_ledger.py +0 -19
- package/evals/fixtures/using-agent-skills/incident.md +0 -6
- package/evals/plugin/code-review-fires/graders/off-by-one.md +0 -7
- package/evals/plugin/code-review-fires/graders/severity-labels.md +0 -4
- package/evals/plugin/code-review-fires/graders/skill-fired.md +0 -5
- package/evals/plugin/code-review-fires/prompt.md +0 -31
- package/evals/plugin/code-review-stays-quiet/graders/not-fired.md +0 -8
- package/evals/plugin/code-review-stays-quiet/graders/tdd-fired.md +0 -6
- package/evals/plugin/code-review-stays-quiet/prompt.md +0 -8
- package/evals/plugin/code-review-stays-quiet-on-commit-message/graders/not-fired.md +0 -8
- package/evals/plugin/code-review-stays-quiet-on-commit-message/prompt.md +0 -25
- package/evals/skill-impact.md +0 -6
- package/rebrand/INSTALLATION-SPEC.md +0 -46
- package/rebrand/MAINTENANCE.md +0 -113
- package/rebrand/NOTICE.md +0 -14
- package/rebrand/PR-WORKFLOW.md +0 -34
- package/rebrand/UNIFICATION-SPEC.md +0 -33
- package/rebrand/VALIDATION.md +0 -32
- package/rebrand/VERSIONING.md +0 -33
- package/rebrand/apply.cjs +0 -194
- package/rebrand/brand.json +0 -13
- package/rebrand/catalog.cjs +0 -56
- package/rebrand/fork-patches.json +0 -12
- package/rebrand/overlay/.github/workflows/test-plugin-install.yml +0 -177
- package/rebrand/overlay/CHANGELOG.md +0 -34
- package/rebrand/overlay/bin/agent-targets.json +0 -726
- package/rebrand/overlay/bin/i3-composer-agent.cjs +0 -190
- package/rebrand/overlay/bin/install.cjs +0 -164
- package/rebrand/overlay/bin/skills-registry.LICENSE +0 -21
- package/rebrand/overlay/bin/wizard.cjs +0 -66
- package/rebrand/overlay/scripts/validate-brand.cjs +0 -44
- package/rebrand/overlay/tests/bundle.test.cjs +0 -85
- package/rebrand/overlay/tests/installer.test.cjs +0 -193
- package/rebrand/package.template.json +0 -82
- package/rebrand/rebrand.sh +0 -4
- package/rebrand/record-upstream.cjs +0 -37
- package/rebrand/templates/README.md +0 -124
- package/rebrand/templates/codebuddy-setup.md +0 -88
- package/rebrand/templates/codex-setup.md +0 -45
- package/rebrand/tests/pipeline.test.cjs +0 -185
- package/rebrand/upstream.json +0 -171
- package/scripts/floor-guard-reference-test.js +0 -291
- package/scripts/lib/skill-lint-test.js +0 -650
- package/scripts/lib/skill-lint.js +0 -584
- package/scripts/run-evals-test.js +0 -623
- package/scripts/run-evals.js +0 -638
- package/scripts/validate-artifact-paths-test.js +0 -179
- package/scripts/validate-artifact-paths.js +0 -128
- package/scripts/validate-brand.cjs +0 -44
- package/scripts/validate-commands-test.js +0 -216
- package/scripts/validate-commands.js +0 -222
- package/scripts/validate-reference-links-test.js +0 -495
- package/scripts/validate-reference-links.js +0 -187
- package/scripts/validate-skills.js +0 -69
- package/scripts/validate-versions-test.js +0 -32
- package/scripts/validate-versions.js +0 -35
- package/tests/bundle.test.cjs +0 -85
- package/tests/installer.test.cjs +0 -193
- /package/skills/{constraint-driven-development → i3-constraint-driven-development}/references/floor-guard.md +0 -0
- /package/skills/{idea-refine → i3-idea-refine}/examples.md +0 -0
- /package/skills/{idea-refine → i3-idea-refine}/frameworks.md +0 -0
- /package/skills/{idea-refine → i3-idea-refine}/refinement-criteria.md +0 -0
package/README.md
CHANGED
|
@@ -1,15 +1,9 @@
|
|
|
1
|
-
# i3 Composer Agent
|
|
2
|
-
|
|
3
|
-
**Based on agent-skills v0.6.12**
|
|
1
|
+
# i3 Composer Agent v2.1.0
|
|
4
2
|
|
|
5
3
|
**Intelligence. Integration. Innovation.**
|
|
6
4
|
|
|
7
|
-
Engineering skills, lifecycle commands, and specialist personas for AI coding agents.
|
|
8
|
-
Based on [Agent Skills](https://github.com/addyosmani/agent-skills) by Addy Osmani
|
|
9
|
-
(MIT). See [NOTICE.md](NOTICE.md) for attribution.
|
|
10
|
-
|
|
11
5
|
The npm package is `@givolt/i3-composer-agent`; the plugin and marketplace ID is
|
|
12
|
-
`i3-composer-agent`. Skill IDs
|
|
6
|
+
`i3-composer-agent`. Commands and Skill IDs use the `i3-` prefix.
|
|
13
7
|
|
|
14
8
|
## Install with the wizard
|
|
15
9
|
|
|
@@ -19,36 +13,55 @@ Run in the project where you want to use the skills:
|
|
|
19
13
|
npx @givolt/i3-composer-agent
|
|
20
14
|
# Preselect a tool; the wizard still allows multiple selections:
|
|
21
15
|
npx @givolt/i3-composer-agent --codebuddy
|
|
16
|
+
npx @givolt/i3-composer-agent --workbuddy
|
|
22
17
|
```
|
|
23
18
|
|
|
24
19
|
The interactive terminal wizard offers multiple tools, project or global scope,
|
|
25
|
-
an installation summary, and confirmation.
|
|
26
|
-
|
|
20
|
+
an installation summary, and confirmation. It offers 80 directory
|
|
21
|
+
presets: the pinned [Vercel Skills CLI registry](https://github.com/vercel-labs/skills/blob/48dc9e8eb8aa19040e91cb90ba0b642c9cbad57e/src/agents.ts)
|
|
22
|
+
plus a native WorkBuddy preset.
|
|
27
23
|
Choose by tool ID or comma-separated menu numbers. Use `--list-agents` to list
|
|
28
24
|
the choices. Directory presets are not an execution test of every host.
|
|
29
25
|
|
|
30
26
|
Every selected tool receives all 25 skills and shared references.
|
|
31
|
-
CodeBuddy and Claude Code also receive 9 short command workflows
|
|
27
|
+
CodeBuddy, WorkBuddy and Claude Code also receive 9 short command workflows
|
|
32
28
|
and 4 persona files. Other tools use their native skill support;
|
|
33
29
|
short lifecycle commands depend on the host. Shared destinations are installed
|
|
34
|
-
once.
|
|
30
|
+
once. A standard MIT license accompanies the shared references.
|
|
35
31
|
Reload the IDE window or start a new session after installation. See
|
|
36
|
-
[CodeBuddy setup](docs/codebuddy-setup.md)
|
|
32
|
+
[CodeBuddy setup](docs/codebuddy-setup.md), [WorkBuddy setup](docs/workbuddy-setup.md)
|
|
33
|
+
and [Codex setup](docs/codex-setup.md).
|
|
37
34
|
|
|
38
35
|
For an explicit installation without prompts:
|
|
39
36
|
|
|
40
37
|
```bash
|
|
41
38
|
npx @givolt/i3-composer-agent --agents codebuddy,codex --scope project --yes
|
|
39
|
+
npx @givolt/i3-composer-agent --workbuddy --scope project --yes
|
|
40
|
+
npx @givolt/i3-composer-agent --agents codebuddy,workbuddy --scope project --yes
|
|
41
|
+
npx @givolt/i3-composer-agent --workbuddy --scope global --yes
|
|
42
42
|
npx @givolt/i3-composer-agent --claude --scope global --yes
|
|
43
43
|
npx @givolt/i3-composer-agent --codebuddy --scope project --dry-run
|
|
44
44
|
```
|
|
45
45
|
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
46
|
+
CodeBuddy and WorkBuddy share one project installation under `.codebuddy/`.
|
|
47
|
+
Existing `.workbuddy/` project settings are preserved. Global installations use
|
|
48
|
+
separate `~/.codebuddy/` and `~/.workbuddy/` directories.
|
|
49
|
+
|
|
50
|
+
Unchanged manifest-owned assets from the same version and scope are reused;
|
|
51
|
+
adding a client merges its ID into the shared installation manifest. Modified
|
|
52
|
+
files, unowned collisions and version upgrades require confirmation; use
|
|
53
|
+
`--force` with noninteractive installs after reviewing the dry run.
|
|
54
|
+
After successful installation, replaced files and installer-owned historical
|
|
55
|
+
backups are removed. A failed installation restores the previous files.
|
|
49
56
|
`npx -y` accepts npm's package download prompt; the package's own `--yes` flag
|
|
50
57
|
accepts the explicit installation plan.
|
|
51
58
|
|
|
59
|
+
Earlier native installations migrate their unprefixed Skill and command paths
|
|
60
|
+
when those paths belong to this package's previous installation manifest.
|
|
61
|
+
The migration removes owned legacy paths after successful installation. Use
|
|
62
|
+
`/i3-spec` in CodeBuddy or WorkBuddy, or `$i3-spec-driven-development`
|
|
63
|
+
in Codex after upgrading.
|
|
64
|
+
|
|
52
65
|
## Prepare the complete plugin
|
|
53
66
|
|
|
54
67
|
For native plugin registration, including plugin hooks, explicitly prepare a
|
|
@@ -78,59 +91,60 @@ codex plugin marketplace add ./i3-composer-agent
|
|
|
78
91
|
codex plugin add i3-composer-agent@i3-composer-agent
|
|
79
92
|
```
|
|
80
93
|
|
|
81
|
-
Start a new session after enabling the plugin. Codex uses the
|
|
82
|
-
names, such as `$spec-driven-development`; lifecycle slash-command adaptation
|
|
94
|
+
Start a new session after enabling the plugin. Codex uses the branded Skill
|
|
95
|
+
names, such as `$i3-spec-driven-development`; lifecycle slash-command adaptation
|
|
83
96
|
is maintained separately.
|
|
84
97
|
|
|
85
98
|
## Commands
|
|
86
99
|
|
|
87
|
-
Native CodeBuddy and Claude Code installations use short filenames such as
|
|
88
|
-
`/spec`, `/plan`, `/build` and `/ship`. Hosts supporting Claude-compatible plugin
|
|
100
|
+
Native CodeBuddy, WorkBuddy and Claude Code installations use short filenames such as
|
|
101
|
+
`/i3-spec`, `/i3-plan`, `/i3-build` and `/i3-ship`. Hosts supporting Claude-compatible plugin
|
|
89
102
|
commands load the same workflows under the plugin namespace:
|
|
90
103
|
|
|
91
104
|
| Command | Description |
|
|
92
105
|
| --- | --- |
|
|
93
|
-
| /i3-composer-agent:build | Implement tasks incrementally — build, test, verify, commit. Add "auto" to run the whole plan in one approved pass. |
|
|
94
|
-
| /i3-composer-agent:code-simplify | Simplify code for clarity and maintainability — reduce complexity without changing behavior |
|
|
95
|
-
| /i3-composer-agent:constraints | Define and enforce this project's quality bar — interview, sane defaults, CONSTRAINTS.md |
|
|
96
|
-
| /i3-composer-agent:plan | Break work into small verifiable tasks with acceptance criteria and dependency ordering |
|
|
97
|
-
| /i3-composer-agent:review | Conduct a five-axis code review — correctness, readability, architecture, security, performance |
|
|
98
|
-
| /i3-composer-agent:ship | Run the pre-launch checklist via parallel fan-out to specialist personas, then synthesize a go/no-go decision |
|
|
99
|
-
| /i3-composer-agent:spec | Start spec-driven development — write a structured specification before writing code |
|
|
100
|
-
| /i3-composer-agent:test | Run TDD workflow — write failing tests, implement, verify. For bugs, use the Prove-It pattern. |
|
|
101
|
-
| /i3-composer-agent:webperf | Run a web performance audit via the web-performance-auditor persona |
|
|
102
|
-
|
|
103
|
-
`/i3-
|
|
106
|
+
| /i3-composer-agent:i3-build | Implement tasks incrementally — build, test, verify, commit. Add "auto" to run the whole plan in one approved pass. |
|
|
107
|
+
| /i3-composer-agent:i3-code-simplify | Simplify code for clarity and maintainability — reduce complexity without changing behavior |
|
|
108
|
+
| /i3-composer-agent:i3-constraints | Define and enforce this project's quality bar — interview, sane defaults, CONSTRAINTS.md |
|
|
109
|
+
| /i3-composer-agent:i3-plan | Break work into small verifiable tasks with acceptance criteria and dependency ordering |
|
|
110
|
+
| /i3-composer-agent:i3-review | Conduct a five-axis code review — correctness, readability, architecture, security, performance |
|
|
111
|
+
| /i3-composer-agent:i3-ship | Run the pre-launch checklist via parallel fan-out to specialist personas, then synthesize a go/no-go decision |
|
|
112
|
+
| /i3-composer-agent:i3-spec | Start spec-driven development — write a structured specification before writing code |
|
|
113
|
+
| /i3-composer-agent:i3-test | Run TDD workflow — write failing tests, implement, verify. For bugs, use the Prove-It pattern. |
|
|
114
|
+
| /i3-composer-agent:i3-webperf | Run a web performance audit via the web-performance-auditor persona |
|
|
115
|
+
|
|
116
|
+
`/i3-build auto` runs the existing approved-plan workflow in native installations;
|
|
117
|
+
plugin installations use `/i3-composer-agent:i3-build auto`.
|
|
104
118
|
|
|
105
119
|
## Skills
|
|
106
120
|
|
|
107
121
|
| Skill | Description |
|
|
108
122
|
| --- | --- |
|
|
109
|
-
| [api-and-interface-design](skills/api-and-interface-design/SKILL.md) | Guides stable API and interface design. Use when designing APIs, module boundaries, or any public interface. Use when creating REST or GraphQL endpoints, defining type contracts between modules, or establishing boundaries between frontend and backend. |
|
|
110
|
-
| [browser-testing-with-devtools](skills/browser-testing-with-devtools/SKILL.md) | Tests in real browsers via Chrome DevTools MCP. Use when building or debugging anything that runs in a browser. Use when you need to inspect the DOM, capture console errors, analyze network requests, profile performance, or verify visual output with real runtime data. Requires the chrome-devtools MCP server to be configured. |
|
|
111
|
-
| [ci-cd-and-automation](skills/ci-cd-and-automation/SKILL.md) | Automates CI/CD pipeline setup. Use when setting up or modifying build and deployment pipelines. Use when you need to automate quality gates, configure test runners in CI, or establish deployment strategies. |
|
|
112
|
-
| [code-review-and-quality](skills/code-review-and-quality/SKILL.md) | Conducts multi-axis code review. Use before merging any change. Use when reviewing code written by yourself, another agent, or a human. Use when you need to assess code quality across multiple dimensions before it enters the main branch. Use when asked to review a diff or a pull request, even when the diff is pasted inline. |
|
|
113
|
-
| [code-simplification](skills/code-simplification/SKILL.md) | Simplifies code for clarity. Use when refactoring code for clarity without changing behavior. Use when code works but is harder to read, maintain, or extend than it should be. Use when reviewing code that has accumulated unnecessary complexity. |
|
|
114
|
-
| [constraint-driven-development](skills/constraint-driven-development/SKILL.md) | Establishes a project's quality bar as a written contract and stops agents quietly lowering it. Interviews the user on which dimensions matter, supplies sane default thresholds when they have no number in mind, records everything in CONSTRAINTS.md, and watches the diff for a weakened bar — new @ts-ignore or eslint-disable suppressions, skipped or deleted tests, assertions stripped out, unimplemented stubs, thresholds edited down. Use when no quality bar is written down, when the user says "set up constraints" or "define our standards", when the user wants dimensions they care about — accessibility, web performance, coverage — set up as enforced constraints, when an agent keeps silencing checks or skipping tests to get to green, when you need a coverage or performance threshold and don't know what number to pick, or when an agent writes more code than anyone will read. |
|
|
115
|
-
| [context-engineering](skills/context-engineering/SKILL.md) | Optimizes agent context setup. Use when starting a new session, when agent output quality degrades, when switching between tasks, or when you need to configure rules files and context for a project. |
|
|
116
|
-
| [debugging-and-error-recovery](skills/debugging-and-error-recovery/SKILL.md) | Guides systematic root-cause debugging. Use when tests fail, builds break, something that worked yesterday broke, behavior doesn't match expectations, or you encounter any unexpected error. Use when you need to figure out what broke and why — a systematic approach to finding and fixing the root cause rather than guessing. |
|
|
117
|
-
| [deprecation-and-migration](skills/deprecation-and-migration/SKILL.md) | Manages deprecation and migration. Use when removing old systems, APIs, or features. Use when migrating users from one implementation to another. Use when migrating a database schema in production, such as renaming or dropping a column without downtime (expand/contract). Use when deciding whether to maintain or sunset existing code. |
|
|
118
|
-
| [documentation-and-adrs](skills/documentation-and-adrs/SKILL.md) | Records decisions and documentation. Use when you need to document an architecture decision (ADR) or the reasoning behind a design choice, when changing public APIs, shipping features, or when you need to record context that future engineers and agents will need to understand the codebase. |
|
|
119
|
-
| [doubt-driven-development](skills/doubt-driven-development/SKILL.md) | Subjects every non-trivial decision to a fresh-context adversarial review before it stands. Use when you want every assumption cross-examined before proceeding, when stress-testing a plan for hidden failure modes, when correctness matters more than speed, when working in unfamiliar code, when stakes are high (production auth, security-sensitive logic, a high-stakes migration, irreversible operations), or any time a confident output would be cheaper to verify now than to debug later. |
|
|
120
|
-
| [frontend-ui-engineering](skills/frontend-ui-engineering/SKILL.md) | Builds production-quality, accessible, responsive user-facing UIs. Use when building or modifying interfaces and pages, creating components, implementing layouts, meeting WCAG accessibility requirements, managing state, or when the output needs to look and feel production-quality rather than AI-generated. |
|
|
121
|
-
| [git-workflow-and-versioning](skills/git-workflow-and-versioning/SKILL.md) | Structures git workflow practices. Use when making any code change. Use when committing, branching, resolving conflicts, splitting uncommitted work in a messy working tree into clean atomic commits, opening or reviewing a pull request (PR), pushing to a remote, or when you need to organize work across multiple parallel streams. Use when cutting a release, choosing a semantic version bump, tagging, or writing a changelog. |
|
|
122
|
-
| [idea-refine](skills/idea-refine/SKILL.md) | Refines raw ideas into sharp, actionable concepts through structured divergent and convergent thinking. Use when an idea is still vague, when you need to stress-test assumptions before committing to a plan, or when you want to expand options before converging on one. Triggers on "ideate", "refine this idea", or "stress-test my plan". |
|
|
123
|
-
| [incremental-implementation](skills/incremental-implementation/SKILL.md) | Delivers changes incrementally in thin, verifiable slices. Use when implementing any feature or change that touches more than one file, or when picking up the next task from a plan. Use when rolling a change out behind a feature flag, when you're about to write a large amount of code at once, or when a task feels too big to land in one step. |
|
|
124
|
-
| [interview-me](skills/interview-me/SKILL.md) | Extracts what the user actually wants instead of what they think they should want. Achieves this through one-question-at-a-time interview until ~95% confidence about the underlying intent. Use when an ask is underspecified ("build me X" without "for whom" or "why now"), when the user explicitly invokes ("interview me", "grill me", "are we sure?", "stress-test my thinking"), or when you catch yourself silently filling in ambiguous requirements before any plan, spec, or code exists. |
|
|
125
|
-
| [observability-and-instrumentation](skills/observability-and-instrumentation/SKILL.md) | Instruments code so production behavior is visible and diagnosable. Use when adding logging, metrics, tracing, or alerting. Use when shipping any feature that runs in production and you need evidence it works. Use when production issues are reported but you can't tell what happened from the available data. |
|
|
126
|
-
| [performance-optimization](skills/performance-optimization/SKILL.md) | Optimizes application performance across frontend, backend, queries, and databases. Use when performance requirements exist, when you suspect performance regressions, when Core Web Vitals or load times need improvement, when N+1 query patterns need fixing, or when profiling reveals bottlenecks. |
|
|
127
|
-
| [planning-and-task-breakdown](skills/planning-and-task-breakdown/SKILL.md) | Breaks work into ordered tasks. Use when you have a spec or clear requirements and need to break work into implementable tasks. Use when a task feels too large to start, when you need to estimate scope, or when parallel work is possible. |
|
|
128
|
-
| [security-and-hardening](skills/security-and-hardening/SKILL.md) | Hardens code against vulnerabilities. Use when auditing an input handler for vulnerabilities, when handling user input, authentication, data storage, or external integrations, or when checking a login flow is safe against the OWASP Top Ten. Use when building any feature that accepts untrusted data, manages user sessions, or interacts with third-party services. Use when auditing dependencies for known vulnerabilities, triaging package-manager audit findings, or assessing supply-chain risk in a new package. Use when personal data or privacy compliance (GDPR, CCPA) is involved. |
|
|
129
|
-
| [shipping-and-launch](skills/shipping-and-launch/SKILL.md) | Prepares production launches. Use when preparing to deploy to production, or when asking what needs to be in place before shipping. Use when you need a pre-launch checklist, when setting up monitoring, when planning a staged rollout, or when you need a rollback strategy. |
|
|
130
|
-
| [source-driven-development](skills/source-driven-development/SKILL.md) | Grounds every implementation decision in official documentation. Use when you want to verify an approach against the official docs before implementing it, or when you want authoritative, source-cited code free from outdated patterns. Use when building with any framework or library where correctness matters. |
|
|
131
|
-
| [spec-driven-development](skills/spec-driven-development/SKILL.md) | Creates specs before coding. Use when starting a new project, feature, or significant change and no specification exists yet. Use when drafting a PRD or requirements document with objectives and scope, or when requirements are unclear, ambiguous, or only exist as a vague idea. Use when a single requirement spans several independently testable capabilities and needs decomposing into a capability map of modules before specifying. |
|
|
132
|
-
| [test-driven-development](skills/test-driven-development/SKILL.md) | Drives development with tests using the red-green-refactor loop. Use when implementing any logic, fixing any bug, or changing any behavior. Use when you need to prove that code works, when a bug report arrives, or when you're about to modify existing functionality. |
|
|
133
|
-
| [using-agent-skills](skills/using-agent-skills/SKILL.md) | Discovers and invokes agent skills. Use when starting a session, or when you need to decide which skill or workflow applies to the piece of work at hand. This is the meta-skill that governs how all other skills are discovered and invoked. |
|
|
123
|
+
| [i3-api-and-interface-design](skills/i3-api-and-interface-design/SKILL.md) | Guides stable API and interface design. Use when designing APIs, module boundaries, or any public interface. Use when creating REST or GraphQL endpoints, defining type contracts between modules, or establishing boundaries between frontend and backend. |
|
|
124
|
+
| [i3-browser-testing-with-devtools](skills/i3-browser-testing-with-devtools/SKILL.md) | Tests in real browsers via Chrome DevTools MCP. Use when building or debugging anything that runs in a browser. Use when you need to inspect the DOM, capture console errors, analyze network requests, profile performance, or verify visual output with real runtime data. Requires the chrome-devtools MCP server to be configured. |
|
|
125
|
+
| [i3-ci-cd-and-automation](skills/i3-ci-cd-and-automation/SKILL.md) | Automates CI/CD pipeline setup. Use when setting up or modifying build and deployment pipelines. Use when you need to automate quality gates, configure test runners in CI, or establish deployment strategies. |
|
|
126
|
+
| [i3-code-review-and-quality](skills/i3-code-review-and-quality/SKILL.md) | Conducts multi-axis code review. Use before merging any change. Use when reviewing code written by yourself, another agent, or a human. Use when you need to assess code quality across multiple dimensions before it enters the main branch. Use when asked to review a diff or a pull request, even when the diff is pasted inline. |
|
|
127
|
+
| [i3-code-simplification](skills/i3-code-simplification/SKILL.md) | Simplifies code for clarity. Use when refactoring code for clarity without changing behavior. Use when code works but is harder to read, maintain, or extend than it should be. Use when reviewing code that has accumulated unnecessary complexity. |
|
|
128
|
+
| [i3-constraint-driven-development](skills/i3-constraint-driven-development/SKILL.md) | Establishes a project's quality bar as a written contract and stops agents quietly lowering it. Interviews the user on which dimensions matter, supplies sane default thresholds when they have no number in mind, records everything in CONSTRAINTS.md, and watches the diff for a weakened bar — new @ts-ignore or eslint-disable suppressions, skipped or deleted tests, assertions stripped out, unimplemented stubs, thresholds edited down. Use when no quality bar is written down, when the user says "set up constraints" or "define our standards", when the user wants dimensions they care about — accessibility, web performance, coverage — set up as enforced constraints, when an agent keeps silencing checks or skipping tests to get to green, when you need a coverage or performance threshold and don't know what number to pick, or when an agent writes more code than anyone will read. |
|
|
129
|
+
| [i3-context-engineering](skills/i3-context-engineering/SKILL.md) | Optimizes agent context setup. Use when starting a new session, when agent output quality degrades, when switching between tasks, or when you need to configure rules files and context for a project. |
|
|
130
|
+
| [i3-debugging-and-error-recovery](skills/i3-debugging-and-error-recovery/SKILL.md) | Guides systematic root-cause debugging. Use when tests fail, builds break, something that worked yesterday broke, behavior doesn't match expectations, or you encounter any unexpected error. Use when you need to figure out what broke and why — a systematic approach to finding and fixing the root cause rather than guessing. |
|
|
131
|
+
| [i3-deprecation-and-migration](skills/i3-deprecation-and-migration/SKILL.md) | Manages deprecation and migration. Use when removing old systems, APIs, or features. Use when migrating users from one implementation to another. Use when migrating a database schema in production, such as renaming or dropping a column without downtime (expand/contract). Use when deciding whether to maintain or sunset existing code. |
|
|
132
|
+
| [i3-documentation-and-adrs](skills/i3-documentation-and-adrs/SKILL.md) | Records decisions and documentation. Use when you need to document an architecture decision (ADR) or the reasoning behind a design choice, when changing public APIs, shipping features, or when you need to record context that future engineers and agents will need to understand the codebase. |
|
|
133
|
+
| [i3-doubt-driven-development](skills/i3-doubt-driven-development/SKILL.md) | Subjects every non-trivial decision to a fresh-context adversarial review before it stands. Use when you want every assumption cross-examined before proceeding, when stress-testing a plan for hidden failure modes, when correctness matters more than speed, when working in unfamiliar code, when stakes are high (production auth, security-sensitive logic, a high-stakes migration, irreversible operations), or any time a confident output would be cheaper to verify now than to debug later. |
|
|
134
|
+
| [i3-frontend-ui-engineering](skills/i3-frontend-ui-engineering/SKILL.md) | Builds production-quality, accessible, responsive user-facing UIs. Use when building or modifying interfaces and pages, creating components, implementing layouts, meeting WCAG accessibility requirements, managing state, or when the output needs to look and feel production-quality rather than AI-generated. |
|
|
135
|
+
| [i3-git-workflow-and-versioning](skills/i3-git-workflow-and-versioning/SKILL.md) | Structures git workflow practices. Use when making any code change. Use when committing, branching, resolving conflicts, splitting uncommitted work in a messy working tree into clean atomic commits, opening or reviewing a pull request (PR), pushing to a remote, or when you need to organize work across multiple parallel streams. Use when cutting a release, choosing a semantic version bump, tagging, or writing a changelog. |
|
|
136
|
+
| [i3-idea-refine](skills/i3-idea-refine/SKILL.md) | Refines raw ideas into sharp, actionable concepts through structured divergent and convergent thinking. Use when an idea is still vague, when you need to stress-test assumptions before committing to a plan, or when you want to expand options before converging on one. Triggers on "ideate", "refine this idea", or "stress-test my plan". |
|
|
137
|
+
| [i3-incremental-implementation](skills/i3-incremental-implementation/SKILL.md) | Delivers changes incrementally in thin, verifiable slices. Use when implementing any feature or change that touches more than one file, or when picking up the next task from a plan. Use when rolling a change out behind a feature flag, when you're about to write a large amount of code at once, or when a task feels too big to land in one step. |
|
|
138
|
+
| [i3-interview-me](skills/i3-interview-me/SKILL.md) | Extracts what the user actually wants instead of what they think they should want. Achieves this through one-question-at-a-time interview until ~95% confidence about the underlying intent. Use when an ask is underspecified ("build me X" without "for whom" or "why now"), when the user explicitly invokes ("interview me", "grill me", "are we sure?", "stress-test my thinking"), or when you catch yourself silently filling in ambiguous requirements before any plan, spec, or code exists. |
|
|
139
|
+
| [i3-observability-and-instrumentation](skills/i3-observability-and-instrumentation/SKILL.md) | Instruments code so production behavior is visible and diagnosable. Use when adding logging, metrics, tracing, or alerting. Use when shipping any feature that runs in production and you need evidence it works. Use when production issues are reported but you can't tell what happened from the available data. |
|
|
140
|
+
| [i3-performance-optimization](skills/i3-performance-optimization/SKILL.md) | Optimizes application performance across frontend, backend, queries, and databases. Use when performance requirements exist, when you suspect performance regressions, when Core Web Vitals or load times need improvement, when N+1 query patterns need fixing, or when profiling reveals bottlenecks. |
|
|
141
|
+
| [i3-planning-and-task-breakdown](skills/i3-planning-and-task-breakdown/SKILL.md) | Breaks work into ordered tasks. Use when you have a spec or clear requirements and need to break work into implementable tasks. Use when a task feels too large to start, when you need to estimate scope, or when parallel work is possible. |
|
|
142
|
+
| [i3-security-and-hardening](skills/i3-security-and-hardening/SKILL.md) | Hardens code against vulnerabilities. Use when auditing an input handler for vulnerabilities, when handling user input, authentication, data storage, or external integrations, or when checking a login flow is safe against the OWASP Top Ten. Use when building any feature that accepts untrusted data, manages user sessions, or interacts with third-party services. Use when auditing dependencies for known vulnerabilities, triaging package-manager audit findings, or assessing supply-chain risk in a new package. Use when personal data or privacy compliance (GDPR, CCPA) is involved. |
|
|
143
|
+
| [i3-shipping-and-launch](skills/i3-shipping-and-launch/SKILL.md) | Prepares production launches. Use when preparing to deploy to production, or when asking what needs to be in place before shipping. Use when you need a pre-launch checklist, when setting up monitoring, when planning a staged rollout, or when you need a rollback strategy. |
|
|
144
|
+
| [i3-source-driven-development](skills/i3-source-driven-development/SKILL.md) | Grounds every implementation decision in official documentation. Use when you want to verify an approach against the official docs before implementing it, or when you want authoritative, source-cited code free from outdated patterns. Use when building with any framework or library where correctness matters. |
|
|
145
|
+
| [i3-spec-driven-development](skills/i3-spec-driven-development/SKILL.md) | Creates specs before coding. Use when starting a new project, feature, or significant change and no specification exists yet. Use when drafting a PRD or requirements document with objectives and scope, or when requirements are unclear, ambiguous, or only exist as a vague idea. Use when a single requirement spans several independently testable capabilities and needs decomposing into a capability map of modules before specifying. |
|
|
146
|
+
| [i3-test-driven-development](skills/i3-test-driven-development/SKILL.md) | Drives development with tests using the red-green-refactor loop. Use when implementing any logic, fixing any bug, or changing any behavior. Use when you need to prove that code works, when a bug report arrives, or when you're about to modify existing functionality. |
|
|
147
|
+
| [i3-using-agent-skills](skills/i3-using-agent-skills/SKILL.md) | Discovers and invokes agent skills. Use when starting a session, or when you need to decide which skill or workflow applies to the piece of work at hand. This is the meta-skill that governs how all other skills are discovered and invoked. |
|
|
134
148
|
|
|
135
149
|
## Bundle options
|
|
136
150
|
|
|
@@ -140,17 +154,6 @@ npx @givolt/i3-composer-agent --codebuddy --dir /path/to/plugin --dry-run
|
|
|
140
154
|
npx @givolt/i3-composer-agent --codebuddy --dir /path/to/plugin --force
|
|
141
155
|
```
|
|
142
156
|
|
|
143
|
-
Explicit `--dir` retains the
|
|
144
|
-
|
|
157
|
+
Explicit `--dir` retains the plugin preparation behavior. Successful replacement
|
|
158
|
+
removes the previous bundle and this plugin's historical backups. Repository-scoped
|
|
145
159
|
AGENTS.md and CLAUDE.md are not copied into business projects.
|
|
146
|
-
|
|
147
|
-
## Maintaining this fork
|
|
148
|
-
|
|
149
|
-
This repository is independent of the GSD-based i3 Composer Work repository.
|
|
150
|
-
`agent/source` retains upstream source and the `rebrand/` rules; `main` contains
|
|
151
|
-
the validated branded distribution. Create release candidates from the source
|
|
152
|
-
branch, replay branding, validate, then update the release branch.
|
|
153
|
-
|
|
154
|
-
See [maintenance](rebrand/MAINTENANCE.md), [source PR workflow](rebrand/PR-WORKFLOW.md),
|
|
155
|
-
[versioning](rebrand/VERSIONING.md), [changelog](CHANGELOG.md),
|
|
156
|
-
and [validation contract](rebrand/VALIDATION.md).
|
package/agents/code-reviewer.md
CHANGED
|
@@ -46,7 +46,7 @@ Evaluate every change across these five dimensions:
|
|
|
46
46
|
|
|
47
47
|
## Output Format
|
|
48
48
|
|
|
49
|
-
Categorize every finding, using the same severity labels as the `code-review-and-quality` skill:
|
|
49
|
+
Categorize every finding, using the same severity labels as the `i3-code-review-and-quality` skill:
|
|
50
50
|
|
|
51
51
|
**Critical** — Blocks merge (security vulnerability, data loss risk, broken functionality)
|
|
52
52
|
|
|
@@ -98,5 +98,5 @@ Categorize every finding, using the same severity labels as the `code-review-and
|
|
|
98
98
|
## Composition
|
|
99
99
|
|
|
100
100
|
- **Invoke directly when:** the user asks for a review of a specific change, file, or PR.
|
|
101
|
-
- **Invoke via:** `/review` (single-perspective review) or `/ship` (parallel fan-out alongside `security-auditor` and `test-engineer`).
|
|
101
|
+
- **Invoke via:** `/i3-review` (single-perspective review) or `/i3-ship` (parallel fan-out alongside `security-auditor` and `test-engineer`).
|
|
102
102
|
- **Do not invoke from another persona.** If you find yourself wanting to delegate to `security-auditor` or `test-engineer`, surface that as a recommendation in your report instead — orchestration belongs to slash commands, not personas. See [docs/agents.md](../docs/agents.md).
|
|
@@ -108,5 +108,5 @@ Map findings to the OWASP Top 10 for LLM Applications where relevant.
|
|
|
108
108
|
## Composition
|
|
109
109
|
|
|
110
110
|
- **Invoke directly when:** the user wants a security-focused pass on a specific change, file, or system component.
|
|
111
|
-
- **Invoke via:** `/ship` (parallel fan-out alongside `code-reviewer` and `test-engineer`), or any future `/audit` command.
|
|
111
|
+
- **Invoke via:** `/i3-ship` (parallel fan-out alongside `code-reviewer` and `test-engineer`), or any future `/audit` command.
|
|
112
112
|
- **Do not invoke from another persona.** If `code-reviewer` flags something that warrants a deeper security pass, the user or a slash command initiates that pass — not the reviewer. See [docs/agents.md](../docs/agents.md).
|
package/agents/test-engineer.md
CHANGED
|
@@ -91,5 +91,5 @@ When analyzing test coverage:
|
|
|
91
91
|
## Composition
|
|
92
92
|
|
|
93
93
|
- **Invoke directly when:** the user asks for test design, coverage analysis, or a Prove-It test for a specific bug.
|
|
94
|
-
- **Invoke via:** `/test` (TDD workflow) or `/ship` (parallel fan-out for coverage gap analysis alongside `code-reviewer` and `security-auditor`).
|
|
94
|
+
- **Invoke via:** `/i3-test` (TDD workflow) or `/i3-ship` (parallel fan-out for coverage gap analysis alongside `code-reviewer` and `security-auditor`).
|
|
95
95
|
- **Do not invoke from another persona.** Recommendations to add tests belong in your report; the user or a slash command decides when to act on them. See [docs/agents.md](../docs/agents.md).
|
|
@@ -33,7 +33,7 @@ Populate the scorecard only with values backed by these sources. Mark unmeasured
|
|
|
33
33
|
| Lab metrics, opportunities, diagnostics | Lighthouse JSON | None (parse a provided file) |
|
|
34
34
|
| Field metrics (real users, p75) | CrUX API | `CRUX_API_KEY` or `GOOGLE_API_KEY` env var |
|
|
35
35
|
| Combined lab + field | PageSpeed Insights JSON | None for parsing; the user provides the JSON |
|
|
36
|
-
| Live trace, LCP attribution, INP attribution, layout shift attribution | Chrome DevTools MCP server (`performance_*`, `lighthouse_audit`) | `chrome-devtools` MCP server configured in the harness (see `skills/browser-testing-with-devtools`) |
|
|
36
|
+
| Live trace, LCP attribution, INP attribution, layout shift attribution | Chrome DevTools MCP server (`performance_*`, `lighthouse_audit`) | `chrome-devtools` MCP server configured in the harness (see `skills/i3-browser-testing-with-devtools`) |
|
|
37
37
|
| Manual terminal capture (Lighthouse, trace, screenshot) | Chrome DevTools MCP CLI (e.g. `chrome-devtools lighthouse_audit --output-format=json`) | `npx -p chrome-devtools-mcp chrome-devtools <tool>` or `npm i -g chrome-devtools-mcp` (CLI is independent of the harness) |
|
|
38
38
|
|
|
39
39
|
If a source is unavailable, do not fabricate. Skip the related section of the scorecard and continue with what you have.
|
|
@@ -173,12 +173,12 @@ Identify the framework and rendering model (React, Vue, Svelte, Angular, Next.js
|
|
|
173
173
|
6. Do not recommend micro-optimizations without evidence they affect a Core Web Vital or another measurable metric.
|
|
174
174
|
7. Acknowledge good performance practices — positive reinforcement matters.
|
|
175
175
|
8. Use `references/performance-checklist.md` as the minimum baseline for each area.
|
|
176
|
-
9. Delegate granular optimization guidance and remediation steps to `skills/performance-optimization/SKILL.md` — keep this report at the audit level.
|
|
176
|
+
9. Delegate granular optimization guidance and remediation steps to `skills/i3-performance-optimization/SKILL.md` — keep this report at the audit level.
|
|
177
177
|
10. Fold AI-generated anti-patterns into their relevant area (Network or Rendering/JS); do not create a separate "AI" category.
|
|
178
178
|
11. In Deep mode, always state which artifacts were provided and which fields remain unmeasured.
|
|
179
179
|
|
|
180
180
|
## Composition
|
|
181
181
|
|
|
182
182
|
- **Invoke directly when:** the user wants a performance-focused pass on a web application, a specific component, a route, or a live URL.
|
|
183
|
-
- **Invoke via:** `/webperf` (dedicated performance audit command). Not included in `/ship` fan-out — performance audits apply to web applications only, not to utility libraries or CLI tools, so adding it to a global pre-launch fan-out would create noise in non-web projects.
|
|
183
|
+
- **Invoke via:** `/i3-webperf` (dedicated performance audit command). Not included in `/i3-ship` fan-out — performance audits apply to web applications only, not to utility libraries or CLI tools, so adding it to a global pre-launch fan-out would create noise in non-web projects.
|
|
184
184
|
- **Do not invoke from another persona.** If `code-reviewer` flags a performance concern that warrants a deeper pass, surface that recommendation in the report; the user or a slash command initiates the deeper pass. See [docs/agents.md](../docs/agents.md).
|
package/bin/agent-targets.json
CHANGED
|
@@ -721,6 +721,17 @@
|
|
|
721
721
|
"base": "home",
|
|
722
722
|
"path": ".zencoder/skills"
|
|
723
723
|
}
|
|
724
|
+
},
|
|
725
|
+
{
|
|
726
|
+
"id": "workbuddy",
|
|
727
|
+
"label": "WorkBuddy",
|
|
728
|
+
"projectSkillsDir": ".codebuddy/skills",
|
|
729
|
+
"globalSkillsDir": {
|
|
730
|
+
"base": "env",
|
|
731
|
+
"env": "WORKBUDDY_CONFIG_DIR",
|
|
732
|
+
"fallback": ".workbuddy",
|
|
733
|
+
"path": "skills"
|
|
734
|
+
}
|
|
724
735
|
}
|
|
725
736
|
]
|
|
726
737
|
}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
const fs = require('node:fs');
|
|
4
|
+
const path = require('node:path');
|
|
5
|
+
const crypto = require('node:crypto');
|
|
6
|
+
const { nativeContent } = require('./native-content.cjs');
|
|
7
|
+
|
|
8
|
+
// Compare the complete tree without following links. When asset is provided,
|
|
9
|
+
// hash the source as it will be rendered by the native installer.
|
|
10
|
+
function fingerprint(file, asset) {
|
|
11
|
+
const hash = crypto.createHash('sha256');
|
|
12
|
+
function visit(current, relative) {
|
|
13
|
+
let stat;
|
|
14
|
+
try { stat = fs.lstatSync(current); }
|
|
15
|
+
catch (error) { if (error.code === 'ENOENT') return false; throw error; }
|
|
16
|
+
if (stat.isSymbolicLink() || (!stat.isDirectory() && !stat.isFile())) {
|
|
17
|
+
if (asset) throw new Error(`Package contains an unsupported file: ${current}`);
|
|
18
|
+
return false;
|
|
19
|
+
}
|
|
20
|
+
hash.update(JSON.stringify([relative, stat.isDirectory() ? 'directory' : 'file', stat.mode & 0o111]) + '\n');
|
|
21
|
+
if (stat.isDirectory()) {
|
|
22
|
+
for (const entry of fs.readdirSync(current).sort()) {
|
|
23
|
+
if (asset && entry === '.DS_Store') continue;
|
|
24
|
+
if (!visit(path.join(current, entry), path.join(relative, entry))) return false;
|
|
25
|
+
}
|
|
26
|
+
} else {
|
|
27
|
+
const content = asset && current.endsWith('.md')
|
|
28
|
+
? Buffer.from(nativeContent(fs.readFileSync(current, 'utf8'), asset))
|
|
29
|
+
: fs.readFileSync(current);
|
|
30
|
+
hash.update(String(content.length) + '\n');
|
|
31
|
+
hash.update(content);
|
|
32
|
+
}
|
|
33
|
+
return true;
|
|
34
|
+
}
|
|
35
|
+
return visit(file, '') ? hash.digest('hex') : undefined;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
module.exports = { fingerprint };
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
const fs = require('node:fs');
|
|
4
|
+
const path = require('node:path');
|
|
5
|
+
const uuid = /^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;
|
|
6
|
+
|
|
7
|
+
function cleanupBackups(directory, prefix, belongs = () => true) {
|
|
8
|
+
// Installer backups have a v4 UUID suffix. Ignore lookalikes and symlinks.
|
|
9
|
+
for (const entry of fs.readdirSync(directory, { withFileTypes: true })) {
|
|
10
|
+
if (!entry.isDirectory() || !entry.name.startsWith(prefix) || !uuid.test(entry.name.slice(prefix.length))) continue;
|
|
11
|
+
const backup = path.join(directory, entry.name);
|
|
12
|
+
if (belongs(backup)) fs.rmSync(backup, { recursive: true });
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
module.exports = { cleanupBackups };
|
|
@@ -4,11 +4,12 @@
|
|
|
4
4
|
const fs = require('node:fs');
|
|
5
5
|
const path = require('node:path');
|
|
6
6
|
const crypto = require('node:crypto');
|
|
7
|
+
const { cleanupBackups } = require('./cleanup-backups.cjs');
|
|
7
8
|
const root = path.resolve(__dirname, '..');
|
|
8
9
|
const pkg = require('../package.json');
|
|
9
10
|
const name = 'i3-composer-agent';
|
|
10
11
|
const args = process.argv.slice(2);
|
|
11
|
-
const identity = `i3 Composer Agent v${pkg.version}
|
|
12
|
+
const identity = `i3 Composer Agent v${pkg.version}`;
|
|
12
13
|
const help = `${identity}
|
|
13
14
|
${pkg.name}
|
|
14
15
|
|
|
@@ -17,6 +18,8 @@ Install engineering skills with a multi-tool installation wizard.
|
|
|
17
18
|
Usage:
|
|
18
19
|
npx ${pkg.name}
|
|
19
20
|
npx ${pkg.name} --codebuddy
|
|
21
|
+
npx ${pkg.name} --workbuddy
|
|
22
|
+
npx ${pkg.name} --agents codebuddy,workbuddy --scope project --yes
|
|
20
23
|
npx ${pkg.name} --agents codebuddy,codex --scope project --yes
|
|
21
24
|
npx ${pkg.name} --prepare --claude --dir <directory>
|
|
22
25
|
npx ${pkg.name} --extract --dir <directory>
|
|
@@ -24,6 +27,7 @@ Usage:
|
|
|
24
27
|
Options:
|
|
25
28
|
--agents <ids> Comma-separated tool IDs; multiple tools are supported
|
|
26
29
|
--codebuddy Preselect CodeBuddy desktop IDE / CodeBuddy Code
|
|
30
|
+
--workbuddy Preselect WorkBuddy (shared project / independent global)
|
|
27
31
|
--codex Preselect Codex
|
|
28
32
|
--claude Preselect Claude Code
|
|
29
33
|
--scope <scope> project or global (or use --global / --local)
|
|
@@ -33,12 +37,12 @@ Options:
|
|
|
33
37
|
--prepare Prepare a complete plugin for native plugin registration
|
|
34
38
|
--dir <directory> Plugin output directory; implies --prepare
|
|
35
39
|
--dry-run Show the installation or bundle plan without writing files
|
|
36
|
-
--force Replace existing assets
|
|
40
|
+
--force Replace existing assets; remove old files after success
|
|
37
41
|
--version Print the package version
|
|
38
42
|
--help Show this help
|
|
39
43
|
|
|
40
44
|
The terminal wizard selects tools and scope, then installs native skill files.
|
|
41
|
-
CodeBuddy and Claude Code also receive short
|
|
45
|
+
CodeBuddy, WorkBuddy and Claude Code also receive short commands and personas.
|
|
42
46
|
Other tools receive skills and references; command availability is host-specific.
|
|
43
47
|
Use --prepare for complete plugins, including hooks and host registration.
|
|
44
48
|
`;
|
|
@@ -63,6 +67,7 @@ function prepare() {
|
|
|
63
67
|
for (let i = 0; i < args.length; i++) {
|
|
64
68
|
const arg = args[i];
|
|
65
69
|
if (arg === '--prepare') continue;
|
|
70
|
+
if (arg === '--workbuddy') throw new Error('For native WorkBuddy installation, use --workbuddy --scope project|global --yes without --prepare or --dir.');
|
|
66
71
|
if (['--codebuddy', '--codex', '--claude', '--extract'].includes(arg)) {
|
|
67
72
|
if (host) throw new Error('Choose exactly one host flag or --extract.');
|
|
68
73
|
host = arg.slice(2);
|
|
@@ -87,12 +92,13 @@ function prepare() {
|
|
|
87
92
|
if (manifest.name !== name) throw new Error('Refusing to replace a directory belonging to another plugin.');
|
|
88
93
|
}
|
|
89
94
|
if (dryRun) {
|
|
90
|
-
console.log(JSON.stringify({ name, version: pkg.version,
|
|
95
|
+
console.log(JSON.stringify({ name, version: pkg.version, directory, host, files: pkg.i3ComposerAgent.pluginFiles, replacesExisting: exists }, null, 2));
|
|
91
96
|
return;
|
|
92
97
|
}
|
|
93
98
|
fs.mkdirSync(path.dirname(directory), { recursive: true });
|
|
94
99
|
const staging = fs.mkdtempSync(path.join(path.dirname(directory), `.${name}-`));
|
|
95
100
|
let backup;
|
|
101
|
+
let completed = false;
|
|
96
102
|
try {
|
|
97
103
|
for (const relative of pkg.i3ComposerAgent.pluginFiles) {
|
|
98
104
|
const source = path.join(root, relative);
|
|
@@ -113,10 +119,18 @@ function prepare() {
|
|
|
113
119
|
}
|
|
114
120
|
try { fs.renameSync(staging, directory); }
|
|
115
121
|
catch (error) { if (backup) fs.renameSync(backup, directory); throw error; }
|
|
116
|
-
|
|
122
|
+
completed = true;
|
|
123
|
+
} finally {
|
|
124
|
+
if (fs.existsSync(staging)) fs.rmSync(staging, { recursive: true, force: true });
|
|
125
|
+
if (completed) cleanupBackups(path.dirname(directory), `${path.basename(directory)}.backup-`, previous => {
|
|
126
|
+
const manifest = path.join(previous, 'plugin.json');
|
|
127
|
+
try {
|
|
128
|
+
return !fs.lstatSync(manifest).isSymbolicLink() && JSON.parse(fs.readFileSync(manifest, 'utf8')).name === name;
|
|
129
|
+
} catch { return false; }
|
|
130
|
+
});
|
|
131
|
+
}
|
|
117
132
|
console.log(identity);
|
|
118
133
|
console.log(`Prepared ${name} at ${directory}`);
|
|
119
|
-
if (backup) console.log(`Previous bundle preserved at ${backup}`);
|
|
120
134
|
if (host === 'extract') return;
|
|
121
135
|
console.log('\nRegister and enable the plugin with these native commands:');
|
|
122
136
|
const selector = `${name}@${name}`;
|
|
@@ -127,7 +141,7 @@ function prepare() {
|
|
|
127
141
|
} else {
|
|
128
142
|
console.log(`/plugin marketplace add ${quote(directory)}`);
|
|
129
143
|
console.log(`/plugin install ${selector}`);
|
|
130
|
-
console.log(`Use /${name}:spec, /${name}:plan, /${name}:build, and /${name}:ship in ${host === 'claude' ? 'Claude Code' : 'CodeBuddy'}.`);
|
|
144
|
+
console.log(`Use /${name}:i3-spec, /${name}:i3-plan, /${name}:i3-build, and /${name}:i3-ship in ${host === 'claude' ? 'Claude Code' : 'CodeBuddy'}.`);
|
|
131
145
|
}
|
|
132
146
|
}
|
|
133
147
|
async function main() {
|
|
@@ -142,7 +156,7 @@ async function main() {
|
|
|
142
156
|
const options = { agents: [], projectDir: process.cwd() };
|
|
143
157
|
for (let i = 0; i < args.length; i++) {
|
|
144
158
|
const arg = args[i];
|
|
145
|
-
if (['--codebuddy', '--codex', '--claude'].includes(arg)) options.agents.push(arg.slice(2));
|
|
159
|
+
if (['--codebuddy', '--workbuddy', '--codex', '--claude'].includes(arg)) options.agents.push(arg.slice(2));
|
|
146
160
|
else if (['--agents', '--scope', '--project-dir'].includes(arg)) {
|
|
147
161
|
if (!args[i + 1] || args[i + 1].startsWith('--')) throw new Error(`${arg} requires a value.`);
|
|
148
162
|
const value = args[++i];
|
|
@@ -168,7 +182,7 @@ async function main() {
|
|
|
168
182
|
}
|
|
169
183
|
const plan = installer.planInstallation(options);
|
|
170
184
|
if (options.dryRun) {
|
|
171
|
-
console.log(JSON.stringify({ name, version: pkg.version,
|
|
185
|
+
console.log(JSON.stringify({ name, version: pkg.version, mode: plan.mode, scope: plan.scope, agents: plan.agents, targets: plan.targets, conflicts: plan.conflicts, reused: plan.reused }, null, 2));
|
|
172
186
|
return;
|
|
173
187
|
}
|
|
174
188
|
if (!options.yes) {
|
|
@@ -176,15 +190,16 @@ async function main() {
|
|
|
176
190
|
if (!confirmed) { console.log('Installation cancelled. No files changed.'); return; }
|
|
177
191
|
options.force = plan.conflicts.length > 0;
|
|
178
192
|
}
|
|
179
|
-
|
|
193
|
+
installer.executeInstallation(plan, { force: options.force });
|
|
180
194
|
console.log(identity);
|
|
195
|
+
if (plan.reused.length) console.log(`Reused ${plan.reused.length} unchanged assets from the same package version.`);
|
|
181
196
|
for (const target of plan.targets) {
|
|
182
197
|
console.log(`Installed ${target.agents.join(', ')} skills at ${target.skillsDirectory}`);
|
|
183
|
-
if (target.commandsDirectory) console.log(`Commands: /spec, /plan, /build, /ship (all ${fs.readdirSync(target.commandsDirectory).filter(file => file.endsWith('.md')).length} workflows) at ${target.commandsDirectory}`);
|
|
198
|
+
if (target.commandsDirectory) console.log(`Commands: /i3-spec, /i3-plan, /i3-build, /i3-ship (all ${fs.readdirSync(target.commandsDirectory).filter(file => file.endsWith('.md')).length} workflows) at ${target.commandsDirectory}`);
|
|
184
199
|
}
|
|
185
|
-
for (const backup of backups) console.log(`Previous assets preserved at ${backup}`);
|
|
186
200
|
console.log('Reload the IDE window or start a new host session to discover installed files.');
|
|
187
|
-
if (plan.agents.some(id => !['codebuddy', 'claude-code'].includes(id))) console.log('These tools use the existing skill IDs; lifecycle slash-command support depends on the host.');
|
|
188
|
-
console.log('Native skill installation does not enable plugin hooks.
|
|
201
|
+
if (plan.agents.some(id => !['codebuddy', 'workbuddy', 'claude-code'].includes(id))) console.log('These tools use the existing skill IDs; lifecycle slash-command support depends on the host.');
|
|
202
|
+
console.log('Native skill installation does not enable plugin hooks.');
|
|
203
|
+
if (plan.agents.some(id => ['codebuddy', 'codex', 'claude-code'].includes(id))) console.log('For CodeBuddy, Codex or Claude Code plugin registration, use --prepare with the matching host flag.');
|
|
189
204
|
}
|
|
190
205
|
main().catch(error => { console.error(`${name}: ${error.message}`); process.exitCode = 1; });
|