create-agentic-pdlc 2.1.0 β†’ 2.1.2

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
@@ -1,88 +1,81 @@
1
1
  # πŸ€– Agentic PDLC Framework
2
2
 
3
- [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
4
- [![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square)](http://makeapullrequest.com)
5
-
6
- > **Stop fighting your AI agents. Give them structure.**
7
-
8
- **Agentic PDLC** is a lightweight, zero-dependency boilerplate that transforms chaotic AI coding into a deterministic, automated software assembly line.
3
+ > Do your AI agents build features that don't match the spec?
4
+ > Do you find bugs and architecture violations only at the end of the lifecycle?
5
+ > Are you the one manually moving cards across your board β€” every single time?
9
6
 
10
- It standardizes how your AI assistants (Claude, Cursor, Copilot, Jules) interpret tasks, respect invariants, and collaborate seamlessly from an idea to production.
7
+ **Agentic PDLC** gives your agents a shared rulebook, a self-moving board, and a CI that won't let broken code reach production. One `npx` command to set up.
11
8
 
12
9
  <div align="center">
13
10
  <img src=".github/assets/agentic-pdlc-flow.svg" alt="Agentic PDLC Architecture Flow" width="100%">
14
11
  </div>
15
12
 
13
+ Solo devs and small teams hit the same wall: one agent writes the spec, another implements it differently, a third reviews without knowing either. Agentic PDLC gives all of them a shared brief, automates the board, and puts a CI guard between your agents and production.
14
+
16
15
  ---
17
16
 
18
- ## ⚑ Why you need this
17
+ ## ⚑ Why it works
18
+
19
+ - πŸ—ΊοΈ **A transparent lifecycle** β€” Every feature travels a Kanban board from Idea to Production. You always know where things are.
20
+ - πŸ€– **A board that moves itself** β€” When you approve a spec, the card moves. When an agent opens a PR, the card moves. You just approve or reject.
21
+ - 🧠 **Agents that agree with each other** β€” One briefing (`AGENTS.md`), read by every agent. Claude, Jules, Gemini β€” all pulling in the same direction, without you copy-pasting context between tabs.
22
+ - πŸ›‘οΈ **Code that can't silently break production** β€” A CI auditor checks every PR for architecture violations before anything reaches your main branch. *(Maturity Model β€” coming soon)*
23
+
24
+ ---
25
+
26
+ ## πŸš€ Quick Start
27
+
28
+ Run this in the root of your project:
29
+
30
+ ```bash
31
+ npx create-agentic-pdlc
32
+ ```
19
33
 
20
- - 🧠 **One Contract to Rule Them All**: `AGENTS.md` is your single source of truth. Stop repeating yourself; let every AI read the same invariants.
21
- - πŸ€– **Automated Handoffs**: Move cards across your GitHub board with labels. Brainstorm with Claude upstream, let Jules code downstream.
22
- - πŸš€ **Interactive Setup**: Run one `npx` command and let your favorite AI assistant scaffold the framework into your project interactively.
23
- - πŸ“ˆ **Maturity Model**: A clear path from structured (Level 1) to semi-autonomous (Level 3) development. [Read the Agentic Maturity Model](docs/maturity-model.md).
34
+ The CLI sets up your GitHub board, labels, and workflows, then hands over to your AI assistant to finish the configuration interactively. No YAML editing. No manual config.
24
35
 
25
36
  ---
26
37
 
27
- ## πŸ—οΈ How It Works: The Two Scopes
38
+ ## πŸ—οΈ How It Works
28
39
 
29
- The Agentic PDLC bridges the gap between high-level human ideas and deterministic AI execution. It splits the workflow into two clear phases:
40
+ The framework splits work into two phases:
30
41
 
31
- ### 🌊 1. Upstream (Idea β†’ Spec)
32
- You use conversational AI (e.g., **Claude Code**, **Cursor Chat**) as your brainstorming partner. Together, you flesh out user stories, acceptance criteria, and technical specifications until they are rock solid.
42
+ ### 1. You + AI: Idea β†’ Spec
43
+ Use conversational AI (e.g., **Claude Code**, **Gemini CLI**) as your brainstorming partner. Together, you flesh out user stories, acceptance criteria, and technical specifications until they are solid.
33
44
 
34
- ### 🏭 2. Downstream (Spec β†’ Production)
35
- Once the spec is approved, autonomous implementation agents (e.g., **Jules**, **Sweep**, **Copilot Workspace**) pick up the task via an automated GitHub Project board flow. They execute the deterministic specs while being strictly governed by your project's invariants.
45
+ ### 2. Your agents: Spec β†’ Production
46
+ Once you approve the spec, autonomous implementation agents (e.g., **Jules**, **Sweep**, **Copilot Workspace**) pick up the task. The board moves automatically; the CI auditor guards the main branch.
36
47
 
37
48
  ---
38
49
 
39
- ## 🀝 Universal Multi-Assistant Support
50
+ ## 🀝 Works with every AI assistant
40
51
 
41
- The framework relies on a universal source of truth (`AGENTS.md`), but uses elegant adapters to teach specific AI platforms how to read them.
52
+ One shared brief (`AGENTS.md`). Every agent reads it.
42
53
 
43
54
  | AI Assistant | Instruction File | How it Integrates |
44
55
  |:---|:---|:---|
45
56
  | **Claude Code** | `CLAUDE.md` + Claude Skill | Uses `adapters/claude-code/skill.md` *(Includes Auto-Setup Mode)* |
57
+ | **Gemini CLI** | `AGENTS.md` | Reads the rulebook natively |
46
58
  | **Cursor** | `.cursor/rules/*.md` | Uses `adapters/cursor/rules.md` |
47
59
  | **GitHub Copilot** | `.github/copilot-instructions.md` | Uses `templates/.github/copilot-instructions.md` |
48
- | **Codex / Antigravity** | `AGENTS.md` | Reads the contract natively |
49
-
50
- *No matter which AI you pair with, they will all share the exact same context.*
60
+ | **Codex / Antigravity** | `AGENTS.md` | Reads the rulebook natively |
51
61
 
52
62
  ---
53
63
 
54
- ## πŸ“‚ Expected Structure
64
+ ## πŸ“¦ What you get
55
65
 
56
- Once initialized in your project, the framework provides the following layout:
66
+ After setup, your project has:
57
67
 
58
- ```text
59
- your-project/
60
- β”œβ”€β”€ AGENTS.md ← The universal contract mapping rules to any AI.
61
- β”œβ”€β”€ docs/
62
- β”‚ └── pdlc.md ← The PDLC pipeline defining board columns and IDs.
63
- └── .github/
64
- └── workflows/
65
- β”œβ”€β”€ project-automation.yml ← Automates GitHub Project card movement.
66
- β”œβ”€β”€ agent-trigger.yml ← Wakes up your agent upon `spec:approved`.
67
- └── ci.yml ← The Sentinel enforcing invariants and tests.
68
- ```
68
+ - **`AGENTS.md`** β€” The shared brief every agent reads. Your rules, once.
69
+ - **`docs/pdlc.md`** β€” Your pipeline map: board columns, IDs, and who does what.
70
+ - **`.github/workflows/`** β€” Three automations: board moves itself, agent wakes on spec approval, CI audits every PR.
69
71
 
70
72
  ---
71
73
 
72
- ## πŸš€ Quick Start
73
-
74
- Ready to build at the speed of thought? Scaffold the entire framework interactively without copy-pasting code!
75
-
76
- Simply run our installer in the root of your project:
77
-
78
- ```bash
79
- npx create-agentic-pdlc
80
- ```
74
+ ## ❀️ Contributing
81
75
 
82
- > **πŸ’‘ How it works:** The CLI acts as a bridge. It asks which AI assistant you prefer (e.g., Claude Code, Cursor), drops the required system instructions into your workspace, and hands control over to your AI. Your AI will then chat with you to customize your framework!
76
+ We welcome improvements from solo founders and AI engineers! Please check our **[Contributing Guidelines](CONTRIBUTING.md)** on how to submit PRs, add new AI platform adapters, or improve the documentation.
83
77
 
84
78
  ---
85
79
 
86
- ## ❀️ Contributing
87
-
88
- We welcome improvements from other solo-founders and AI-engineers! Please check our **[Contributing Guidelines](CONTRIBUTING.md)** on how to submit PRs, add new AI platform adapters, or improve the documentation.
80
+ [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
81
+ [![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square)](http://makeapullrequest.com)
@@ -25,6 +25,7 @@ If any of these files are missing, you are in **Setup Mode**. Do not proceed wit
25
25
  3. **Pre-filled Context:** Before asking any questions, read the following files if they exist:
26
26
  - `.agentic-pdlc/cli-context.json` β€” written by the CLI. Contains `projectName`, `repoOwner`, `repoName`. Use these values directly and skip the corresponding questions.
27
27
  - `.agentic-pdlc/templates/docs/pdlc.md` β€” the CLI pre-fills PROJECT_ID, STATUS_FIELD_ID, REPO_OWNER, REPO_NAME, and all 9 column option IDs. If none of the values still contain `{{...}}` placeholders, skip the entire Board IDs question group.
28
+ - `.agentic-pdlc/templates/.github/workflows/project-automation.yml` β€” the CLI also pre-fills all ID placeholders here. When writing the workflow file, the remaining `{{...}}` placeholders are only non-ID ones (project name, commands, etc.).
28
29
  4. Interactively ask the user only for the **missing values**, **one group at a time**:
29
30
  - **Project basics:** Project Name (skip if present in `cli-context.json`), Description, Technical Stack/Structure. **Do not ask for GitHub Username** β€” use `repoOwner` from `cli-context.json` directly for CODEOWNERS.
30
31
  - **Commands:** In the user's detected language, ask for each command with its purpose and concrete examples:
@@ -33,23 +34,37 @@ If any of these files are missing, you are in **Setup Mode**. Do not proceed wit
33
34
  - **Build command** β€” the command that compiles or bundles the project (e.g. `npm run build`, `tsc`, `go build ./...`, `./gradlew build`) β€” reply "none" if not applicable.
34
35
  - **Invariants:** Critical business rules agents must never violate (e.g. Human-in-the-loop).
35
36
  - **Board IDs:** Skip entirely if `.agentic-pdlc/templates/docs/pdlc.md` is already pre-filled (no `{{...}}` placeholders). Only ask if placeholders remain.
36
- - **Auditoria de Arquitetura (CI):** Pergunta: *"Seu projeto usa auditoria automatizada de arquitetura (CI job que cria issues com a label `architecture-violation`)?"* Apresente as opΓ§Γ΅es:
37
- - a) **NΓ£o uso, mas quero configurar** β€” *Deixa o pipeline CI/CD mais robusto via Gemini Code Assist.* β†’ Guia o usuΓ‘rio na configuraΓ§Γ£o.
38
- - b) **NΓ£o agora** β€” *Deixa comentado para ativar em outro momento.* β†’ Job permanece comentado no `project-automation.yml`.
39
- - c) **Sim, ativar** β€” *Descomenta o job `move-violation-to-board` no `project-automation.yml`.* β†’ Ativa imediatamente.
40
- - **QA Agent:** Pergunta: *"Quer usar um agente de QA para verificar os PRs automaticamente antes do Code Review?"* Apresente as opΓ§Γ΅es:
41
- - a) **NΓ£o (Variant A)** β€” *PRs vΓ£o direto para Code Review. PadrΓ£o e mais simples.*
42
- - b) **Sim (Variant B), mas preciso de ajuda pra configurar** β€” *PRs passam por um Agente de QA antes de serem revisados. Requer um QA Agent (ex: QAWolf).* β†’ Guia o usuΓ‘rio na configuraΓ§Γ£o.
43
- - c) **Sim (Variant B), jΓ‘ tenho configurado** β€” *PRs passam por um Agente de QA antes de serem revisados.* β†’ Ativa Variant B imediatamente: muda `STATUS_CODE_REVIEW_PR` para `STATUS_TESTING` no job `move-card-on-pr-open` e descomenta o job `move-card-on-qa-pass` no `project-automation.yml`.
44
- - **Agente de implementaΓ§Γ£o:** Pergunta: *"Usa um agente de implementaΓ§Γ£o autΓ΄nomo? (Ele implementa as features que vocΓͺ aprova para desenvolvimento)"* Apresente as opΓ§Γ΅es:
45
- - a) **NΓ£o** β€” *Sem agente de implementaΓ§Γ£o autΓ΄nomo.*
46
- - b) **@google-labs-jules** β€” *Jules (recomendado caso nΓ£o tenha nenhum).*
47
- - c) **Outro** β€” *Digite o handle do agente.*
37
+ - **Architecture Audit (CI):** Ask: *"Does your project use automated architecture auditing (a CI job that creates issues with the `architecture-violation` label)?"* Present the options:
38
+ - a) **I don't use it, but I want to configure it** β€” *Makes the CI/CD pipeline more robust via Gemini Code Assist.* β†’ Guide the user through configuration.
39
+ - b) **Not now** β€” *Leave it commented to activate later.* β†’ Job remains commented in `project-automation.yml`.
40
+ - c) **Yes, activate** β€” *Uncomment the `move-violation-to-board` job in `project-automation.yml`.* β†’ Activate immediately.
41
+ - **QA Agent:** Ask: *"Do you want to use a QA agent to verify PRs automatically before Code Review?"* Present the options:
42
+ - a) **No (Variant A)** β€” *PRs go straight to Code Review. Standard and simpler.*
43
+ - b) **Yes (Variant B), but I need help configuring it** β€” *PRs pass through a QA Agent before being reviewed. Requires a QA Agent (e.g., QAWolf).* β†’ Guide the user through configuration.
44
+ - c) **Yes (Variant B), I already have it configured** β€” *PRs pass through a QA Agent before being reviewed.* β†’ Activate Variant B immediately: change `STATUS_CODE_REVIEW_PR` to `STATUS_TESTING` in the `move-card-on-pr-open` job and uncomment the `move-card-on-qa-pass` job in `project-automation.yml`.
45
+ - **Implementation Agent:** Ask: *"Do you use an autonomous implementation agent? (It implements the features you approve for development)"* Present the options:
46
+ - a) **No** β€” *No autonomous implementation agent.*
47
+ - b) **@google-labs-jules** β€” *Jules (recommended if you don't have one).*
48
+ - c) **Other** β€” *Enter the agent's handle.*
48
49
  5. Generate and write the missing files replacing the `{{SCREAMING_SNAKE_CASE}}` placeholders using the templates in `.agentic-pdlc/templates/`.
