@silverassist/agents-toolkit 2.5.1 → 2.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -77,7 +77,7 @@ AGENTS.md # Copilot Coding Agent instructions (proje
77
77
  └── skills/ # Canonical store (single source of truth)
78
78
  ├── domain-driven-design/
79
79
  ├── testing-patterns/
80
- └── ... # 9 skills total, filtered by --stack
80
+ └── ... # 13 skills total, filtered by --stack
81
81
  ```
82
82
 
83
83
  > **Skills follow the [`npx skills`](https://github.com/vercel-labs/skills) standard.** The real skill files live once in the canonical `.agents/skills/` store, and each agent's `skills/` directory contains symlinks to it — a single source of truth shared across Copilot, Claude Code, and Codex. Use `--copy` to materialize real copies instead of symlinks (e.g. on Windows without developer mode; symlinks also fall back to copies automatically when unsupported).
@@ -105,7 +105,7 @@ CLAUDE.md # Project instructions for Claude Code (pr
105
105
  └── skills/ # Canonical skills store (single source of truth)
106
106
  ├── domain-driven-design/
107
107
  ├── testing-patterns/
108
- └── ... # 9 skills total, filtered by --stack
108
+ └── ... # 13 skills total, filtered by --stack
109
109
  .claude/
110
110
  ├── commands/
111
111
  │ ├── _partials/
@@ -165,7 +165,7 @@ AGENTS.md # Project instructions for Codex (project
165
165
  └── skills/ # Canonical store (single source of truth)
166
166
  ├── domain-driven-design/
167
167
  ├── testing-patterns/
168
- └── ... # 9 skills total, filtered by --stack
168
+ └── ... # 13 skills total, filtered by --stack
169
169
  ```
170
170
 
171
171
  ### Global Install (Optional)
@@ -240,6 +240,11 @@ The same set of prompts is available for all supported tools.
240
240
  | `review-code` | Quick code review | — |
241
241
  | `fix-issues` | Fix lint/type/test errors | — |
242
242
  | `add-tests` | Add tests for components | `{target-file}` |
243
+ | `audit-ai-seo` | Audit a page for AI Search / agent-friendliness (E-E-A-T, semantic HTML, JSON-LD) | `{target-url}` |
244
+ | `new-wp-component` | Scaffold a new component in a Silver Assist WordPress plugin | `{component-name}` |
245
+ | `new-wp-plugin` | Scaffold a new Silver Assist WordPress plugin from scratch | `{plugin-name}` |
246
+ | `quality-check` | Run the full quality pipeline (PHPCS, PHPStan level 8, PHPUnit) for a WP plugin | — |
247
+ | `resolve-github-reviews` | Fetch, reply to, resolve & close PR review threads (Copilot/human) | `{pr-number}`, `{repo}` |
243
248
 
244
249
  ### Workflow Stages
245
250
 
@@ -427,12 +432,18 @@ File-type specific guidelines applied automatically by Copilot and available as
427
432
  | Instruction | Applies To | Description |
428
433
  |-------------|------------|-------------|
429
434
  | `typescript.instructions.md` | `*.ts, *.tsx` | TypeScript best practices |
435
+ | `tsdoc-standards.instructions.md` | `*.ts, *.tsx` | TSDoc (not JSDoc) doc-comment standard: allowed tags, forbidden JSDoc patterns, templates |
430
436
  | `react-components.instructions.md` | `*.tsx` | React component patterns |
431
437
  | `server-actions.instructions.md` | `**/actions/*.ts` | Next.js Server Actions |
432
438
  | `tests.instructions.md` | `*.test.ts, *.test.tsx` | Testing patterns |
439
+ | `testing-standards.instructions.md` | `tests/**/*.php` | PHPUnit testing standards for Silver Assist WordPress plugins |
433
440
  | `css-styling.instructions.md` | `*.css, *.tsx` | Tailwind CSS & shadcn/ui standards |
