create-agentic-pdlc 2.3.0 → 3.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 (64) hide show
  1. package/.agentic-pdlc/hooks/pdlc-stage-gate.sh +37 -10
  2. package/.agentic-pdlc/metrics/raw/2026-W22.jsonl +114 -0
  3. package/.claude/settings.json +18 -0
  4. package/.coderabbit.yaml +35 -0
  5. package/.github/ISSUE_TEMPLATE/bug.md +53 -0
  6. package/.github/ISSUE_TEMPLATE/feature.md +54 -0
  7. package/.github/ISSUE_TEMPLATE/task.md +33 -0
  8. package/.github/workflows/add-to-board.yml +1 -1
  9. package/.github/workflows/agent-trigger.yml +4 -4
  10. package/.github/workflows/ci.yml +1 -1
  11. package/.github/workflows/npm-publish.yml +2 -2
  12. package/.github/workflows/pdlc-health-check.yml +1 -1
  13. package/.github/workflows/pdlc-stage-gate.yml +2 -2
  14. package/.github/workflows/project-automation.yml +25 -40
  15. package/AGENTS.md +50 -8
  16. package/CLAUDE.md +3 -1
  17. package/README.md +33 -32
  18. package/SETUP.md +2 -1
  19. package/adapters/claude-code/skill.md +39 -14
  20. package/adapters/hooks/pdlc-stage-gate.sh +3 -8
  21. package/bin/cli.js +555 -194
  22. package/docs/pdlc.md +5 -5
  23. package/docs/superpowers/plans/2026-05-28-jules-label-pat-split.md +240 -0
  24. package/docs/superpowers/plans/2026-05-29-agentic-pulse-rework-taxonomy.md +474 -0
  25. package/docs/superpowers/plans/2026-05-29-qa-gate-enforcement.md +354 -0
  26. package/docs/superpowers/plans/2026-06-04-spec-format-issue-template.md +160 -0
  27. package/docs/superpowers/plans/2026-06-04-two-tier-installer.md +1056 -0
  28. package/docs/superpowers/specs/2026-05-29-agentic-pulse-rework-taxonomy-design.md +122 -0
  29. package/docs/superpowers/specs/2026-06-04-spec-format-issue-template-design.md +46 -0
  30. package/package.json +2 -2
  31. package/templates/.github/ISSUE_TEMPLATE/bug.md +53 -0
  32. package/templates/.github/ISSUE_TEMPLATE/feature.md +54 -0
  33. package/templates/.github/ISSUE_TEMPLATE/task.md +33 -0
  34. package/templates/.github/workflows/add-to-board.yml +4 -4
  35. package/templates/.github/workflows/agent-trigger.yml +22 -13
  36. package/{.agentic-pdlc/templates → templates}/.github/workflows/agentic-metrics.yml +150 -27
  37. package/templates/.github/workflows/ci.yml +1 -1
  38. package/templates/.github/workflows/pdlc-health-check.yml +1 -1
  39. package/templates/.github/workflows/pdlc-stage-gate.yml +2 -2
  40. package/templates/.github/workflows/project-automation.yml +71 -32
  41. package/templates/.github/workflows/qa-agent.yml +32 -18
  42. package/templates/.github/workflows/qa-gate.yml +51 -0
  43. package/templates/full/AGENTS.md +143 -0
  44. package/templates/full/CLAUDE.md +30 -0
  45. package/templates/{docs → full/docs}/pdlc.md +4 -4
  46. package/templates/lite/AGENTS.md +121 -0
  47. package/templates/lite/CLAUDE.md +44 -0
  48. package/tests/cli.test.js +32 -0
  49. package/.agentic-pdlc/templates/.github/CODEOWNERS +0 -5
  50. package/.agentic-pdlc/templates/.github/copilot-instructions.md +0 -12
  51. package/.agentic-pdlc/templates/.github/workflows/add-to-board.yml +0 -38
  52. package/.agentic-pdlc/templates/.github/workflows/agent-trigger.yml +0 -146
  53. package/.agentic-pdlc/templates/.github/workflows/auto-approve.yml +0 -16
  54. package/.agentic-pdlc/templates/.github/workflows/ci.yml +0 -54
  55. package/.agentic-pdlc/templates/.github/workflows/pdlc-health-check.yml +0 -121
  56. package/.agentic-pdlc/templates/.github/workflows/pdlc-stage-gate.yml +0 -51
  57. package/.agentic-pdlc/templates/.github/workflows/project-automation.yml +0 -274
  58. package/.agentic-pdlc/templates/.github/workflows/protect-workflows.yml +0 -21
  59. package/.agentic-pdlc/templates/.github/workflows/qa-agent.yml +0 -128
  60. package/.agentic-pdlc/templates/AGENTS.md +0 -104
  61. package/.agentic-pdlc/templates/docs/pdlc.md +0 -123
  62. package/.github/workflows/agentic-metrics.yml +0 -422
  63. package/.github/workflows/qa-agent.yml +0 -128
  64. package/templates/AGENTS.md +0 -115