49
50
  6. Offer to run the `gh` commands for labels (`spec:approved`, `pr:in-review`, `pr:approved`, `architecture-violation`).
50
- 7. **IMPORTANTE:** Delete this setup prompt file (`.agentic-setup.md`, `.agentic-setup-prompt.md`, or `.agentic-pdlc/SETUP_PROMPT.md`) using only `rm <arquivo>` β€” **do NOT run `git add` or any other git command**. This file was never committed and does not exist in the git index. Delete it **before** the commit step so it is never accidentally included in the repository history.
51
- 8. Commit everything with the message: `chore: setup agentic-pdlc framework`.
52
- 9. Conclude Setup Mode.
51
+ 7. **Set up the `PROJECT_PAT` secret (required for board automation):**
52
+ The board automation workflows need a GitHub Personal Access Token (classic) with `project` scope. Without it, all board card movements will silently skip β€” no error, no cards moving.
53
+ - Go to: **github.com/settings/tokens** β†’ *Generate new token (classic)*
54
+ - Select scopes: βœ… `repo` + βœ… `project`
55
+ - Copy the token, then run:
56
+ ```
57
+ gh secret set PROJECT_PAT --body "<your-token>"
58
+ ```
59
+ Wait for the user to confirm the secret is set before continuing.
60
+ 8. **IMPORTANT:** Delete the setup prompt file by running exactly:
61
+ ```
62
+ rm -f .agentic-setup.md .agentic-setup-prompt.md .agentic-pdlc/SETUP_PROMPT.md
63
+ ```
64
+ **Do NOT run `git add` or any other git command.** These files were never committed and do not exist in the git index. This command must run **before** the commit step.
65
+ 9. Commit everything with the message: `chore: setup agentic-pdlc framework`.
66
+ 10. Conclude Setup Mode. Read `projectNumber` from `.agentic-pdlc/cli-context.json` and show the user their board URL:
67
+ `https://github.com/users/{repoOwner}/projects/{projectNumber}/views/1?layout=board`
53
68
 
