wordpress-agent-kit 0.3.2 → 0.5.1

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 (135) hide show
  1. package/.agents/skills/blueprint/SKILL.md +418 -0
  2. package/.agents/skills/wordpress-router/SKILL.md +52 -0
  3. package/.agents/skills/wordpress-router/references/decision-tree.md +55 -0
  4. package/.agents/skills/wp-abilities-api/SKILL.md +108 -0
  5. package/.agents/skills/wp-abilities-api/references/delegate-helper-pattern.md +241 -0
  6. package/.agents/skills/wp-abilities-api/references/domain-vs-projection.md +113 -0
  7. package/.agents/skills/wp-abilities-api/references/error-code-vocabulary.md +123 -0
  8. package/.agents/skills/wp-abilities-api/references/grouping-heuristic.md +89 -0
  9. package/.agents/skills/wp-abilities-api/references/input-schema-gotchas.md +265 -0
  10. package/.agents/skills/wp-abilities-api/references/php-registration.md +94 -0
  11. package/.agents/skills/wp-abilities-api/references/plugin-family-patterns.md +233 -0
  12. package/.agents/skills/wp-abilities-api/references/rest-api.md +13 -0
  13. package/.agents/skills/wp-abilities-api/references/shared-core-service.md +184 -0
  14. package/.agents/skills/wp-abilities-audit/SKILL.md +199 -0
  15. package/.agents/skills/wp-abilities-audit/references/audit-schema.md +300 -0
  16. package/.agents/skills/wp-abilities-audit/references/capability-gate-tracing.md +197 -0
  17. package/.agents/skills/wp-abilities-audit/references/controller-enumeration.md +116 -0
  18. package/.agents/skills/wp-abilities-verify/SKILL.md +215 -0
  19. package/.agents/skills/wp-abilities-verify/references/annotation-correctness.md +154 -0
  20. package/.agents/skills/wp-abilities-verify/references/audit-schema-validation.md +131 -0
  21. package/.agents/skills/wp-abilities-verify/references/permission-roundtrip.md +190 -0
  22. package/.agents/skills/wp-abilities-verify/references/runtime-harness.md +462 -0
  23. package/.agents/skills/wp-abilities-verify/references/schema-lints.md +118 -0
  24. package/.agents/skills/wp-abilities-verify/references/static-enumeration.md +126 -0
  25. package/.agents/skills/wp-block-development/SKILL.md +175 -0
  26. package/.agents/skills/wp-block-development/references/attributes-and-serialization.md +22 -0
  27. package/.agents/skills/wp-block-development/references/block-json.md +49 -0
  28. package/.agents/skills/wp-block-development/references/creating-new-blocks.md +46 -0
  29. package/.agents/skills/wp-block-development/references/debugging.md +36 -0
  30. package/.agents/skills/wp-block-development/references/deprecations.md +24 -0
  31. package/.agents/skills/wp-block-development/references/dynamic-rendering.md +23 -0
  32. package/.agents/skills/wp-block-development/references/inner-blocks.md +25 -0
  33. package/.agents/skills/wp-block-development/references/registration.md +30 -0
  34. package/.agents/skills/wp-block-development/references/supports-and-wrappers.md +18 -0
  35. package/.agents/skills/wp-block-development/references/tooling-and-testing.md +21 -0
  36. package/.agents/skills/wp-block-development/scripts/list_blocks.mjs +121 -0
  37. package/.agents/skills/wp-block-themes/SKILL.md +117 -0
  38. package/.agents/skills/wp-block-themes/references/creating-new-block-theme.md +37 -0
  39. package/.agents/skills/wp-block-themes/references/debugging.md +24 -0
  40. package/.agents/skills/wp-block-themes/references/patterns.md +18 -0
  41. package/.agents/skills/wp-block-themes/references/style-variations.md +14 -0
  42. package/.agents/skills/wp-block-themes/references/templates-and-parts.md +16 -0
  43. package/.agents/skills/wp-block-themes/references/theme-json.md +59 -0
  44. package/.agents/skills/wp-block-themes/scripts/detect_block_themes.mjs +117 -0
  45. package/.agents/skills/wp-interactivity-api/SKILL.md +180 -0
  46. package/.agents/skills/wp-interactivity-api/references/debugging.md +29 -0
  47. package/.agents/skills/wp-interactivity-api/references/directives-quickref.md +30 -0
  48. package/.agents/skills/wp-interactivity-api/references/server-side-rendering.md +310 -0
  49. package/.agents/skills/wp-performance/SKILL.md +147 -0
  50. package/.agents/skills/wp-performance/references/autoload-options.md +24 -0
  51. package/.agents/skills/wp-performance/references/cron.md +20 -0
  52. package/.agents/skills/wp-performance/references/database.md +20 -0
  53. package/.agents/skills/wp-performance/references/http-api.md +15 -0
  54. package/.agents/skills/wp-performance/references/measurement.md +21 -0
  55. package/.agents/skills/wp-performance/references/object-cache.md +24 -0
  56. package/.agents/skills/wp-performance/references/query-monitor-headless.md +38 -0
  57. package/.agents/skills/wp-performance/references/server-timing.md +22 -0
  58. package/.agents/skills/wp-performance/references/wp-cli-doctor.md +24 -0
  59. package/.agents/skills/wp-performance/references/wp-cli-profile.md +32 -0
  60. package/.agents/skills/wp-performance/scripts/perf_inspect.mjs +128 -0
  61. package/.agents/skills/wp-phpstan/SKILL.md +98 -0
  62. package/.agents/skills/wp-phpstan/references/configuration.md +52 -0
  63. package/.agents/skills/wp-phpstan/references/third-party-classes.md +76 -0
  64. package/.agents/skills/wp-phpstan/references/wordpress-annotations.md +124 -0
  65. package/.agents/skills/wp-phpstan/scripts/phpstan_inspect.mjs +263 -0
  66. package/.agents/skills/wp-playground/SKILL.md +233 -0
  67. package/.agents/skills/wp-playground/references/blueprints.md +36 -0
  68. package/.agents/skills/wp-playground/references/cli-commands.md +39 -0
  69. package/.agents/skills/wp-playground/references/debugging.md +16 -0
  70. package/.agents/skills/wp-playground/references/e2e-playwright.md +115 -0
  71. package/.agents/skills/wp-plugin-development/SKILL.md +113 -0
  72. package/.agents/skills/wp-plugin-development/references/data-and-cron.md +19 -0
  73. package/.agents/skills/wp-plugin-development/references/debugging.md +19 -0
  74. package/.agents/skills/wp-plugin-development/references/lifecycle.md +33 -0
  75. package/.agents/skills/wp-plugin-development/references/security.md +29 -0
  76. package/.agents/skills/wp-plugin-development/references/settings-api.md +22 -0
  77. package/.agents/skills/wp-plugin-development/references/structure.md +16 -0
  78. package/.agents/skills/wp-plugin-development/scripts/detect_plugins.mjs +122 -0
  79. package/.agents/skills/wp-plugin-directory-guidelines/SKILL.md +133 -0
  80. package/.agents/skills/wp-plugin-directory-guidelines/references/gpl-compliance.md +217 -0
  81. package/.agents/skills/wp-plugin-directory-guidelines/references/guideline-review-checklist.md +592 -0
  82. package/.agents/skills/wp-plugin-directory-guidelines/references/naming-rules.md +121 -0
  83. package/.agents/skills/wp-project-triage/SKILL.md +39 -0
  84. package/.agents/skills/wp-project-triage/references/triage.schema.json +143 -0
  85. package/.agents/skills/wp-project-triage/scripts/detect_wp_project.mjs +610 -0
  86. package/.agents/skills/wp-rest-api/SKILL.md +115 -0
  87. package/.agents/skills/wp-rest-api/references/authentication.md +18 -0
  88. package/.agents/skills/wp-rest-api/references/custom-content-types.md +20 -0
  89. package/.agents/skills/wp-rest-api/references/discovery-and-params.md +20 -0
  90. package/.agents/skills/wp-rest-api/references/responses-and-fields.md +30 -0
  91. package/.agents/skills/wp-rest-api/references/routes-and-endpoints.md +36 -0
  92. package/.agents/skills/wp-rest-api/references/schema.md +22 -0
  93. package/.agents/skills/wp-wpcli-and-ops/SKILL.md +126 -0
  94. package/.agents/skills/wp-wpcli-and-ops/references/automation.md +30 -0
  95. package/.agents/skills/wp-wpcli-and-ops/references/cron-and-cache.md +23 -0
  96. package/.agents/skills/wp-wpcli-and-ops/references/debugging.md +17 -0
  97. package/.agents/skills/wp-wpcli-and-ops/references/multisite.md +22 -0
  98. package/.agents/skills/wp-wpcli-and-ops/references/packages-and-updates.md +22 -0
  99. package/.agents/skills/wp-wpcli-and-ops/references/safety.md +30 -0
  100. package/.agents/skills/wp-wpcli-and-ops/references/search-replace.md +40 -0
  101. package/.agents/skills/wp-wpcli-and-ops/scripts/wpcli_inspect.mjs +90 -0
  102. package/.agents/skills/wp-wpengine/SKILL.md +398 -0
  103. package/.agents/skills/wp-wpengine/references/ci-gate.md +469 -0
  104. package/.agents/skills/wp-wpengine/references/github-actions-deploy.md +736 -0
  105. package/.agents/skills/wp-wpengine/scripts/ci-gate.sh +118 -0
  106. package/.agents/skills/wp-wpengine/scripts/wpe-check.sh +89 -0
  107. package/.agents/skills/wp-wpengine/scripts/wpe-preflight.sh +104 -0
  108. package/.agents/skills/wpds/SKILL.md +59 -0
  109. package/.github/agents/wp-architect.agent.md +1 -2
  110. package/.github/copilot-instructions.md +1 -1
  111. package/.github/instructions/wordpress-workflow.instructions.md +3 -3
  112. package/.github/skills/wp-playground/SKILL.md +132 -1
  113. package/.github/skills/wp-playground/references/e2e-playwright.md +115 -0
  114. package/.github/skills/wp-wpengine/SKILL.md +127 -0
  115. package/AGENTS.md +22 -10
  116. package/AGENTS.template.md +20 -10
  117. package/README.md +93 -86
  118. package/dist/cli.js +5 -1
  119. package/dist/commands/clean-skills.js +64 -0
  120. package/dist/commands/setup.js +6 -2
  121. package/dist/commands/sync-skills.js +3 -0
  122. package/dist/lib/api.js +176 -4
  123. package/dist/lib/installer.js +166 -2
  124. package/extensions/wp-agent-kit/index.ts +185 -10
  125. package/package.json +10 -14
  126. package/skills-custom/wp-wpengine/SKILL.md +398 -0
  127. package/skills-custom/wp-wpengine/references/ci-gate.md +469 -0
  128. package/skills-custom/wp-wpengine/references/github-actions-deploy.md +736 -0
  129. package/skills-custom/wp-wpengine/scripts/ci-gate.sh +118 -0
  130. package/skills-custom/wp-wpengine/scripts/wpe-check.sh +89 -0
  131. package/skills-custom/wp-wpengine/scripts/wpe-preflight.sh +104 -0
  132. package/.github/workflows/ci.yml +0 -44
  133. package/.husky/pre-commit +0 -7
  134. package/CLI_REVIEW.md +0 -250
  135. package/biome.json +0 -39