@@ -0,0 +1,122 @@
1
+ # Agentic Pulse — Rework Taxonomy with Review-Actor Attribution and Stage Correlation
2
+
3
+ **Date:** 2026-05-29
4
+ **Issue:** [#142](https://github.com/rafaeltcosta86/agentic-pdlc/issues/142)
5
+ **Status:** stage:approval — awaiting spec:approved
6
+
7
+ ## Problem
8
+
9
+ Current rework signal detects extra commit sessions but cannot distinguish cause. All rework produces the same generic recommendation: "incomplete specs or requirement changes."
10
+
11
+ Three distinct causes exist, each pointing to a different fix:
12
+
13
+ | Cause | Root stage | Fix |
14
+ |---|---|---|
15
+ | Code reviewer caught a defect | stage:development — DoD too weak | Tighten implementation checklist |
16
+ | QA agent caught a functional gap | stage:detailing — spec incomplete | Add acceptance criteria |
17
+ | Self-correction (pre-review) | Unknown | Not auto-determinable |
18
+
19
+ ## Design Decision
20
+
21
+ **Option C selected:** Review-Actor Taxonomy + Stage Correlation
22
+ - Auto-only (zero user friction)
23
+ - Actors are configurable — not locked to any specific bot
24
+ - Stage correlation provides upstream attribution when N≥3 data points available
25
+
26
+ ## Architecture
27
+
28
+ ### Files Changed
29
+
30
+ - `.github/workflows/agentic-metrics.yml`
31
+ - `templates/.github/workflows/agentic-metrics.yml` (mirror)
32
+
33
+ No new files. No new dependencies.
34
+
35
+ ### Configuration
36
+
37
+ ```yaml
38
+ env:
39
+ AGENTIC_PULSE_REVIEWERS: |
40
+ code_reviewer=gemini-code-assist[bot]
41
+ qa_agent=github-actions[bot]
42
+ ```
43
+
44
+ Format: `role=login1,login2` per line. If absent/empty → taxonomy skipped, existing behavior unchanged.
45
+
46
+ ## Detection Logic
47
+
48
+ ### Review-Actor Rework Detection
49
+
50
+ For each merged PR in the week window (up to 10 — consistent with existing rework block):
51
+
52
+ 1. Get commit timestamps (reuse existing fetch)
53
+ 2. If single commit session: skip
54
+ 3. `GET /repos/{owner}/{repo}/pulls/{pr}/reviews`
55
+ 4. For each review where `reviewer.login` is in the actor map:
56
+ - Record first review timestamp for that role
57
+ - Count commits with `timestamp > first_review_at`
58
+ - If count > 0: mark as `{role}`-triggered rework
59
+ 5. If multi-session but no configured actor review found before them: `self_correction`
60
+ 6. For reviewer-triggered PRs: extract `Closes #N` → store `{ pr_number, issue_number, role }` for stage correlation
61
+
62
+ A PR can count in multiple role buckets if multiple roles triggered rework. Total rework % = unique PRs with any rework / total PRs. Role breakdown counts per role (sum can exceed total %).
63
+
64
+ ### Stage Correlation
65
+
66
+ Load `stage:detailing` durations from `weekKey.jsonl` → `Map<issueNumber, durationDays>`
67
+
68
+ Group:
69
+ - `reviewer_rework_group`: issues linked to reviewer-triggered rework PRs with known detailing time
70
+ - `clean_group`: issues linked to PRs with zero reviewer-triggered rework (single session OR only self-correction) with known detailing time
71
+
72
+ Emit correlation signal only if both groups have N≥3. Otherwise skip.
73
+
74
+ ## Output Format
75
+
76
+ ### Rework signal (taxonomy active)
77
+
78
+ ```
79
+ 🟡 **Rework rate: 60%** — 6 de 10 PRs tiveram commits extras
80
+ ↳ Code reviewer: **4 PRs** → revisar DoD em stage:development
81
+ ↳ QA Agent: **1 PR** → spec com lacunas funcionais em stage:detailing
82
+ ↳ Self-correction: **1 PR** (causa não determinada automaticamente)
83
+ ```
84
+
85
+ ### Stage correlation signal (when N≥3 both groups)
86
+
87
+ ```
88
+ 💡 **Stage correlation:** PRs com reviewer rework tiveram Detailing médio de 0.2d vs 0.8d (N=4 vs N=6)
89
+ → Specs rápidas correlacionam com mais rework de review
90
+ ```
91
+
92
+ ### Signal levels
93
+
94
+ | Condition | Level |
95
+ |---|---|
96
+ | `code_reviewer` rework ≥ 80% of total | 🔴 |
97
+ | `code_reviewer` rework ≥ 50% of total | 🟡 |
98
+ | `qa_agent` rework > 0 | 🟡 |
99
+ | Stage correlation present | 🔵 (informational) |
100
+
101
+ ## Recommendations
102
+
103
+ | Trigger | Recommendation |
104
+ |---|---|
105
+ | `code_reviewer` dominant | Revisar Definition of Done em stage:development. Considere checklist de qualidade antes de abrir PR. |
106
+ | `qa_agent` > 0 | Spec tem lacunas funcionais. Revisar critérios de aceitação em stage:detailing. |
107
+ | Stage correlation fires (rework detailing < clean detailing) | Specs rápidas correlacionam com mais rework. Invista mais tempo em stage:detailing. |
108
+ | All self-correction | Configure AGENTIC_PULSE_REVIEWERS para attribution mais precisa. |
109
+
110
+ ## Backward Compatibility
111
+
112
+ - `AGENTIC_PULSE_REVIEWERS` absent → taxonomy skipped, no regression
113
+ - JSONL absent → correlation skipped, taxonomy still runs
114
+ - N < 3 either group → correlation skipped
115
+ - `listReviews` API error → catch, skip PR, continue
116
+
117
+ ## Out of Scope
118
+
119
+ - Manual rework classification
120
+ - Self-correction cause detection
121
+ - Changes to Stage Residence Time collection
122
+ - Changes to any other signal
@@ -0,0 +1,46 @@
1
+ # Design: ship spec-format issue template (lite)
2
+
3
+ **Issue:** #157
4
+ **Date:** 2026-06-04
5
+ **Status:** approved
6
+
7
+ ## Problem
8
+
9
+ `npx create-agentic-pdlc` copies templates to `.agentic-pdlc/templates/` — a path GitHub ignores entirely. Users who open "New Issue" after setup see a blank text box instead of the spec format template.
10
+
11
+ ## Decision
12
+
13
+ Copy `templates/.github/ISSUE_TEMPLATE/` directly to `targetDir/.github/ISSUE_TEMPLATE/` during `runSetup()` in `bin/cli.js`. No agent involvement — templates have no `{{PLACEHOLDER}}` substitution, so the CLI can write them directly.
14
+
15
+ ## Change
16
+
17
+ **File:** `bin/cli.js`
18
+
19
+ After the existing `copyDirSync(sourceTemplates, targetTemplates)` block (around line 386):
20
+
21
+ ```js
22
+ // i18n string (add to i18n object)
23
+ issue_templates_copied: t(
24
+ '✅ Issue templates copied to .github/ISSUE_TEMPLATE/',
25
+ '✅ Issue templates copiados para .github/ISSUE_TEMPLATE/',
26
+ '✅ Issue templates copiados a .github/ISSUE_TEMPLATE/'
27
+ ),
28
+
29
+ // Copy block (add inside runSetup(), after template copy)
30
+ const sourceIssueTemplates = path.join(sourceDir, 'templates', '.github', 'ISSUE_TEMPLATE');
31
+ const targetIssueTemplates = path.join(targetDir, '.github', 'ISSUE_TEMPLATE');
32
+ if (fs.existsSync(sourceIssueTemplates)) {
33
+ copyDirSync(sourceIssueTemplates, targetIssueTemplates);
34
+ console.log(i18n.issue_templates_copied);
35
+ }
36
+ ```
37
+
38
+ ## Edge Cases
39
+
40
+ - `.github/ISSUE_TEMPLATE/` already exists → `copyDirSync` overwrites. Correct — boilerplate, not user customizations.
41
+ - Source dir missing (corrupt install) → guarded by `if (fs.existsSync(...))`, skips silently.
42
+
43
+ ## Out of Scope
44
+
45
+ - Changes to template content — existing `feature.md`, `bug.md`, `task.md` already have all required sections.
46
+ - Changes to `adapters/claude-code/skill.md` — agent setup not involved.
package/package.json CHANGED
@@ -1,13 +1,13 @@
1
1
  {
2
2
  "name": "create-agentic-pdlc",
3
- "version": "2.3.0",
3
+ "version": "3.0.0",
4
4
  "description": "Agentic PDLC Framework - Conversational setup for your AI coding assistants",
5
5
  "type": "commonjs",
6
6
  "bin": {
7
7
  "create-agentic-pdlc": "./bin/cli.js"
8
8
  },
9
9
  "scripts": {
10
- "test": "echo \"Error: no test specified\" && exit 1"
10
+ "test": "node --test tests/cli.test.js"
11
11
  },
12
12
  "keywords": [
13
13
  "agentic",
@@ -0,0 +1,53 @@
1
+ ---
2
+ name: Bug
3
+ about: Broken behavior with root cause and fix criteria
4
+ title: 'bug: '
5
+ labels: type:bug
6
+ assignees: ''
7
+ ---
8
+
9
+ ## Problem
10
+
11
+ <!-- What fails. Who affected. Measured impact. -->
12
+
13
+ ## Root Cause
14
+
15
+ <!-- Why it fails. Link to code/config if known. -->
16
+
17
+ ## Reproduction Steps
18
+
19
+ 1.
20
+ 2.
21
+ 3.
22
+
23
+ **Expected:**
24
+ **Actual:**
25
+
26
+ ## Acceptance Criteria
27
+
28
+ <!-- agent fills during detailing -->
29
+
30
+ **AC1 — [name]**
31
+ - Given
32
+ - When
33
+ - Then
34
+
35
+ ## Edge Cases
36
+
37
+ <!-- agent fills during detailing -->
38
+ - EC1: [condition] → [expected behavior]
39
+
40
+ ## Out of Scope
41
+
42
+ <!-- agent fills during detailing -->
43
+ -
44
+
45
+ ## Non-Functional Requirements
46
+
47
+ <!-- agent fills during detailing — omit if pure docs/markdown -->
48
+ - Reliability: idempotent — safe to re-run
49
+
50
+ ## Files to Modify
51
+
52
+ <!-- agent fills during detailing -->
53
+ - `path/to/file` — what changes
@@ -0,0 +1,54 @@
1
+ ---
2
+ name: Feature
3
+ about: New capability with spec scaffold for detailing agent
4
+ title: 'feat: '
5
+ labels: type:feature
6
+ assignees: ''
7
+ ---
8
+
9
+ ## Problem
10
+
11
+ <!-- What fails or is missing. Who affected. Measured impact. -->
12
+
13
+ ## Sprint Goal / Success Metrics
14
+
15
+ <!-- agent fills during detailing -->
16
+
17
+ | Metric | Baseline | Target | When |
18
+ |--------|----------|--------|------|
19
+ | | | | |
20
+
21
+ ## Solution
22
+
23
+ <!-- agent fills during detailing — behavioral description, no implementation details -->
24
+
25
+ ## Acceptance Criteria
26
+
27
+ <!-- agent fills during detailing -->
28
+
29
+ **AC1 — [name]**
30
+ - Given
31
+ - When
32
+ - Then
33
+
34
+ ## Edge Cases
35
+
36
+ <!-- agent fills during detailing -->
37
+ - EC1: [condition] → [expected behavior]
38
+
39
+ ## Out of Scope
40
+
41
+ <!-- agent fills during detailing -->
42
+ -
43
+
44
+ ## Non-Functional Requirements
45
+
46
+ <!-- agent fills during detailing — omit if pure docs/markdown -->
47
+ - Performance:
48
+ - Security:
49
+ - Reliability:
50
+
51
+ ## Files to Modify
52
+
53
+ <!-- agent fills during detailing -->
54
+ - `path/to/file` — what changes
@@ -0,0 +1,33 @@
1
+ ---
2
+ name: Task
3
+ about: Defined work unit with clear done criteria
4
+ title: 'task: '
5
+ labels: type:task
6
+ assignees: ''
7
+ ---
8
+
9
+ ## Objective
10
+
11
+ <!-- What must be done and why. -->
12
+
13
+ ## Steps
14
+
15
+ <!-- agent fills during detailing -->
16
+ 1.
17
+ 2.
18
+
19
+ ## Acceptance Criteria
20
+
21
+ <!-- agent fills during detailing -->
22
+ - [ ]
23
+ - [ ]
24
+
25
+ ## Out of Scope
26
+
27
+ <!-- agent fills during detailing -->
28
+ -
29
+
30
+ ## Files to Modify
31
+
32
+ <!-- agent fills during detailing -->
33
+ - `path/to/file` — what changes
@@ -14,13 +14,13 @@ jobs:
14
14
  name: Auto-add new issue to board
15
15
  runs-on: ubuntu-latest
16
16
  env:
17
- PROJECT_PAT: ${{ secrets.PROJECT_PAT }}
17
+ PROJECT_TOKEN: ${{ secrets.PROJECT_TOKEN }}
18
18
  steps:
19
19
  - name: Add issue to project board
20
- if: ${{ env.PROJECT_PAT != '' && env.PROJECT_ID != '{{PROJECT_ID}}' }}
21
- uses: actions/github-script@v7
20
+ if: ${{ env.PROJECT_TOKEN != '' && env.PROJECT_ID != '{{PROJECT_ID}}' }}
21
+ uses: actions/github-script@v8
22
22
  with:
23
- github-token: ${{ env.PROJECT_PAT }}
23
+ github-token: ${{ env.PROJECT_TOKEN }}
24
24
  script: |
25
25
  const nodeId = context.payload.issue.node_id;
26
26
  const number = context.payload.issue.number;
@@ -17,13 +17,13 @@ jobs:
17
17
  pull-requests: write
18
18
  contents: read
19
19
  env:
20
- PROJECT_PAT: ${{ secrets.PROJECT_PAT }}
20
+ PROJECT_TOKEN: ${{ secrets.PROJECT_TOKEN }}
21
21
  PROJECT_ID: "{{PROJECT_ID}}"
22
22
  STATUS_FIELD_ID: "{{STATUS_FIELD_ID}}"
23
23
  STATUS_DEVELOPMENT: "{{ID_DEVELOPMENT}}"
24
24
  steps:
25
- - name: Update Labels
26
- uses: actions/github-script@v7
25
+ - name: Update stage labels
26
+ uses: actions/github-script@v8
27
27
  with:
28
28
  github-token: ${{ secrets.GITHUB_TOKEN }}
29
29
  script: |
@@ -41,23 +41,32 @@ jobs:
41
41
  console.log('Label stage:approval not found or could not be removed');
42
42
  }
43
43
 
44
- const agentLabel = '{{IMPLEMENTATION_AGENT_LABEL}}';
45
- const labelsToAdd = ['stage:development'];
46
- if (!agentLabel.includes('{{')) labelsToAdd.push(agentLabel, 'agent:working');
47
-
48
44
  await github.rest.issues.addLabels({
49
45
  owner,
50
46
  repo,
51
47
  issue_number,
52
- labels: labelsToAdd
48
+ labels: ['stage:development']
49
+ });
50
+
51
+ - name: Add agent label via PAT
52
+ if: ${{ env.PROJECT_TOKEN != '' && !contains('{{IMPLEMENTATION_AGENT_LABEL}}', '{{') }}
53
+ uses: actions/github-script@v8
54
+ with:
55
+ github-token: ${{ env.PROJECT_TOKEN }}
56
+ script: |
57
+ await github.rest.issues.addLabels({
58
+ owner: context.repo.owner,
59
+ repo: context.repo.repo,
60
+ issue_number: context.payload.issue.number,
61
+ labels: ['{{IMPLEMENTATION_AGENT_LABEL}}']
53
62
  });
54
63
 
55
64
  - name: Move board card to Development
56
- if: ${{ env.PROJECT_PAT != '' && env.PROJECT_ID != '{{PROJECT_ID}}' }}
65
+ if: ${{ env.PROJECT_TOKEN != '' && env.PROJECT_ID != '{{PROJECT_ID}}' }}
57
66
  continue-on-error: true
58
- uses: actions/github-script@v7
67
+ uses: actions/github-script@v8
59
68
  with:
60
- github-token: ${{ env.PROJECT_PAT }}
69
+ github-token: ${{ env.PROJECT_TOKEN }}
61
70
  script: |
62
71
  const nodeId = context.payload.issue.node_id;
63
72
  const number = context.payload.issue.number;
@@ -76,7 +85,7 @@ jobs:
76
85
 
77
86
  - name: Comment on issue to trigger agent and prevent race conditions
78
87
  if: ${{ !contains('{{IMPLEMENTATION_AGENT_LABEL}}', '{{') && vars.JULES_ENABLED == 'true' }}
79
- uses: actions/github-script@v7
88
+ uses: actions/github-script@v8
80
89
  with:
81
90
  github-token: ${{ secrets.GITHUB_TOKEN }}
82
91
  script: |
@@ -119,7 +128,7 @@ jobs:
119
128
  steps:
120
129
  - name: Comment on issue to trigger agent
121
130
  if: ${{ !contains('{{IMPLEMENTATION_AGENT_LABEL}}', '{{') && vars.JULES_ENABLED == 'true' }}
122
- uses: actions/github-script@v7
131
+ uses: actions/github-script@v8
123
132
  with:
124
133
  github-token: ${{ secrets.GITHUB_TOKEN }}
125
134
  script: |