434
441
  | `caching.instructions.md` | `next.config.*, src/proxy.ts, src/lib/**, **/route.ts, **/page.tsx` | Next.js caching: read-vs-mutation fetch caching, ISR tiers, CDN invalidation |
435
442
  | `seo-ai-optimization.instructions.md` | `*.tsx` | Semantic HTML, accessibility tree, metadata, JSON-LD & E-E-A-T for AI Search |
443
+ | `documentation-language.instructions.md` | `**` | English-only technical content, documentation, commit and PR conventions |
444
+ | `github-workflow.instructions.md` | `**` | GitHub workflow: branch management, PRs, issues, releases, `gh` CLI |
445
+ | `php-standards.instructions.md` | `*.php` | PHP coding standards, WordPress conventions, security, type safety, i18n |
446
+ | `wordpress-plugin-architecture.instructions.md` | `*.php` | WordPress plugin architecture: LoadableInterface, PSR-4, MVC, singleton |
436
447
 
437
448
  ## Skills
438
449
 
@@ -440,10 +451,19 @@ Specialized knowledge guides for domain-specific patterns:
440
451
 
441
452
  | Skill | Description |
442
453
  |-------|-------------|
454
+ | `ai-seo-optimization` | Optimize sites for Google generative AI features, agent-friendly HTML, E-E-A-T |
443
455
  | `component-architecture` | React component patterns, folder structure, naming conventions |
456
+ | `core-review` | Whole-repo pre-review (before a PR / before pushing review fixes) run as a read-only pass — inline on Copilot/Codex, optionally a subagent on Claude Code — to preempt Copilot iterations |
457
+ | `create-component` | Scaffold a new component in a Silver Assist WordPress plugin (LoadableInterface) |
444
458
  | `domain-driven-design` | DDD principles, domain organization, barrel exports |
459
+ | `github-review-management` | Fetch, reply to, resolve & close GitHub PR review threads via `gh` CLI + GraphQL (backs `resolve-github-reviews`) |
445
460
  | `nextjs-caching` | Next.js caching strategy: read-vs-mutation fetch, ISR tiers, CDN invalidation, diagnosing dynamic-render leaks |
461
+ | `plugin-creation` | Scaffold a new Silver Assist WordPress plugin from scratch (PSR-4, LoadableInterface, CI/CD) |
462
+ | `quality-checks` | Run PHPCS, PHPStan (level 8), and PHPUnit for Silver Assist WordPress plugins |
463
+ | `release-management` | Create and manage releases for Silver Assist WordPress plugins (unified build + GH Actions) |
464
+ | `testing` | Write and run PHPUnit tests for Silver Assist WordPress plugins (`WP_UnitTestCase`) |
446
465
  | `testing-patterns` | Jest + RTL patterns for Next.js 15 and Server Actions |
466
+ | `tsdoc-standards` | Write & enforce TSDoc (not JSDoc): allowed tags, forbidden JSDoc patterns, templates, review checklist |
447
467
 