54
69
  ---
55
70
 
@@ -57,6 +72,18 @@ If any of these files are missing, you are in **Setup Mode**. Do not proceed wit
57
72
 
58
73
  If `AGENTS.md` and `docs/pdlc.md` are present, you are in **Execution Mode**.
59
74
 
75
+ ### 0. Board Labels β€” Mandatory at Every State Transition
76
+
77
+ These label commands are non-negotiable. They run **before** the activity they announce β€” before reading code, before invoking any skill, before any other action.
78
+
79
+ | When | Command |
80
+ |---|---|
81
+ | Before reading any code / invoking any skill | `gh issue edit <N> --add-label "stage:exploration"` |
82
+ | Before presenting architecture approaches | `gh issue edit <N> --add-label "stage:brainstorming" --remove-label "stage:exploration"` |
83
+ | Before writing the technical spec | `gh issue edit <N> --add-label "stage:detailing" --remove-label "stage:brainstorming"` |
84
+
85
+ No investigation, no skill invocation, no code reading happens before `stage:exploration` is applied. No architecture presentation starts before `stage:brainstorming` is set (and `stage:exploration` removed). No spec writing starts before `stage:detailing` is set (and `stage:brainstorming` removed).
86
+
60
87
  ### 1. Daily Upstream Loop
