@givolt/i3-composer-agent 0.6.12 → 1.0.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.
Files changed (37) hide show
  1. package/.agents/plugins/marketplace.json +3 -2
  2. package/.claude-plugin/marketplace.json +2 -1
  3. package/.claude-plugin/plugin.json +3 -1
  4. package/.codex-plugin/plugin.json +3 -1
  5. package/CHANGELOG.md +23 -0
  6. package/README.md +77 -137
  7. package/bin/i3-composer-agent.cjs +6 -3
  8. package/docs/antigravity-setup.md +1 -1
  9. package/docs/comparison.md +1 -1
  10. package/hooks/sdd-cache-post.sh +0 -0
  11. package/hooks/sdd-cache-pre.sh +0 -0
  12. package/package.json +75 -17
  13. package/plugin.json +4 -2
  14. package/rebrand/MAINTENANCE.md +92 -31
  15. package/rebrand/NOTICE.md +9 -0
  16. package/rebrand/PR-WORKFLOW.md +34 -0
  17. package/rebrand/UNIFICATION-SPEC.md +33 -0
  18. package/rebrand/VALIDATION.md +28 -0
  19. package/rebrand/VERSIONING.md +32 -0
  20. package/rebrand/apply.cjs +80 -7
  21. package/rebrand/brand.json +6 -2
  22. package/rebrand/catalog.cjs +56 -0
  23. package/rebrand/fork-patches.json +12 -0
  24. package/rebrand/overlay/.github/workflows/test-plugin-install.yml +177 -0
  25. package/rebrand/overlay/CHANGELOG.md +23 -0
  26. package/rebrand/overlay/bin/i3-composer-agent.cjs +122 -0
  27. package/rebrand/overlay/scripts/validate-brand.cjs +44 -0
  28. package/rebrand/overlay/tests/bundle.test.cjs +85 -0
  29. package/rebrand/package.template.json +82 -0
  30. package/rebrand/rebrand.sh +4 -0
  31. package/rebrand/record-upstream.cjs +37 -0
  32. package/rebrand/templates/README.md +44 -136
  33. package/rebrand/tests/pipeline.test.cjs +185 -0
  34. package/rebrand/upstream.json +171 -0
  35. package/scripts/validate-brand.cjs +11 -3
  36. package/skills/idea-refine/scripts/idea-refine.sh +0 -0
  37. package/tests/bundle.test.cjs +11 -5
@@ -7,6 +7,7 @@ const os = require('node:os');
7
7
  const path = require('node:path');
8
8
  const { spawnSync } = require('node:child_process');
9
9
  const root = path.resolve(__dirname, '..');
10
+ const upstream = require('../rebrand/upstream.json');
10
11
  const cli = path.join(root, 'bin/i3-composer-agent.cjs');
11
12
  function run(args) { return spawnSync(process.execPath, [cli, ...args], { encoding: 'utf8' }); }
12
13
  function workspace(t) {
@@ -15,7 +16,10 @@ function workspace(t) {
15
16
  return directory;
16
17
  }
17
18
  test('help and version identify the package without preparing files', () => {
18
- assert.match(run(['--help']).stdout, /@givolt\/i3-composer-agent/);
19
+ const help = run(['--help']).stdout;
20
+ assert.match(help, /@givolt\/i3-composer-agent/);
21
+ assert.ok(help.includes(`i3 Composer Agent v${require('../package.json').version}`));
22
+ assert.ok(help.includes(`Based on agent-skills v${upstream.upstreamVersion}`));
19
23
  assert.equal(run(['--version']).stdout.trim(), require('../package.json').version);
20
24
  });
21
25
  test('dry run and invalid arguments leave the target untouched', t => {
@@ -30,10 +34,12 @@ test('complete bundle preserves reference links and all host assets at a path wi
30
34
  const target = path.join(workspace(t), 'plugin with spaces');
31
35
  const result = run(['--codebuddy', '--dir', target]);
32
36
  assert.equal(result.status, 0, result.stderr);
37
+ assert.ok(result.stdout.includes(`i3 Composer Agent v${require('../package.json').version}`));
38
+ assert.ok(result.stdout.includes(`Based on agent-skills v${upstream.upstreamVersion}`));
33
39
  assert.match(result.stdout, /\/plugin install i3-composer-agent@i3-composer-agent/);
34
- assert.equal(fs.readdirSync(path.join(target, 'skills')).length, 25);
35
- assert.equal(fs.readdirSync(path.join(target, '.claude/commands')).length, 9);
36
- assert.equal(fs.readdirSync(path.join(target, 'agents')).filter(name => name.endsWith('.md')).length, 4);
40
+ assert.equal(fs.readdirSync(path.join(target, 'skills')).length, upstream.skills.length);
41
+ assert.equal(fs.readdirSync(path.join(target, '.claude/commands')).length, upstream.commands.length);
42
+ assert.equal(fs.readdirSync(path.join(target, 'agents')).filter(name => name.endsWith('.md')).length, upstream.personas.length);
37
43
  assert.equal(JSON.parse(fs.readFileSync(path.join(target, '.codex-plugin/plugin.json'), 'utf8')).name, 'i3-composer-agent');
38
44
  const check = spawnSync(process.execPath, [path.join(target, 'scripts/validate-reference-links.js')], { cwd: target, encoding: 'utf8' });
39
45
  assert.equal(check.status, 0, check.stdout + check.stderr);
@@ -57,7 +63,7 @@ test('installed packages beneath node_modules remain fully extractable', t => {
57
63
  const result = spawnSync(process.execPath, [path.join(installed, 'bin/i3-composer-agent.cjs'), '--extract', '--dir', target], { encoding: 'utf8' });
58
64
  assert.equal(result.status, 0, result.stderr);
59
65
  assert.equal(JSON.parse(fs.readFileSync(path.join(target, 'package.json'), 'utf8')).name, '@givolt/i3-composer-agent');
60
- assert.equal(fs.readdirSync(path.join(target, 'skills')).length, 25);
66
+ assert.equal(fs.readdirSync(path.join(target, 'skills')).length, upstream.skills.length);
61
67
  });
62
68
  test('replacement preserves the complete previous bundle in a backup', t => {
63
69
  const parent = workspace(t);