@@ -1,12 +1,13 @@
1
+ import fs from 'node:fs';
1
2
  import path from 'node:path';
2
3
  import { fileURLToPath } from 'node:url';
3
4
  /**
4
5
  * WordPress Agent Kit — Pi Extension
5
6
  *
6
7
  * Provides Pi Coding Agent with WordPress development tools:
7
- * - 17 WordPress agent skills (plugin/theme/block dev, REST API, WP-CLI, etc.)
8
+ * - 18 WordPress agent skills (17 upstream + wp-wpengine custom) at .agents/skills/ (AgentSkills.io convention)
8
9
  * - Project triage detection
9
- * - Skill installation, syncing, and upgrade management
10
+ * - Skill installation, syncing, upgrade, and orphan cleanup
10
11
  *
11
12
  * Follows Pi Coding Agent SDK conventions (extensions.md, packages.md, skills.md).
12
13
  */
@@ -25,17 +26,43 @@ try {
25
26
  apiModule = (await import('../../src/lib/api.js')) as typeof import('../../dist/lib/api.js');
26
27
  }
27
28
 
28
- const { installKitApi, syncSkillsApi, runTriageApi, isKitInstalled, loadManifest } = apiModule;
29
+ const { installKitApi, syncSkillsApi, runTriageApi, cleanSkillsApi, isKitInstalled, loadManifest } =
30
+ apiModule;
29
31
 