448
468
  Skills follow the [`npx skills`](https://github.com/vercel-labs/skills) standard: the real files live once in the canonical `.agents/skills/` store, and each agent's `skills/` directory symlinks to it (single source of truth, easy updates). Pass `--copy` to materialize real copies instead.
449
469
 
package/bin/cli.js CHANGED
@@ -51,7 +51,7 @@ const DEFAULT_CONFIG = {
51
51
  */
52
52
  const FILE_CATEGORIES = {
53
53
  instructions: {
54
- react: ['caching', 'css-styling', 'react-components', 'seo-ai-optimization', 'server-actions', 'tests', 'typescript'],
54
+ react: ['caching', 'css-styling', 'react-components', 'seo-ai-optimization', 'server-actions', 'tests', 'tsdoc-standards', 'typescript'],
55
55
  wordpress: ['php-standards', 'wordpress-plugin-architecture', 'testing-standards'],
56
56
  universal: ['documentation-language', 'github-workflow'],
57
57
  },
@@ -61,11 +61,11 @@ const FILE_CATEGORIES = {
61
61
  universal: [
62
62
  'analyze-ticket', 'work-ticket', 'analyze-github-issue', 'work-github-issue',
63
63
  'create-plan', 'create-pr', 'prepare-pr', 'finalize-pr',
64
- 'create-github-pr', 'finalize-github-pr',
64
+ 'create-github-pr', 'finalize-github-pr', 'resolve-github-reviews',
65
65
  'review-code', 'fix-issues', 'add-tests', 'prepare-github-release',
66
66
  ],
67
67
  jira: ['analyze-ticket', 'work-ticket', 'create-pr', 'finalize-pr'],
68
- github: ['analyze-github-issue', 'work-github-issue', 'create-github-pr', 'finalize-github-pr'],
68
+ github: ['analyze-github-issue', 'work-github-issue', 'create-github-pr', 'finalize-github-pr', 'resolve-github-reviews'],
69
69
  },
70
70
  partials: {
71
71
  react: ['release-node'],
@@ -75,9 +75,10 @@ const FILE_CATEGORIES = {
75
75
  universal: ['git-operations', 'pr-template', 'validations', 'documentation'],
76
76
  },
77
77
  skills: {
78
- react: ['component-architecture', 'nextjs-caching', 'testing-patterns'],
78
+ react: ['component-architecture', 'nextjs-caching', 'testing-patterns', 'tsdoc-standards'],
79
79
  wordpress: ['create-component', 'plugin-creation', 'quality-checks', 'testing'],
80
- universal: ['domain-driven-design', 'release-management'],
80
+ github: ['github-review-management', 'core-review'],
81
+ universal: ['domain-driven-design', 'release-management', 'github-review-management', 'core-review'],
81
82
  },
82
83
  };
83
84
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@silverassist/agents-toolkit",
3
- "version": "2.5.1",
3
+ "version": "2.6.0",
4
4
  "description": "Reusable AI agent prompts for development workflows with Jira integration — supports GitHub Copilot, Claude Code, and Codex",
5
5
  "author": "Santiago Ramirez",
6
6
  "license": "PolyForm-Noncommercial-1.0.0",
package/src/index.js CHANGED
@@ -3,7 +3,7 @@
3
3
  * @module @silverassist/agents-toolkit
4
4
  */
5
5
 
6
- export const VERSION = "2.5.1";
6
+ export const VERSION = "2.6.0";
7
7
 
8
8
  export const PROMPTS = {
9
9
  workflow: [
@@ -26,6 +26,7 @@ export const PROMPTS = {
26
26
  "new-wp-component",
27
27
  "new-wp-plugin",
28
28
  "quality-check",
29
+ "resolve-github-reviews",
29
30
  "review-code",
30
31
  ],
31
32
  };
@@ -52,6 +53,7 @@ export const INSTRUCTIONS = [
52
53
  "server-actions",
53
54
  "testing-standards",
54
55
  "tests",
56
+ "tsdoc-standards",
55
57
  "typescript",
56
58
  "wordpress-plugin-architecture",
57
59
  ];
@@ -59,14 +61,17 @@ export const INSTRUCTIONS = [
59
61
  export const SKILLS = [
60
62
  "ai-seo-optimization",
61
63
  "component-architecture",
64
+ "core-review",
62
65
  "create-component",
63
66
  "domain-driven-design",
67
+ "github-review-management",
64
68
  "nextjs-caching",
65
69
  "plugin-creation",
66
70
  "quality-checks",
67
71
  "release-management",
68
72
  "testing",
69
73
  "testing-patterns",
74
+ "tsdoc-standards",
70
75
  ];
71
76
 
72
77
  export const HOOKS = ["validate-tsx", "lint-format"];
@@ -24,7 +24,9 @@
24
24
 
25
25
  [Skills]|root:.github/skills
26
26
  |component-architecture/SKILL.md → Component design patterns
27
+ |core-review/SKILL.md → Whole-repo pre-review (inline read-only pass) to preempt Copilot iterations
27
28
  |domain-driven-design/SKILL.md → DDD principles and structure
29
+ |github-review-management/SKILL.md → Resolve GitHub PR review threads (gh + GraphQL)
28
30
  |testing-patterns/SKILL.md → Testing strategies and patterns
29
31
  ```
30
32
 
@@ -19,15 +19,19 @@
19
19
  |seo-ai-optimization.instructions.md → Semantic HTML, a11y tree, metadata, JSON-LD for AI Search
20
20
  |server-actions.instructions.md → Server action patterns, validation, error handling
21
21
  |tests.instructions.md → Test structure, mocking, assertions
22
- |typescript.instructions.md Type safety, destructuring, JSDoc
22
+ |tsdoc-standards.instructions.md TSDoc doc comments (not JSDoc): allowed tags, forbidden patterns, templates
23
+ |typescript.instructions.md → Type safety, destructuring, doc comments
23
24
 
24
25
  [Prompts]|root:.github/prompts
25
- |add-tests,analyze-ticket,create-plan,create-pr,finalize-pr,fix-issues,prepare-pr,review-code,work-ticket
26
+ |add-tests,analyze-ticket,create-plan,create-pr,finalize-pr,fix-issues,prepare-pr,resolve-github-reviews,review-code,work-ticket
26
27
 
27
28
  [Skills]|root:.github/skills
28
- |component-architecture/SKILL.md → Component design patterns
29
- |domain-driven-design/SKILL.md DDD principles and structure
30
- |testing-patterns/SKILL.md Testing strategies and patterns
29
+ |component-architecture/SKILL.md → Component design patterns
30
+ |core-review/SKILL.md Whole-repo pre-review (read-only pass, inline on Copilot) to preempt Copilot iterations
31
+ |domain-driven-design/SKILL.md DDD principles and structure
32
+ |github-review-management/SKILL.md → Resolve GitHub PR review threads (gh + GraphQL)
33
+ |testing-patterns/SKILL.md → Testing strategies and patterns
34
+ |tsdoc-standards/SKILL.md → TSDoc doc comments (not JSDoc)
31
35
  ```
32
36
 
33
37
  ---
@@ -0,0 +1,182 @@
1
+ ---
2
+ description: TSDoc documentation standard (not JSDoc) for TypeScript — allowed tags, forbidden JSDoc patterns, and comment templates
3
+ name: TSDoc Standards
4
+ applyTo: "**/*.{ts,tsx}"
5
+ ---
6
+
7
+ # TSDoc Standards
8
+
9
+ All documentation comments in this project follow the **TSDoc** standard (not JSDoc).
10
+
11
+ ---
12
+
13
+ ## Core Rules
14
+
15
+ ### 1. No type annotations in `@param` or `@returns`
16
+
17
+ ```typescript
18
+ // ❌ JSDoc style — FORBIDDEN
19
+ /** @param {string} name - The user's name */
20
+ /** @returns {boolean} True if valid */
21
+
22
+ // ✅ TSDoc style — CORRECT
23
+ /** @param name - The user's name */
24
+ /** @returns True if valid */
25
+ ```
26
+
27
+ ### 2. Use `@typeParam` for generics (not `@template`)
28
+
29
+ ```typescript
30
+ // ❌ FORBIDDEN
31
+ /** @template T - The item type */
32
+
33
+ // ✅ CORRECT
34
+ /** @typeParam T - The item type */
35
+ ```
36
+
37
+ ### 3. Use `@packageDocumentation` for file headers (not `@module`)
38
+
39
+ ```typescript
40
+ // ❌ FORBIDDEN
41
+ /** @module lib/ccds/client */
42
+
43
+ // ✅ CORRECT
44
+ /**
45
+ * @packageDocumentation
46
+ * Base client for making requests to the CCDS API.
47
+ */
48
+ ```
49
+
50
+ ### 4. Document interface members inline (not `@property`)
51
+
52
+ ```typescript
53
+ // ❌ FORBIDDEN
54
+ /**
55
+ * @property {string} name - The community name
56
+ * @property {string} city - The city
57
+ */
58
+ interface Community { name: string; city: string; }
59
+
60
+ // ✅ CORRECT
61
+ interface Community {
62
+ /** The community name. */
63
+ name: string;
64
+ /** The city where the community is located. */
65
+ city: string;
66
+ }
67
+ ```
68
+
69
+ ---
70
+
71
+ ## Allowed TSDoc Tags
72
+
73
+ | Tag | Format | Usage |
74
+ |-----|--------|-------|
75
+ | `@param` | `@param name - Description` | Function parameter (hyphen required) |
76
+ | `@returns` | `@returns Description` | Return value (no type braces) |
77
+ | `@remarks` | Block | Extended description, side effects |
78
+ | `@example` | Block | Code example with fenced ` ```typescript ``` ` |
79
+ | `@throws` | Block | Documented exceptions |
80
+ | `@see` | Block | References to other symbols or URLs |
81
+ | `@deprecated` | Block | Mark deprecated with migration guidance |
82
+ | `@defaultValue` | Block | Default value of a property |
83
+ | `@typeParam` | `@typeParam T - Description` | Generic type parameter |
84
+ | `@packageDocumentation` | Modifier | Module-level doc (first comment in file) |
85
+ | `{@link symbol}` | Inline | Hyperlink to a symbol |
86
+
87
+ > **Note:** `@param` and `@returns` are optional — add them when they genuinely add clarity
88
+ > (e.g., non-obvious parameters, complex return shapes). Do NOT add them to interfaces,
89
+ > types, or constants.
90
+
91
+ ---
92
+
93
+ ## Comment Patterns
94
+
95
+ ### Server Action
96
+
97
+ ````typescript
98
+ /**
99
+ * Submits the contact form and sends a notification email.
100
+ *
101
+ * @remarks
102
+ * Validates server-side, creates a DB record, dispatches email.
103
+ *
104
+ * @param formData - Submitted form data from the contact page
105
+ *
106
+ * @throws When the email service is unavailable
107
+ */
108
+ export async function submitContactForm(formData: FormData): Promise<void> {}
109
+ ````
110
+
111
+ ### React Component
112
+
113
+ ````typescript
114
+ /**
115
+ * Renders a responsive community card with name and location.
116
+ *
117
+ * @returns The community card JSX element
118
+ *
119
+ * @example
120
+ * ```tsx
121
+ * <CommunityCard community={community} className="mt-4" />
122
+ * ```
123
+ */
124
+ export function CommunityCard({ community, className }: CommunityCardProps) {
125
+ return <article className={className}>{community.name}</article>;
126
+ }
127
+ ````
128
+
129
+ ### Utility Function
130
+
131
+ ````typescript
132
+ /**
133
+ * Formats a date string for display.
134
+ *
135
+ * @param dateString - ISO 8601 date string
136
+ * @returns Human-readable date (e.g., "January 15, 2025")
137
+ *
138
+ * @example
139
+ * ```typescript
140
+ * formatDate("2025-01-15"); // "January 15, 2025"
141
+ * ```
142
+ */
143
+ export function formatDate(dateString: string): string {
144
+ return new Date(dateString).toLocaleDateString("en-US", { dateStyle: "long" });
145
+ }
146
+ ````
147
+
148
+ ### File Header
149
+
150
+ ```typescript
151
+ /**
152
+ * @packageDocumentation
153
+ * CCDS geo-search utilities for state, city, and community lookups.
154
+ */
155
+ ```
156
+
157
+ ---
158
+
159
+ ## Forbidden Patterns
160
+
161
+ ```typescript
162
+ // ❌ Type braces in @param
163
+ /** @param {string} name - Description */
164
+
165
+ // ❌ Type braces in @returns
166
+ /** @returns {boolean} True if valid */
167
+
168
+ // ❌ @template (use @typeParam)
169
+ /** @template T - The type */
170
+
171
+ // ❌ @module (use @packageDocumentation)
172
+ /** @module path/to/module */
173
+
174
+ // ❌ @fileoverview (not a TSDoc tag)
175
+ /** @fileoverview Description */
176
+
177
+ // ❌ @typedef, @callback, @type (use TypeScript types instead)
178
+ /** @typedef {Object} MyType */
179
+
180
+ // ❌ @function, @async, @class, @enum (redundant with TypeScript)
181
+ /** @function myFunction */
182
+ ```
@@ -23,18 +23,30 @@ prompts/
23
23
  │ ├── documentation.md # Documentation standards
24
24
  │ └── pr-template.md # Pull request templates
25
25
 
26
- ├── # Workflow Prompts (Main Flow)
27
- ├── analyze-ticket.prompt.md # 1. Analyze a Jira ticket
28
- ├── create-plan.prompt.md # 2. Create implementation plan
29
- ├── work-ticket.prompt.md # 3. Start working on a ticket
30
- ├── prepare-pr.prompt.md # 4. Prepare code for PR
31
- ├── create-pr.prompt.md # 5. Create a pull request
32
- ├── finalize-pr.prompt.md # 6. Finalize and merge PR
26
+ ├── # Workflow Prompts
27
+ ├── analyze-ticket.prompt.md # Analyze a Jira ticket
28
+ ├── analyze-github-issue.prompt.md # Analyze a GitHub issue
29
+ ├── create-plan.prompt.md # Create implementation plan
30
+ ├── work-ticket.prompt.md # Start working on a Jira ticket
31
+ ├── work-github-issue.prompt.md # Start working on a GitHub issue
32
+ ├── prepare-pr.prompt.md # Prepare code for PR
33
+ ├── create-pr.prompt.md # Create a pull request (Jira)
34
+ ├── create-github-pr.prompt.md # Create a pull request (GitHub)
35
+ ├── finalize-pr.prompt.md # Finalize and merge PR (Jira)
36
+ ├── finalize-github-pr.prompt.md # Finalize and merge PR (GitHub)
37
+ ├── prepare-github-release.prompt.md # Prepare a GitHub release
33
38
 
34
39
  ├── # Utility Prompts
35
- ├── review-code.prompt.md # Quick code review
36
- ├── fix-issues.prompt.md # Fix lint/type/test errors
37
- └── add-tests.prompt.md # Add tests for components
40
+ ├── review-code.prompt.md # Quick code review
41
+ ├── fix-issues.prompt.md # Fix lint/type/test errors
42
+ ├── add-tests.prompt.md # Add tests for components
43
+ ├── audit-ai-seo.prompt.md # Audit a page for AI Search / agent-friendliness
44
+ ├── resolve-github-reviews.prompt.md # Fetch/reply/resolve GitHub PR review threads
45
+
46
+ └── # WordPress Prompts
47
+ ├── new-wp-component.prompt.md # Scaffold a WordPress plugin component
48
+ ├── new-wp-plugin.prompt.md # Scaffold a WordPress plugin
49
+ └── quality-check.prompt.md # Run PHPCS / PHPStan / PHPUnit
38
50
  ```
39
51
 
40
52
  ## Workflow Stages
@@ -62,13 +62,57 @@ npm run build --if-present
62
62
 
63
63
  Fix any issues before proceeding.
64
64
 
65
- ### 5. Push Branch
65
+ ### 5. Pre-PR core review (whole repo)
66
+
67
+ **First, remove the planning document** created by `work-github-issue` (e.g.
68
+ `docs/{feature-name}-plan.md`) — it has served its purpose. Deleting it now, **at PR creation
69
+ (not at finalization)**, keeps it out of the base branch instead of accumulating in `docs/` after
70
+ the merge. Do this **before** the review below, so the pass covers the *final* branch state and
71
+ catches any now-stale reference to the removed file (links, indexes, mentions):
72
+
73
+ ```bash
74
+ # Remove it only if it exists — a missing file is fine, but a real `git rm` error
75
+ # (permissions, path typo) must surface, so do not blanket-mask with `|| true`.
76
+ if [ -f docs/{feature-name}-plan.md ]; then
77
+ git rm docs/{feature-name}-plan.md
78
+ fi
79
+ ```
80
+
81
+ Now run a **whole-repo** consistency review to catch the doc↔code drift, invalid code examples,
82
+ broken links, and stale indexes that otherwise trigger multi-round Copilot reviews. Review the
83
+ whole repo — not just the diff — because Copilot re-reviews entire files.
84
+
85
+ Run the **`core-review` skill** (`.agents/skills/core-review/SKILL.md`) as a dedicated,
86
+ read-only review pass. It works on every agent — only the mechanism differs (subagents are a
87
+ Claude-Code-only optimization, not a requirement):
88
+
89
+ - **GitHub Copilot / Codex** — no subagents; run the checklist **inline as a distinct pass** over
90
+ the **whole repository** (not just the diff), producing the prioritized findings list.
91
+ - **Claude Code** — optionally delegate to a read-only subagent (`Explore` / `general-purpose`)
92
+ with the brief "review the whole repo against the core-review checklist; report
93
+ `severity | file:line | problem | suggested fix`; do not edit files."
94
+
95
+ Apply every `critical` and `warning` finding — including any stale reference exposed by removing
96
+ the planning doc — re-run the checks from Step 4, then **commit the fixes and the doc removal and
97
+ confirm a clean worktree** (`git status`) so they are included in the push. **Re-review until the
98
+ pass reports zero findings** before continuing. See the skill for the full checklist.
99
+
100
+ ```bash
101
+ # No `|| true`: a failed commit (hooks, signing, identity) must stop the flow, not be masked —
102
+ # otherwise Step 6 would push without the planning-doc removal or the review fixes.
103
+ git commit -m "docs: Remove planning doc for #{issue-number} ahead of PR (+ review fixes)"
104
+
105
+ # The worktree must be clean before pushing — this must print nothing.
106
+ git status --porcelain
107
+ ```
108
+
109
+ ### 6. Push Branch
66
110
 
67
111
  ```bash
68
112
  git push -u origin $(git branch --show-current)
69
113
  ```
70
114
 
71
- ### 6. Create Pull Request
115
+ ### 7. Create Pull Request
72
116
 
73
117
  #### PR Title
74
118
  ```
@@ -133,7 +177,7 @@ EOF
133
177
  - **Target**: `<base-branch>` resolved from `.agents-toolkit.json` (fallback: `main`)
134
178
  - **Reviewers**: Based on changed files
135
179
 
136
- ### 7. Comment on GitHub Issue
180
+ ### 8. Comment on GitHub Issue
137
181
 
138
182
  Add a comment linking to the PR:
139
183
 
@@ -46,6 +46,12 @@ gh pr review --request-changes --body "..." | cat
46
46
  gh pr review --approve | cat
47
47
  ```
48
48
 
49
+ > **Before pushing any fix commit**, run a **whole-repo core review** (not just the changed
50
+ > files) using the **`core-review` skill** (`.agents/skills/core-review/SKILL.md`) as a dedicated
51
+ > read-only pass (inline on Copilot/Codex; optionally a subagent on Claude Code). Apply everything
52
+ > it flags first — pushing an adjacent, unfixed issue only starts a fresh Copilot round. For the
53
+ > full fetch → reply → resolve loop, use the `resolve-github-reviews` prompt.
54
+
49
55
  ### 3. Sync with Base Branch
50
56
 
51
57
  ```bash
@@ -124,6 +130,6 @@ gh issue close {issue-number} --comment "Completed in PR #<pr-number>." | cat
124
130
 
125
131
  ### 8. Clean Up
126
132
 
127
- - [ ] Delete temporary planning docs from `docs/` (if applicable)
133
+ - [ ] Planning docs were removed at **PR creation** (see `create-github-pr`) — verify none linger in `docs/`
128
134
  - [ ] Ensure final documentation is complete
129
135
  - [ ] Verify commit history is clean