61
88
  Your job is to move issues from "Idea" to "Detail Solution".
62
89
  When asked to work on a feature, you will:
@@ -83,7 +110,4 @@ Once approved, you will detail the solution directly into the GitHub Issue body.
83
110
  Do not write code for downstream features! Your goal is to refine the Spec, so the human Tech Lead can label the issue `spec:approved`. This label triggers the downstream agent via `agent-trigger.yml`.
84
111
 
85
112
  ### 4. Moving the Board (Upstream States)
86
- As you actively work with the user advancing the feature, you MUST use the GitHub CLI to update internal state labels. This triggers GitHub Actions behind the scenes.
87
- - Starting context evaluation: Run `gh issue edit <N> --add-label "stage:exploration"`
88
- - Presenting architecture/approaches: Run `gh issue edit <N> --add-label "stage:brainstorming"`
89
- - Starting to write the technical spec: Run `gh issue edit <N> --add-label "stage:detailing"`
113
+ See **Section 0** above for the mandatory label commands at each state transition.
package/bin/cli.js CHANGED
@@ -197,7 +197,7 @@ async function runSetup() {
197
197
 
198
198
  // Project V2
199
199
  console.log(`\n${cyan}${i18n.creating_project}${reset}`);
200
- let ownerId, projectId;
200
+ let ownerId, projectId, projectNumber;
201
201
  try {
202
202
  if (isOrg) {
203
203
  const orgOutput = execFileSync('gh', ['api', 'graphql', '-f', 'query=query($login: String!) { organization(login: $login) { id } }', '-f', `login=${repoOwner}`, '--jq', '.data.organization.id']).toString().trim();
@@ -207,8 +207,10 @@ async function runSetup() {
207
207
  ownerId = userOutput;
208
208
  }
209
209
 
210
- const projectCreateOutput = execFileSync('gh', ['api', 'graphql', '-f', 'query=mutation($owner: ID!, $title: String!) { createProjectV2(input: {ownerId: $owner, title: $title}) { projectV2 { id } } }', '-f', `owner=${ownerId}`, '-f', `title=${boardName}`, '--jq', '.data.createProjectV2.projectV2.id']).toString().trim();
211
- projectId = projectCreateOutput;
210
+ const projectCreateRaw = execFileSync('gh', ['api', 'graphql', '-f', 'query=mutation($owner: ID!, $title: String!) { createProjectV2(input: {ownerId: $owner, title: $title}) { projectV2 { id number } } }', '-f', `owner=${ownerId}`, '-f', `title=${boardName}`]).toString().trim();
211
+ const projectCreateData = JSON.parse(projectCreateRaw).data.createProjectV2.projectV2;
212
+ projectId = projectCreateData.id;
213
+ projectNumber = projectCreateData.number;
212
214
 
213
215
  console.log(` ${i18n.project_ok}${projectId})`);
214
216
 
@@ -317,12 +319,32 @@ async function runSetup() {
317
319
  fs.writeFileSync(pdlcDest, pdlcContent);
318
320
  console.log(`${i18n.pdlc_prefilled}`);
319
321
  }
322
+
323
+ // Pre-fill project-automation.yml with the same IDs so the agent doesn't need to map them
324
+ const workflowAutomationPath = path.join(targetTemplates, '.github', 'workflows', 'project-automation.yml');
325
+ if (fs.existsSync(workflowAutomationPath)) {
326
+ let wfContent = fs.readFileSync(workflowAutomationPath, 'utf8');
327
+ if (projectId) wfContent = wfContent.replace(/\{\{PROJECT_ID\}\}/g, () => projectId);
328
+ if (statusFieldId) wfContent = wfContent.replace(/\{\{STATUS_FIELD_ID\}\}/g, () => statusFieldId);
329
+ if (Object.keys(optionMap).length > 0) {
330
+ wfContent = wfContent.replace(/\{\{ID_IDEA\}\}/g, optionMap["πŸ’‘ Idea"] || 'MISSING_ID');
331
+ wfContent = wfContent.replace(/\{\{ID_EXPLORATION\}\}/g, optionMap["πŸ” Exploration"] || 'MISSING_ID');
332
+ wfContent = wfContent.replace(/\{\{ID_BRAINSTORMING\}\}/g, optionMap["🧠 Brainstorming"] || 'MISSING_ID');
333
+ wfContent = wfContent.replace(/\{\{ID_DETAILING\}\}/g, optionMap["πŸ“ Detail Solution"] || 'MISSING_ID');
334
+ wfContent = wfContent.replace(/\{\{ID_APPROVAL\}\}/g, optionMap["βœ… Approval"] || 'MISSING_ID');
335
+ wfContent = wfContent.replace(/\{\{ID_DEVELOPMENT\}\}/g, optionMap["βš™οΈ Development"] || 'MISSING_ID');
336
+ wfContent = wfContent.replace(/\{\{ID_TESTING\}\}/g, optionMap["πŸ§ͺ Testing"] || 'MISSING_ID');
337
+ wfContent = wfContent.replace(/\{\{ID_CODE_REVIEW_PR\}\}/g, optionMap["πŸ‘ Code Review / PR"] || 'MISSING_ID');
338
+ wfContent = wfContent.replace(/\{\{ID_PRODUCTION\}\}/g, optionMap["πŸš€ Ready for Production"] || 'MISSING_ID');
339
+ }
340
+ fs.writeFileSync(workflowAutomationPath, wfContent);
341
+ }
320
342
  }
321
343
 
322
344
  // Write CLI context for the agent to consume in Setup Mode
323
345
  try {
324
346
  const cliContextPath = path.join(targetDir, '.agentic-pdlc', 'cli-context.json');
325
- fs.writeFileSync(cliContextPath, JSON.stringify({ projectName, repoOwner, repoName }, null, 2));
347
+ fs.writeFileSync(cliContextPath, JSON.stringify({ projectName, repoOwner, repoName, projectNumber }, null, 2));
326
348
  } catch (err) {
327
349
  // Non-fatal β€” agent will ask for the values instead
328
350
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "create-agentic-pdlc",
3
- "version": "2.1.0",
3
+ "version": "2.1.2",
4
4
  "description": "Agentic PDLC Framework - Conversational setup for your AI coding assistants",
5
5
  "type": "commonjs",
6
6
  "bin": {
@@ -16,14 +16,12 @@ jobs:
16
16
  issues: write
17
17
  pull-requests: write
18
18
  contents: read
19
- env:
20
- PROJECT_TOKEN: ${{ secrets.PROJECT_TOKEN }}
21
19
  steps:
22
20
  - name: Update Labels
23
- if: ${{ env.PROJECT_TOKEN != '' && !contains('{{IMPLEMENTATION_AGENT_LABEL}}', '{{') }}
21
+ if: ${{ !contains('{{IMPLEMENTATION_AGENT_LABEL}}', '{{') }}
24
22
  uses: actions/github-script@v7
25
23
  with:
26
- github-token: ${{ env.PROJECT_TOKEN }}
24
+ github-token: ${{ secrets.GITHUB_TOKEN }}
27
25
  script: |
28
26
  const { owner, repo } = context.repo;
29
27
  const issue_number = context.payload.issue.number;
@@ -28,13 +28,13 @@ jobs:
28
28
  if: github.event_name == 'issues' && github.event.action == 'labeled'
29
29
  runs-on: ubuntu-latest
30
30
  env:
31
- PROJECT_TOKEN: ${{ secrets.PROJECT_TOKEN }}
31
+ PROJECT_PAT: ${{ secrets.PROJECT_PAT }}
32
32
  steps:
33
33
  - name: Detect Label and Move Issue
34
- if: ${{ env.PROJECT_TOKEN != '' && env.PROJECT_ID != '{{PROJECT_ID}}' }}
34
+ if: ${{ env.PROJECT_PAT != '' && env.PROJECT_ID != '{{PROJECT_ID}}' }}
35
35
  uses: actions/github-script@v7
36
36
  with:
37
- github-token: ${{ env.PROJECT_TOKEN }}
37
+ github-token: ${{ env.PROJECT_PAT }}
38
38
  script: |
39
39
  const labelName = context.payload.label.name;
40
40
  let targetStatusId = null;
@@ -94,10 +94,10 @@ jobs:
94
94
  # runs-on: ubuntu-latest
95
95
  # steps:
96
96
  # - name: Move issue to Idea
97
- # if: ${{ env.PROJECT_TOKEN != '' && env.PROJECT_ID != '{{PROJECT_ID}}' }}
97
+ # if: ${{ env.PROJECT_PAT != '' && env.PROJECT_ID != '{{PROJECT_ID}}' }}
98
98
  # uses: actions/github-script@v7
99
99
  # with:
100
- # github-token: ${{ env.PROJECT_TOKEN }}
100
+ # github-token: ${{ env.PROJECT_PAT }}
101
101
  # script: |
102
102
  # const { issue: { number, node_id } } = context.payload;
103
103
  # const { addProjectV2ItemById: { item } } = await github.graphql(`
@@ -122,13 +122,13 @@ jobs:
122
122
  if: github.event_name == 'pull_request' && (github.event.action == 'opened' || github.event.action == 'reopened')
123
123
  runs-on: ubuntu-latest
124
124
  env:
125
- PROJECT_TOKEN: ${{ secrets.PROJECT_TOKEN }}
125
+ PROJECT_PAT: ${{ secrets.PROJECT_PAT }}
126
126
  steps:
127
127
  - name: Move linked issue to Code Review / PR
128
- if: ${{ env.PROJECT_TOKEN != '' && env.PROJECT_ID != '{{PROJECT_ID}}' }}
128
+ if: ${{ env.PROJECT_PAT != '' && env.PROJECT_ID != '{{PROJECT_ID}}' }}
129
129
  uses: actions/github-script@v7
130
130
  with:
131
- github-token: ${{ env.PROJECT_TOKEN }}
131
+ github-token: ${{ env.PROJECT_PAT }}
132
132
  script: |
133
133
  const prNumber = context.payload.pull_request.number;
134
134
  const { owner, repo } = context.repo;
@@ -176,13 +176,13 @@ jobs:
176
176
  if: github.event_name == 'pull_request_review' && github.event.review.state == 'approved'
177
177
  runs-on: ubuntu-latest
178
178
  env:
179
- PROJECT_TOKEN: ${{ secrets.PROJECT_TOKEN }}
179
+ PROJECT_PAT: ${{ secrets.PROJECT_PAT }}
180
180
  steps:
181
181
  - name: Swap PR labels
182
- if: ${{ env.PROJECT_TOKEN != '' && env.PROJECT_ID != '{{PROJECT_ID}}' }}
182
+ if: ${{ env.PROJECT_PAT != '' && env.PROJECT_ID != '{{PROJECT_ID}}' }}
183
183
  uses: actions/github-script@v7
184
184
  with:
185
- github-token: ${{ env.PROJECT_TOKEN }}
185
+ github-token: ${{ env.PROJECT_PAT }}
186
186
  script: |
187
187
  const prNumber = context.payload.pull_request.number;
188
188
  const { owner, repo } = context.repo;
@@ -195,13 +195,13 @@ jobs:
195
195
  if: github.event_name == 'pull_request' && github.event.action == 'closed' && github.event.pull_request.merged == true
196
196
  runs-on: ubuntu-latest
197
197
  env:
198
- PROJECT_TOKEN: ${{ secrets.PROJECT_TOKEN }}
198
+ PROJECT_PAT: ${{ secrets.PROJECT_PAT }}
199
199
  steps:
200
200
  - name: Move issue to Production
201
- if: ${{ env.PROJECT_TOKEN != '' && env.PROJECT_ID != '{{PROJECT_ID}}' }}
201
+ if: ${{ env.PROJECT_PAT != '' && env.PROJECT_ID != '{{PROJECT_ID}}' }}
202
202
  uses: actions/github-script@v7
203
203
  with:
204
- github-token: ${{ env.PROJECT_TOKEN }}
204
+ github-token: ${{ env.PROJECT_PAT }}
205
205
  script: |
206
206
  const prNumber = context.payload.pull_request.number;
207
207
  const { owner, repo } = context.repo;