30
32
  export default function (pi: ExtensionAPI) {
31
33
  // =========================================================================
32
34
  // Skills Registration
33
35
  // =========================================================================
36
+ // Primary skills (.agents/skills/) are registered via `pi.skills` in package.json.
37
+ // Pi also auto-discovers from .agents/skills/ at the project level (AgentSkills.io convention).
38
+ // The resources_discover handler ONLY supplements skills that aren't already
39
+ // covered by the static manifest — specifically, custom skills from
40
+ // skills-custom/ that haven't been synced into .agents/skills/ yet.
41
+ // This avoids name collisions (Pi keeps first-loaded, warns on duplicates).
34
42
  pi.on('resources_discover', async (_event, _ctx) => {
35
- const skillsDir = path.join(PACKAGE_ROOT, '.github', 'skills');
43
+ const canonicalSkillsDir = path.join(PACKAGE_ROOT, '.agents', 'skills');
44
+ const customSkillsDir = path.join(PACKAGE_ROOT, 'skills-custom');
36
45
  const promptsDir = path.join(PACKAGE_ROOT, '.github', 'prompts');
46
+
47
+ // Only discover custom skills that aren't already in .agents/skills/
48
+ // (which is registered via pi.skills in package.json).
49
+ const skillPaths: string[] = [];
50
+ if (fs.existsSync(customSkillsDir)) {
51
+ const existingSkills = fs.existsSync(canonicalSkillsDir)
52
+ ? new Set(fs.readdirSync(canonicalSkillsDir))
53
+ : new Set<string>();
54
+ for (const entry of fs.readdirSync(customSkillsDir)) {
55
+ if (!existingSkills.has(entry)) {
56
+ const entryPath = path.join(customSkillsDir, entry);
57
+ if (fs.statSync(entryPath).isDirectory()) {
58
+ skillPaths.push(entryPath);
59
+ }
60
+ }
61
+ }
62
+ }
63
+
37
64
  return {
38
- skillPaths: [skillsDir],
65
+ skillPaths: skillPaths.length > 0 ? skillPaths : undefined,
39
66
  promptPaths: [promptsDir],
40
67
  };
41
68
  });
@@ -127,7 +154,7 @@ export default function (pi: ExtensionAPI) {
127
154
  name: 'wp_install_kit',
128
155
  label: 'WP Install Kit',
129
156
  description:
130
- 'Install WordPress Agent Kit into a project directory. Copies 17 WordPress development skills, agent definitions, workflow instructions, and an AGENTS.md template. Safe by default — preserves user modifications on re-run.',
157
+ 'Install WordPress Agent Kit into a project directory. Copies 18 WordPress skills to .agents/skills/ (AgentSkills.io convention), platform-specific agents/instructions/prompts, and an AGENTS.md template. Safe by default — preserves user modifications on re-run.',
131
158
  promptSnippet: 'Install WordPress AI agent skills and configuration into a project',
132
159
  promptGuidelines: [
133
160
  'Use wp_install_kit when setting up a new WordPress project for AI agent development.',
@@ -243,7 +270,7 @@ export default function (pi: ExtensionAPI) {
243
270
  name: 'wp_sync_skills',
244
271
  label: 'WP Sync Skills',
245
272
  description:
246
- 'Sync WordPress agent skills from the upstream WordPress/agent-skills repository. Fetches the latest 17 skill definitions and replaces the local skills directory.',
273
+ 'Sync WordPress agent skills from the upstream WordPress/agent-skills repository. Fetches the latest upstream skill definitions and merges custom skills from skills-custom/ — custom skills survive upstream syncs.',
247
274
  promptSnippet: 'Sync latest WordPress agent skills from upstream',
248
275
  promptGuidelines: [
249
276
  'Use wp_sync_skills to pull the latest WordPress development skills from WordPress/agent-skills.',
@@ -273,11 +300,14 @@ export default function (pi: ExtensionAPI) {
273
300
  }
274
301
 
275
302
  const data = result.data as { skillsSynced: number; method: string };
303
+ const customSkillNote = fs.existsSync(path.join(PACKAGE_ROOT, 'skills-custom'))
304
+ ? '\n**Custom skills**: Merged from skills-custom/'
305
+ : '';
276
306
  return {
277
307
  content: [
278
308
  {
279
309
  type: 'text',
280
- text: `# Skills Synced\n\n**Synced**: ${data.skillsSynced} skills\n**Method**: ${data.method}`,
310
+ text: `# Skills Synced\n\n**Synced**: ${data.skillsSynced} skills\n**Method**: ${data.method}${customSkillNote}`,
281
311
  },
282
312
  ],
283
313
  details: data,
@@ -315,7 +345,6 @@ export default function (pi: ExtensionAPI) {
315
345
  const currentVersion = manifest?.version || 'not installed';
316
346
  const latestVersion = (() => {
317
347
  try {
318
- const fs = require('node:fs');
319
348
  return JSON.parse(fs.readFileSync(path.join(PACKAGE_ROOT, 'package.json'), 'utf-8'))
320
349
  .version;
321
350
  } catch {
@@ -393,6 +422,114 @@ export default function (pi: ExtensionAPI) {
393
422
  },
394
423
  });
395
424
 
425
+ // --- wp_clean_skills ---
426
+ pi.registerTool({
427
+ name: 'wp_clean_skills',
428
+ label: 'WP Clean Skills',
429
+ description:
430
+ 'Detect and remove orphaned skills from a WordPress Agent Kit installation. Compares installed skills against the canonical set (upstream + custom) and reports or removes skills that are no longer part of the kit. Safe by default — use dryRun first to preview.',
431
+ promptSnippet: 'Clean up orphaned WordPress agent skills',
432
+ promptGuidelines: [
433
+ 'Use wp_clean_skills after upgrading to remove skills that are no longer part of the kit.',
434
+ 'Always run with dryRun: true first to preview what would be removed.',
435
+ 'This only removes skill directories — it does not modify AGENTS.md or other config files.',
436
+ ],
437
+ parameters: Type.Object({
438
+ targetDir: Type.Optional(
439
+ Type.String({
440
+ description: 'WordPress project directory (defaults to current working directory)',
441
+ })
442
+ ),
443
+ dryRun: Type.Optional(
444
+ Type.Boolean({
445
+ description: 'Preview changes without applying (default: true for safety)',
446
+ })
447
+ ),
448
+ remove: Type.Optional(
449
+ Type.Boolean({
450
+ description: 'Actually remove orphaned skills (default: false — report only)',
451
+ })
452
+ ),
453
+ }),
454
+ async execute(_callId, params, _signal, _onUpdate, _ctx) {
455
+ const targetDir = params.targetDir || process.cwd();
456
+ const dryRun = params.dryRun ?? true;
457
+ const remove = params.remove ?? false;
458
+
459
+ const result = await cleanSkillsApi({
460
+ targetDir,
461
+ platform: 'pi',
462
+ dryRun,
463
+ remove,
464
+ });
465
+
466
+ if (!result.success) {
467
+ return {
468
+ content: [
469
+ { type: 'text', text: `Clean failed: ${result.error?.message || 'Unknown error'}` },
470
+ ],
471
+ isError: true,
472
+ };
473
+ }
474
+
475
+ const data = result.data as {
476
+ orphanedSkills: string[];
477
+ removedSkills: string[];
478
+ legacySkillDirs: string[];
479
+ migratedSkills: string[];
480
+ dryRun: boolean;
481
+ };
482
+
483
+ const hasNoIssues = data.orphanedSkills.length === 0 && data.legacySkillDirs.length === 0;
484
+ if (hasNoIssues) {
485
+ return {
486
+ content: [
487
+ {
488
+ type: 'text',
489
+ text: '# All Clean\n\nAll installed skills match the canonical set. No orphaned or legacy skills found.',
490
+ },
491
+ ],
492
+ details: data,
493
+ };
494
+ }
495
+
496
+ const lines = [dryRun ? '# Skills Cleanup Preview (Dry Run)' : '# Skills Cleaned Up', ''];
497
+
498
+ if (data.orphanedSkills.length > 0) {
499
+ lines.push(`**Orphaned skills** (${data.orphanedSkills.length}):`);
500
+ for (const skill of data.orphanedSkills) {
501
+ lines.push(`- ${skill}`);
502
+ }
503
+ }
504
+
505
+ if (data.legacySkillDirs.length > 0) {
506
+ lines.push('', `**Legacy skill directories** (${data.legacySkillDirs.length}):`);
507
+ for (const dir of data.legacySkillDirs) {
508
+ lines.push(`- ${dir}`);
509
+ }
510
+ lines.push('These will be migrated to `.agents/skills/` and then removed.');
511
+ }
512
+
513
+ if (dryRun) {
514
+ lines.push('', 'Run with `remove: true` to clean up.');
515
+ } else {
516
+ if (data.removedSkills.length > 0) {
517
+ lines.push('', `Removed **${data.removedSkills.length}** orphaned skill(s).`);
518
+ }
519
+ if (data.migratedSkills.length > 0) {
520
+ lines.push(
521
+ `Migrated **${data.migratedSkills.length}** skill(s) from legacy directories.`
522
+ );
523
+ }
524
+ }
525
+
526
+ return {
527
+ content: [{ type: 'text', text: lines.join('\n') }],
528
+ details: data,
529
+ };
530
+ },
531
+ });
532
+
396
533
  // =========================================================================
397
534
  // Commands
398
535
  // =========================================================================
@@ -431,7 +568,15 @@ export default function (pi: ExtensionAPI) {
431
568
  `${data.isUpdate ? 'Updated' : 'Installed'} (${data.filesCreated.length} entries)`,
432
569
  'info'
433
570
  );
434
- ctx.ui.setStatus('wp-agent-kit', 'v0.3.0 installed');
571
+ const pkgVersion = (() => {
572
+ try {
573
+ return JSON.parse(fs.readFileSync(path.join(PACKAGE_ROOT, 'package.json'), 'utf-8'))
574
+ .version;
575
+ } catch {
576
+ return 'unknown';
577
+ }
578
+ })();
579
+ ctx.ui.setStatus('wp-agent-kit', `v${pkgVersion} installed`);
435
580
  },
436
581
  });
437
582
 
@@ -449,4 +594,34 @@ export default function (pi: ExtensionAPI) {
449
594
  ctx.ui.setStatus('wp-agent-kit', `${data.skillsSynced} skills`);
450
595
  },
451
596
  });
597
+
598
+ pi.registerCommand('wp-clean-skills', {
599
+ description: 'Detect and remove orphaned/legacy skills from WordPress Agent Kit',
600
+ handler: async (args, ctx) => {
601
+ const targetDir = args?.trim() || ctx.cwd;
602
+ ctx.ui.setStatus('wp-clean', 'Checking for orphaned and legacy skills...');
603
+ const result = await cleanSkillsApi({
604
+ targetDir,
605
+ platform: 'pi',
606
+ dryRun: true,
607
+ remove: false,
608
+ });
609
+ if (!result.success) {
610
+ ctx.ui.notify(`Clean failed: ${result.error?.message}`, 'error');
611
+ return;
612
+ }
613
+ const data = result.data as { orphanedSkills: string[]; legacySkillDirs: string[] };
614
+ const total = data.orphanedSkills.length + data.legacySkillDirs.length;
615
+ if (total === 0) {
616
+ ctx.ui.notify('No orphaned or legacy skills found', 'info');
617
+ } else {
618
+ const parts: string[] = [];
619
+ if (data.orphanedSkills.length > 0) parts.push(`${data.orphanedSkills.length} orphaned`);
620
+ if (data.legacySkillDirs.length > 0)
621
+ parts.push(`${data.legacySkillDirs.length} legacy dir(s)`);
622
+ ctx.ui.notify(`Found ${parts.join(', ')}`, 'info');
623
+ }
624
+ ctx.ui.setStatus('wp-clean', total === 0 ? 'clean' : `${total} issues`);
625
+ },
626
+ });
452
627
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "wordpress-agent-kit",
3
- "version": "0.3.2",
3
+ "version": "0.5.1",
4
4
  "description": "WordPress-focused AGENTS.md + Agent Skills starter kit for AI coding agents.",
5
5
  "license": "GPL-2.0-or-later",
6
6
  "author": "Kyle Brodeur <kyle@brodeur.me> (https://brodeur.me)",
@@ -31,7 +31,7 @@
31
31
  "./extensions/wp-agent-kit"
32
32
  ],
33
33
  "skills": [
34
- "./.github/skills"
34
+ "./.agents/skills"
35
35
  ]
36
36
  },
37
37
  "dependencies": {
@@ -44,28 +44,20 @@
44
44
  },
45
45
  "devDependencies": {
46
46
  "@biomejs/biome": "1.9.4",
47
- "@eslint/js": "^9.17.0",
47
+ "@earendil-works/pi-coding-agent": "^0.78.1",
48
48
  "@types/node": "^22.10.1",
49
49
  "@vitest/coverage-v8": "^2.1.8",
50
- "eslint": "^9.16.0",
51
50
  "husky": "^9.1.6",
52
- "prettier": "^3.4.1",
53
51
  "ts-node": "^10.9.2",
54
52
  "tsx": "^4.19.2",
53
+ "typebox": "*",
55
54
  "typescript": "^5.7.2",
56
- "typescript-eslint": "^8.18.0",
57
- "vitest": "^2.1.8",
58
- "@earendil-works/pi-coding-agent": "^0.78.1",
59
- "typebox": "*"
55
+ "vitest": "^2.1.8"
60
56
  },
61
57
  "scripts": {
62
58
  "dev": "tsx src/cli.ts",
63
59
  "build": "tsc",
64
60
  "check": "tsc --noEmit",
65
- "lint": "eslint src/ tests/ --fix && biome check --write .",
66
- "lint:check": "eslint src/ tests/ && biome check .",
67
- "format": "prettier --write . && biome format --write .",
68
- "format:check": "prettier --check . && biome format --check .",
69
61
  "test": "vitest",
70
62
  "test:run": "vitest run",
71
63
  "test:coverage": "vitest run --coverage",
@@ -73,6 +65,10 @@
73
65
  "sync:skills": "tsx src/cli.ts sync-skills",
74
66
  "setup": "tsx src/cli.ts setup",
75
67
  "playground": "tsx src/cli.ts playground",
76
- "build:bundles": "tsx scripts/build-bundles.ts"
68
+ "build:bundles": "tsx scripts/build-bundles.ts",
69
+ "lint": "biome check --write .",
70
+ "lint:check": "biome check .",
71
+ "format": "biome format --write .",
72
+ "format:check": "biome format --check ."
77
73
  }
78
74
  }