Skip to content

QVAC-18394 infra: add devops pod conventions, team file, and PR template#1926

Merged
Proletter merged 8 commits into
mainfrom
feat/QVAC-18394-devops-team-rules
May 11, 2026
Merged

QVAC-18394 infra: add devops pod conventions, team file, and PR template#1926
Proletter merged 8 commits into
mainfrom
feat/QVAC-18394-devops-team-rules

Conversation

@Proletter

@Proletter Proletter commented May 6, 2026

Copy link
Copy Markdown
Collaborator

🎯 What problem does this PR solve?

  • DevOps pod had no team metadata file, no scoped cursor rules, and no tailored PR template — blocking the QVAC-18394 subtasks (Stale-Prs, Create-pr, Daily-update, Pr-review skills) which depend on owner detection, format rules, and a PR-creation contract.
  • SDK pod's commit-and-pr-format.mdc is paths-scoped to packages/{sdk,rag,logging,error}/** only, so devops PRs touching .github/** or scripts/** were not getting auto-loaded format guidance.

📝 How does it solve it?

  • Adds .github/teams/devops.json with leads, members, and ownedPaths so existing pr-routing logic in _lib/pr-skills/ picks up devops paths.
  • Adds five topic-scoped rules under .cursor/rules/devops/ (main + github-actions + secrets-and-credentials + agentic-automation + commit-and-pr-format) so the right rule auto-loads based on which path is being touched.
  • Adds .github/PULL_REQUEST_TEMPLATE/devops.md mirroring the discipline of sdk-pod.md / addon.md (flat sections only — no ### nesting, no tables, no HTML).

🧪 How was it tested?

  • All .mdc frontmatter parses cleanly (description / globs / alwaysApply present in every file).
  • .github/teams/devops.json parses cleanly.
  • ReadLints clean across all new files.
  • Specific-pattern secret scan (sk_live, AIza, AKIA, ghp_, ssh keys, etc.) returned no matches.
  • Structurally compared devops.md to sdk-pod.md / addon.md: same H2-only section depth, same "Delete this section if not applicable." marker pattern, no tables, no HTML.

Made with Cursor

Baseline DevOps pod metadata and conventions to unblock the QVAC-18394
skill subtasks (Stale-Prs, Create-pr, Daily-update, Pr-review).
Documentation and config only; no behavior change.

Files:
- .github/teams/devops.json — pod metadata (leads, members, ownedPaths)
- .cursor/rules/devops/main.mdc — pod entry point + operating principles
- .cursor/rules/devops/github-actions.mdc — workflow/action conventions
- .cursor/rules/devops/secrets-and-credentials.mdc — secrets handling
  + leak-response playbook
- .cursor/rules/devops/agentic-automation.mdc — read-only-default,
  plan-then-apply, validation-before-success for AI-driven work
- .cursor/rules/devops/commit-and-pr-format.mdc — commit/PR title format
  scoped to .github/** and scripts/** (sdk pod's rule is package-scoped)
- .github/PULL_REQUEST_TEMPLATE/devops.md — PR body template mirroring
  sdk-pod.md / addon.md discipline (flat sections only)

Validated:
- All .mdc frontmatter parses cleanly (description, globs, alwaysApply)
- devops.json parses cleanly
- No linter errors, no secret patterns matched
- PR template structure mirrors existing templates (no H3 nesting,
  no tables, no HTML)

Co-authored-by: Cursor <cursoragent@cursor.com>
@Proletter Proletter requested a review from a team as a code owner May 6, 2026 16:09
Proletter and others added 3 commits May 7, 2026 09:34
Adds the rest of the active DevOps engineers to .github/teams/devops.json
so /devops-pr-status correctly partitions reviewers between "Reviews:"
(team) and "Other:" (outside) buckets. Without this, every team-member
review currently lands in "Other:" and the dashboard reports approvals
as still-needed.

Members (alphabetical, case-insensitive):
- darkynt (Matt Cavanagh)
- GiacomoSorbiWork (Giacomo)
- sidj-thr
- tamer-hassan-tether
- yauhenipankratovich-web

Removes Proletter from members per the cross-pod convention (lead is
listed in `leads` only — see .github/teams/sdk.json).

Validation:
- JSON parses; pr-status.mjs --pod devops --mode team loads the new
  roster without error.
- No code/path changes, data-only update.

Co-authored-by: Cursor <cursoragent@cursor.com>
Per review feedback: rules auto-attach via globs and pollute the
context window on every devops surface. The format spec is already
encoded in devops-pr-create (regex validation, allowed prefixes/tags,
trigger detection) and devops-pr-review (title validation against the
same regex) — both invoked explicitly, never autoloaded.

- Delete .cursor/rules/devops/commit-and-pr-format.mdc (5 KB).
- main.mdc: drop the rule from the related-rules table and replace the
  "Commit messages and PR titles" section with a one-line pointer to
  the devops-pr-create skill.

Skill-side cross-references to the deleted rule are cleaned up on
PR #1929 (next in the stack) since that's where the skills live.

Co-authored-by: Cursor <cursoragent@cursor.com>
Proletter added a commit that referenced this pull request May 7, 2026
…skills

Mirror the rule deletion on PR #1926 — remove dead links from
devops-pr-create and devops-pr-review SKILL.md, and inline the
title regex / allowed prefixes / allowed tags so the skills stay
self-contained without auto-loading anything via globs.

- devops-pr-create: Format References now points at the inline
  Validation regex; the "see rule" parenthetical in Validation is
  replaced with a one-line note that no pr-validation-devops.yml
  exists yet; the References bullet for the deleted rule is
  removed.
- devops-pr-review: drop commit-and-pr-format from the auto-load
  list in step 4 (it's deleted, no longer auto-loads); inline the
  format spec in step 5 (regex + prefixes + tags); replace the
  rule bullet in References with a pointer to devops-pr-create as
  the canonical home for the format spec.

No behavior changes — same regex, same prefix/tag list, same
validation logic.

Co-authored-by: Cursor <cursoragent@cursor.com>
@github-actions

github-actions Bot commented May 7, 2026

Copy link
Copy Markdown
Contributor

Tier-based Approval Status

**PR Tier:** TIER1

**Current Status:** ✅ APPROVED

**Requirements:**
- 1 Team Member approval ✅ (1/1)
- 1 Team Lead OR Management approval ✅ (1/1)



---
*This comment is automatically updated when reviews change.*

NamelsKing
NamelsKing previously approved these changes May 10, 2026
@kinsta

kinsta Bot commented May 11, 2026

Copy link
Copy Markdown

Preview deployments for qvac-docs-staging ⚡️

Status Branch preview Commit preview
✅ Ready Visit preview Visit preview

Commit: 474d694ead9769404d7f41b9406f450f940290c4

Deployment ID: 6e1973ba-8264-45b1-8c13-a156a6f1d51f

Static site name: qvac-docs-staging-fazwv

sidj-thr
sidj-thr previously approved these changes May 11, 2026
@Proletter

Copy link
Copy Markdown
Collaborator Author

/review

…pdate, pr-review) (#1929)

* QVAC-18394 feat: add devops pod skills (pr-status, pr-create, daily-update, pr-review)

Resolves the four QVAC-18394 subtasks by adding the DevOps pod's user-facing
Cursor skills on top of the conventions and team file landed in the
prereq branch.

The skills lean on the existing _lib/pr-skills/ shared library for pod
discovery, PR enumeration, Slack-handle mapping, and worktree management,
so no new shared infra is added — only thin SKILL.md surfaces and
DevOps-specific workflows.

Files:
- .cursor/skills/devops-pr-status/SKILL.md — Stale-Prs subtask. Thin wrapper
  invoking pr-status.mjs --pod devops --mode team. The shared script already
  segregates PRs into needs-your-re-review / stale (>3d) / needs-review and
  flags merge conflicts; no separate stale-only mode is needed.
- .cursor/skills/devops-pr-create/SKILL.md — Create-pr subtask. Generates
  TICKET prefix[tag]?: subject titles + devops.md PR body, with trigger
  detection (action-pinning / permissions / IaC plan / [bc]) driving which
  template sections are required. Client-side title validation since no
  pr-validation-devops.yml exists yet.
- .cursor/skills/devops-daily-update/SKILL.md — Daily-update subtask.
  Aggregates yesterday's merged PRs, today's open PRs, reviews owed,
  and recent CI runs into a Slack/Asana-ready message. Bounded to <=6
  shell calls. Read-only; never posts. Includes a secret-pattern scrub
  before writing the temp file.
- .cursor/skills/devops-pr-review/SKILL.md — Pr-review subtask, absorbs
  gha-audit. Wraps /pr-review (does NOT fork it) and layers a deterministic
  GitHub Actions security audit (15 checks A1-A15) sourced verbatim from
  .cursor/rules/devops/github-actions.mdc and secrets-and-credentials.mdc.
  Findings flow into the same pending-review payload the user confirms.

All four skills:
- disable-model-invocation: true (state-changing or PR-posting flows)
- Reference rules and team file landed by the prereq PR
- Inherit safety + efficiency rules from .cursor/rules/devops/agentic-automation.mdc
  (read-only by default, plan-then-apply for state changes, bounded shell calls)

Validated:
- All four SKILL.md frontmatter parses (name matches directory; non-trivial description)
- All 12 cross-file references resolve (rules, team file, PR template, shared lib, parent skills)
- gh search prs / gh run list flags + JSON fields verified against gh CLI 2.x help output
- ReadLints clean
- No formatter mangling

Co-authored-by: Cursor <cursoragent@cursor.com>

* QVAC-18394 fix: align devops-daily-update output to team's slack template

The first draft used a generic Markdown layout (`## Yesterday`, `## Today`,
`## Blockers`, `_(none)_` for empty sections, GitHub-flavored links).
The team's actual daily-update format on Slack is different:

  🔨 *Done today*
  - QVAC-XXXXX: <past-tense action>
      - <optional sub-bullet>

  📅 *Planned for tomorrow*
  - QVAC-XXXXX: <forward-looking action>
  - QVAC-YYYYY

  🚧 *Blockers / risks*
  - N/A

Changes:
- Replaced the section names and added the canonical 🔨 / 📅 / 🚧 emoji
- Switched from Markdown headings to Slack-bold (`*Section*`) so the output
  renders correctly when pasted into Slack (Slack does not render `##`)
- Empty sections now render `- N/A` (literal), not `_(none)_`
- Bullets lead with `TICKET:` (auto-linked by the workspace's Asana app),
  not `#<pr-num>` — falls back to `#<num>` only when no ticket can be
  extracted from PR title or branch name
- Sub-bullets at 4-space indent for ticket-level context
- Default `--format` is now `slack` (not `markdown`) — Slack is the primary
  destination; chat preview keeps the Markdown form
- Temp file extension changed `.md` → `.txt` to reflect Slack mrkdwn (not
  GitHub-flavored Markdown) as the canonical form
- Added ticket-extraction rules (PR title → branch name → `#<pr-num>`)
- Added a per-section routing table (merged-today / pushed-today /
  open-no-recent-commits / reviews-owed / conflicting / stale-review /
  CI-failing) so the agent knows which bucket each item lands in

Lookback default unchanged at "yesterday 00:00 local" — covers both an EOD
post late evening and a morning standup at 7am without manual `--since`.

Quality gates updated to enforce the new layout (correct emoji + section
names; `- N/A` for empty; no Markdown headings in Slack form; no GitHub-
style links).

The skill is still read-only and never posts. The user copies from the
temp file and pastes into Slack manually.

Co-authored-by: Cursor <cursoragent@cursor.com>

* QVAC-18394 chore: align devops skills to sdk-pod conventions

Self-audit pass against `.cursor/rules/sdk/skill-authoring-guidelines.mdc`
and the SDK pod's reference skills (sdk-pr-status, sdk-pr-create,
sdk-changelog, sdk-backmerge). Documentation-only.

Description tightening:
- devops-pr-status:    341 → 275 chars
- devops-pr-create:    269 → 231 chars
- devops-daily-update: 398 → 255 chars
- devops-pr-review:    386 → 271 chars

Reference: sdk-pr-status's description is 256 chars. All four are now in
the same 230–280 range, vs the prior 270–400 range. WHAT/WHEN preserved
on each.

Heading consistency:
- "## Quality gates" → "## Quality Checklist" in devops-daily-update,
  devops-pr-review (sdk-changelog / sdk-backmerge / sdk-pr-create all use
  "Quality Checklist")
- "## Validation gate (CLIENT-SIDE)" → "## Validation" in devops-pr-create
  (no SDK skill uses uppercase parenthetical scope qualifiers in headings)

Editorial cleanup:
- devops-pr-status: dropped the "Resolves the Stale-Prs subtask of
  QVAC-18394 …" paragraph (skill bodies should not reference their own
  PR/ticket; SDK skills never do)
- devops-daily-update: dropped the upfront "## Canonical template"
  section (~25 lines). Step 8's "#### Slack form (canonical)" is the
  single source of truth for the format. Folded the one unique line —
  bare-ticket bullets allowed when self-evident — into Step 8.

Reduced devops-daily-update from 269 → 242 lines. Other line-counts
stable (46, 183, 140).

No behaviour changes. Cross-file references still resolve. Frontmatter
parses; name matches dir; disable-model-invocation: true preserved on
all four. ReadLints clean.

Co-authored-by: Cursor <cursoragent@cursor.com>

* QVAC-18394 fix: devops skill issues found during test pass

- github-actions.mdc § Permissions: accept top-level OR per-job
  permissions blocks as equivalent (per-job is the more secure
  narrower-scope pattern).
- github-actions.mdc § File layout: add integration-<scope>-<pkg>.yml
  to the canonical filename list (existing repo convention).
- devops-pr-review SKILL.md: tighten A2 + A15 check descriptions to
  mirror the loosened rule (audit becomes more permissive — no
  consumers break).
- devops-daily-update SKILL.md: trim merged-PRs gh-search --json
  field set to what the API actually exposes (closedAt, not mergedAt/
  additions/deletions); add cap of 5 most-recently-updated reviews
  to the standup output with overflow line.
- devops-pr-create SKILL.md + devops.md PR template: drop the
  redundant "be concise" Note line from the template head.

All issues uncovered by the end-to-end test session of the four new
devops skills on this branch.

Co-authored-by: Cursor <cursoragent@cursor.com>

* QVAC-18394 fix: emit paste-ready output files in devops pr-status + pr-create

- devops-pr-status: tee dashboard stdout to /tmp/devops-pr-status-<date>.txt
  and redirect stderr to a sibling .stderr file. Print pbcopy/xclip/wl-copy
  commands so the operator can paste the dashboard straight into a Slack
  thread (Slack auto-renders the indented plain text as nested bullets and
  turns #<num> into PR auto-links).
- devops-pr-create: add an explicit step 8 to write the assembled PR body
  to /tmp/pr-body.md (the gh CLI Integration section already cat's that
  path). Add the pbcopy/xclip/wl-copy commands as step 9 for direct paste
  into the GitHub PR-create form.

Discovered during the test pass — the dashboard output was useful but the
operator had to manually copy from the terminal. Now there's a single
pbcopy command to grab paste-ready content.

Co-authored-by: Cursor <cursoragent@cursor.com>

* QVAC-18394 chore: drop commit-and-pr-format rule cross-references in skills

Mirror the rule deletion on PR #1926 — remove dead links from
devops-pr-create and devops-pr-review SKILL.md, and inline the
title regex / allowed prefixes / allowed tags so the skills stay
self-contained without auto-loading anything via globs.

- devops-pr-create: Format References now points at the inline
  Validation regex; the "see rule" parenthetical in Validation is
  replaced with a one-line note that no pr-validation-devops.yml
  exists yet; the References bullet for the deleted rule is
  removed.
- devops-pr-review: drop commit-and-pr-format from the auto-load
  list in step 4 (it's deleted, no longer auto-loads); inline the
  format spec in step 5 (regex + prefixes + tags); replace the
  rule bullet in References with a pointer to devops-pr-create as
  the canonical home for the format spec.

No behavior changes — same regex, same prefix/tag list, same
validation logic.

Co-authored-by: Cursor <cursoragent@cursor.com>

---------

Co-authored-by: Cursor <cursoragent@cursor.com>
@Proletter Proletter merged commit e2e6745 into main May 11, 2026
11 of 12 checks passed
@Proletter Proletter deleted the feat/QVAC-18394-devops-team-rules branch May 11, 2026 09:52
Proletter added a commit that referenced this pull request May 24, 2026
…ate (#1926)

* QVAC-18394 infra: add devops pod conventions, team file, and PR template

Baseline DevOps pod metadata and conventions to unblock the QVAC-18394
skill subtasks (Stale-Prs, Create-pr, Daily-update, Pr-review).
Documentation and config only; no behavior change.

Files:
- .github/teams/devops.json — pod metadata (leads, members, ownedPaths)
- .cursor/rules/devops/main.mdc — pod entry point + operating principles
- .cursor/rules/devops/github-actions.mdc — workflow/action conventions
- .cursor/rules/devops/secrets-and-credentials.mdc — secrets handling
  + leak-response playbook
- .cursor/rules/devops/agentic-automation.mdc — read-only-default,
  plan-then-apply, validation-before-success for AI-driven work
- .cursor/rules/devops/commit-and-pr-format.mdc — commit/PR title format
  scoped to .github/** and scripts/** (sdk pod's rule is package-scoped)
- .github/PULL_REQUEST_TEMPLATE/devops.md — PR body template mirroring
  sdk-pod.md / addon.md discipline (flat sections only)

Validated:
- All .mdc frontmatter parses cleanly (description, globs, alwaysApply)
- devops.json parses cleanly
- No linter errors, no secret patterns matched
- PR template structure mirrors existing templates (no H3 nesting,
  no tables, no HTML)

Co-authored-by: Cursor <cursoragent@cursor.com>

* QVAC-18394 chore: expand devops pod roster with 5 team members

Adds the rest of the active DevOps engineers to .github/teams/devops.json
so /devops-pr-status correctly partitions reviewers between "Reviews:"
(team) and "Other:" (outside) buckets. Without this, every team-member
review currently lands in "Other:" and the dashboard reports approvals
as still-needed.

Members (alphabetical, case-insensitive):
- darkynt (Matt Cavanagh)
- GiacomoSorbiWork (Giacomo)
- sidj-thr
- tamer-hassan-tether
- yauhenipankratovich-web

Removes Proletter from members per the cross-pod convention (lead is
listed in `leads` only — see .github/teams/sdk.json).

Validation:
- JSON parses; pr-status.mjs --pod devops --mode team loads the new
  roster without error.
- No code/path changes, data-only update.

Co-authored-by: Cursor <cursoragent@cursor.com>

* QVAC-18394 chore: drop commit-and-pr-format rule (skill-only)

Per review feedback: rules auto-attach via globs and pollute the
context window on every devops surface. The format spec is already
encoded in devops-pr-create (regex validation, allowed prefixes/tags,
trigger detection) and devops-pr-review (title validation against the
same regex) — both invoked explicitly, never autoloaded.

- Delete .cursor/rules/devops/commit-and-pr-format.mdc (5 KB).
- main.mdc: drop the rule from the related-rules table and replace the
  "Commit messages and PR titles" section with a one-line pointer to
  the devops-pr-create skill.

Skill-side cross-references to the deleted rule are cleaned up on
PR #1929 (next in the stack) since that's where the skills live.

Co-authored-by: Cursor <cursoragent@cursor.com>

* QVAC-18394 feat: add devops pod skills (pr-status, pr-create, daily-update, pr-review) (#1929)

* QVAC-18394 feat: add devops pod skills (pr-status, pr-create, daily-update, pr-review)

Resolves the four QVAC-18394 subtasks by adding the DevOps pod's user-facing
Cursor skills on top of the conventions and team file landed in the
prereq branch.

The skills lean on the existing _lib/pr-skills/ shared library for pod
discovery, PR enumeration, Slack-handle mapping, and worktree management,
so no new shared infra is added — only thin SKILL.md surfaces and
DevOps-specific workflows.

Files:
- .cursor/skills/devops-pr-status/SKILL.md — Stale-Prs subtask. Thin wrapper
  invoking pr-status.mjs --pod devops --mode team. The shared script already
  segregates PRs into needs-your-re-review / stale (>3d) / needs-review and
  flags merge conflicts; no separate stale-only mode is needed.
- .cursor/skills/devops-pr-create/SKILL.md — Create-pr subtask. Generates
  TICKET prefix[tag]?: subject titles + devops.md PR body, with trigger
  detection (action-pinning / permissions / IaC plan / [bc]) driving which
  template sections are required. Client-side title validation since no
  pr-validation-devops.yml exists yet.
- .cursor/skills/devops-daily-update/SKILL.md — Daily-update subtask.
  Aggregates yesterday's merged PRs, today's open PRs, reviews owed,
  and recent CI runs into a Slack/Asana-ready message. Bounded to <=6
  shell calls. Read-only; never posts. Includes a secret-pattern scrub
  before writing the temp file.
- .cursor/skills/devops-pr-review/SKILL.md — Pr-review subtask, absorbs
  gha-audit. Wraps /pr-review (does NOT fork it) and layers a deterministic
  GitHub Actions security audit (15 checks A1-A15) sourced verbatim from
  .cursor/rules/devops/github-actions.mdc and secrets-and-credentials.mdc.
  Findings flow into the same pending-review payload the user confirms.

All four skills:
- disable-model-invocation: true (state-changing or PR-posting flows)
- Reference rules and team file landed by the prereq PR
- Inherit safety + efficiency rules from .cursor/rules/devops/agentic-automation.mdc
  (read-only by default, plan-then-apply for state changes, bounded shell calls)

Validated:
- All four SKILL.md frontmatter parses (name matches directory; non-trivial description)
- All 12 cross-file references resolve (rules, team file, PR template, shared lib, parent skills)
- gh search prs / gh run list flags + JSON fields verified against gh CLI 2.x help output
- ReadLints clean
- No formatter mangling

Co-authored-by: Cursor <cursoragent@cursor.com>

* QVAC-18394 fix: align devops-daily-update output to team's slack template

The first draft used a generic Markdown layout (`## Yesterday`, `## Today`,
`## Blockers`, `_(none)_` for empty sections, GitHub-flavored links).
The team's actual daily-update format on Slack is different:

  🔨 *Done today*
  - QVAC-XXXXX: <past-tense action>
      - <optional sub-bullet>

  📅 *Planned for tomorrow*
  - QVAC-XXXXX: <forward-looking action>
  - QVAC-YYYYY

  🚧 *Blockers / risks*
  - N/A

Changes:
- Replaced the section names and added the canonical 🔨 / 📅 / 🚧 emoji
- Switched from Markdown headings to Slack-bold (`*Section*`) so the output
  renders correctly when pasted into Slack (Slack does not render `##`)
- Empty sections now render `- N/A` (literal), not `_(none)_`
- Bullets lead with `TICKET:` (auto-linked by the workspace's Asana app),
  not `#<pr-num>` — falls back to `#<num>` only when no ticket can be
  extracted from PR title or branch name
- Sub-bullets at 4-space indent for ticket-level context
- Default `--format` is now `slack` (not `markdown`) — Slack is the primary
  destination; chat preview keeps the Markdown form
- Temp file extension changed `.md` → `.txt` to reflect Slack mrkdwn (not
  GitHub-flavored Markdown) as the canonical form
- Added ticket-extraction rules (PR title → branch name → `#<pr-num>`)
- Added a per-section routing table (merged-today / pushed-today /
  open-no-recent-commits / reviews-owed / conflicting / stale-review /
  CI-failing) so the agent knows which bucket each item lands in

Lookback default unchanged at "yesterday 00:00 local" — covers both an EOD
post late evening and a morning standup at 7am without manual `--since`.

Quality gates updated to enforce the new layout (correct emoji + section
names; `- N/A` for empty; no Markdown headings in Slack form; no GitHub-
style links).

The skill is still read-only and never posts. The user copies from the
temp file and pastes into Slack manually.

Co-authored-by: Cursor <cursoragent@cursor.com>

* QVAC-18394 chore: align devops skills to sdk-pod conventions

Self-audit pass against `.cursor/rules/sdk/skill-authoring-guidelines.mdc`
and the SDK pod's reference skills (sdk-pr-status, sdk-pr-create,
sdk-changelog, sdk-backmerge). Documentation-only.

Description tightening:
- devops-pr-status:    341 → 275 chars
- devops-pr-create:    269 → 231 chars
- devops-daily-update: 398 → 255 chars
- devops-pr-review:    386 → 271 chars

Reference: sdk-pr-status's description is 256 chars. All four are now in
the same 230–280 range, vs the prior 270–400 range. WHAT/WHEN preserved
on each.

Heading consistency:
- "## Quality gates" → "## Quality Checklist" in devops-daily-update,
  devops-pr-review (sdk-changelog / sdk-backmerge / sdk-pr-create all use
  "Quality Checklist")
- "## Validation gate (CLIENT-SIDE)" → "## Validation" in devops-pr-create
  (no SDK skill uses uppercase parenthetical scope qualifiers in headings)

Editorial cleanup:
- devops-pr-status: dropped the "Resolves the Stale-Prs subtask of
  QVAC-18394 …" paragraph (skill bodies should not reference their own
  PR/ticket; SDK skills never do)
- devops-daily-update: dropped the upfront "## Canonical template"
  section (~25 lines). Step 8's "#### Slack form (canonical)" is the
  single source of truth for the format. Folded the one unique line —
  bare-ticket bullets allowed when self-evident — into Step 8.

Reduced devops-daily-update from 269 → 242 lines. Other line-counts
stable (46, 183, 140).

No behaviour changes. Cross-file references still resolve. Frontmatter
parses; name matches dir; disable-model-invocation: true preserved on
all four. ReadLints clean.

Co-authored-by: Cursor <cursoragent@cursor.com>

* QVAC-18394 fix: devops skill issues found during test pass

- github-actions.mdc § Permissions: accept top-level OR per-job
  permissions blocks as equivalent (per-job is the more secure
  narrower-scope pattern).
- github-actions.mdc § File layout: add integration-<scope>-<pkg>.yml
  to the canonical filename list (existing repo convention).
- devops-pr-review SKILL.md: tighten A2 + A15 check descriptions to
  mirror the loosened rule (audit becomes more permissive — no
  consumers break).
- devops-daily-update SKILL.md: trim merged-PRs gh-search --json
  field set to what the API actually exposes (closedAt, not mergedAt/
  additions/deletions); add cap of 5 most-recently-updated reviews
  to the standup output with overflow line.
- devops-pr-create SKILL.md + devops.md PR template: drop the
  redundant "be concise" Note line from the template head.

All issues uncovered by the end-to-end test session of the four new
devops skills on this branch.

Co-authored-by: Cursor <cursoragent@cursor.com>

* QVAC-18394 fix: emit paste-ready output files in devops pr-status + pr-create

- devops-pr-status: tee dashboard stdout to /tmp/devops-pr-status-<date>.txt
  and redirect stderr to a sibling .stderr file. Print pbcopy/xclip/wl-copy
  commands so the operator can paste the dashboard straight into a Slack
  thread (Slack auto-renders the indented plain text as nested bullets and
  turns #<num> into PR auto-links).
- devops-pr-create: add an explicit step 8 to write the assembled PR body
  to /tmp/pr-body.md (the gh CLI Integration section already cat's that
  path). Add the pbcopy/xclip/wl-copy commands as step 9 for direct paste
  into the GitHub PR-create form.

Discovered during the test pass — the dashboard output was useful but the
operator had to manually copy from the terminal. Now there's a single
pbcopy command to grab paste-ready content.

Co-authored-by: Cursor <cursoragent@cursor.com>

* QVAC-18394 chore: drop commit-and-pr-format rule cross-references in skills

Mirror the rule deletion on PR #1926 — remove dead links from
devops-pr-create and devops-pr-review SKILL.md, and inline the
title regex / allowed prefixes / allowed tags so the skills stay
self-contained without auto-loading anything via globs.

- devops-pr-create: Format References now points at the inline
  Validation regex; the "see rule" parenthetical in Validation is
  replaced with a one-line note that no pr-validation-devops.yml
  exists yet; the References bullet for the deleted rule is
  removed.
- devops-pr-review: drop commit-and-pr-format from the auto-load
  list in step 4 (it's deleted, no longer auto-loads); inline the
  format spec in step 5 (regex + prefixes + tags); replace the
  rule bullet in References with a pointer to devops-pr-create as
  the canonical home for the format spec.

No behavior changes — same regex, same prefix/tag list, same
validation logic.

Co-authored-by: Cursor <cursoragent@cursor.com>

---------

Co-authored-by: Cursor <cursoragent@cursor.com>

---------

Co-authored-by: Cursor <cursoragent@cursor.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants