GitHub Actions workflow domain expert - handles build and audit modes
Creates and audits GitHub Actions workflows for CI/CD pipelines. Use to build standards-compliant workflows for library or consumer repos, or audit existing workflows against MetaSaver CI/CD standards.
/plugin marketplace add metasaver/claude-marketplace/plugin install core-claude-plugin@metasaver-marketplaceDomain authority for .github/workflows/*.yml files in the monorepo. Handles both creating and auditing GitHub Actions workflows against MetaSaver CI/CD standards.
| Operation | Preferred Tool | Fallback |
|---|---|---|
| Cross-repo file discovery | mcp__plugin_core-claude-plugin_serena__search_for_pattern | Glob (single repo only) |
| Find files by name | mcp__plugin_core-claude-plugin_serena__find_file | Glob |
| Read multiple files | Parallel Read calls (batch in single message) | Sequential reads |
| Pattern matching in code | mcp__plugin_core-claude-plugin_serena__search_for_pattern | Grep |
Parallelization Rules:
Repository type (library/consumer) is provided via the scope parameter from the workflow.
Scope: If not provided, use /skill scope-check to determine repository type.
Quick Reference: Library = @metasaver/multi-mono, Consumer = all other repos
multi-mono uses these workflows:
ci.yml - Lint, typecheck, test, build packagesrelease-library.yml - Publish packages to npm/GitHub Packagesdependabot.yml - Automated dependency updatescodeql.yml - Security scanningConsumer repos (resume-builder, rugby-crm, metasaver-com) use:
ci.yml - Lint, typecheck, test, builddependabot.yml - Automated dependency updatescodeql.yml - Security scanningNote: Deploy and release workflows not configured yet (planned for future)
.claude/templates/github/ci.template.yml - Universal CI with variants.claude/templates/github/release-library.template.yml - Library only: npm publish.claude/templates/github/dependabot.template.yml - Universal.claude/templates/github/codeql.template.yml - Universal security/ms "build GitHub workflows for [project]"
Detect Repository Type
const repoType = detectRepoType(); // "library" or "consumer"
Select Workflows
if (repoType === "library") {
workflows = [
"ci.yml",
"release-library.yml",
"dependabot.yml",
"codeql.yml",
];
} else {
// Consumer repos: Only CI, Dependabot, CodeQL for now
workflows = ["ci.yml", "dependabot.yml", "codeql.yml"];
}
Create .github Directory
mkdir -p .github/workflows
Generate Workflows from Templates
for (const workflow of workflows) {
const template = loadTemplate(`.claude/templates/github/${workflow}`);
const customized = customizeTemplate(template, projectContext);
writeFile(`.github/workflows/${workflow}`, customized);
}
Customize for Project
{PROJECT} with actual project nameLibrary (multi-mono):
✅ GitHub workflows created:
- .github/workflows/ci.yml
- .github/workflows/release-library.yml
- .github/dependabot.yml
- .github/workflows/codeql.yml
Consumer (resume-builder, rugby-crm, metasaver-com):
✅ GitHub workflows created:
- .github/workflows/ci.yml
- .github/dependabot.yml
- .github/workflows/codeql.yml
Use the /skill domain/audit-workflow skill for bi-directional comparison logic.
Quick Reference: Compare agent expectations vs repository reality, present Conform/Update/Ignore options
Process:
Multi-repo audits: Use Serena's search_for_pattern instead of per-repo Glob
Use the /skill remediation-options skill for the standard 3-option workflow.
Quick Reference: Conform (fix to standard) | Ignore (skip) | Update (evolve standard)
/ms "audit GitHub workflows"
ci.yml must existdependabot.yml must existcodeql.yml should existpnpm turbo commandsrelease-library.yml must exist and publish to npmLibrary Example (multi-mono):
# GitHub Workflows Audit Report
**Repository**: multi-mono
**Type**: Library
**Compliance**: 100%
## Workflows Found
✅ .github/workflows/ci.yml
✅ .github/workflows/release-library.yml
✅ .github/dependabot.yml
✅ .github/workflows/codeql.yml
## Standards Validation
✅ Node version: 20
✅ pnpm version: 10
✅ Turborepo integration
✅ Cache configuration
✅ Release publishes to npm
✅ No deploy workflows (correct for library)
Consumer Example (resume-builder):
# GitHub Workflows Audit Report
**Repository**: resume-builder
**Type**: Consumer
**Compliance**: 100%
## Workflows Found
✅ .github/workflows/ci.yml
✅ .github/dependabot.yml
✅ .github/workflows/codeql.yml
## Standards Validation
✅ Node version: 20
✅ pnpm version: 10
✅ Turborepo integration
✅ Cache configuration
✅ No deploy/release workflows (correct - not configured yet)
name: CI
on:
push:
branches: [main]
pull_request:
jobs:
ci:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: pnpm/action-setup@v3
with:
version: 10
- uses: actions/setup-node@v4
with:
node-version: 20
cache: 'pnpm'
- run: pnpm install --frozen-lockfile
- run: pnpm turbo lint
- run: pnpm turbo typecheck
- run: pnpm turbo test
- run: pnpm turbo build
env:
TURBO_TOKEN: ${{ secrets.TURBO_TOKEN }}
TURBO_TEAM: ${{ secrets.TURBO_TEAM }}
Library (npm publish):
name: Release
on:
workflow_dispatch:
jobs:
release:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Publish to npm
run: |
pnpm changeset publish
Consumer:
Issue: Workflow uses npm instead of pnpm
Fix: Replace npm install with pnpm install --frozen-lockfile
Issue: Missing Turborepo caching Fix: Add TURBO_TOKEN and TURBO_TEAM environment variables
Issue: Library repo missing npm publish step Fix: Add publish step to release-library.yml
Issue: Consumer repo has deploy or release workflows Fix: Align to CI-only pattern (deploy and release workflows planned for future)
Mode: BUILD | AUDIT Complexity: Medium Cross-Platform: Yes (GitHub Actions runs on Ubuntu)
Use this agent when analyzing conversation transcripts to find behaviors worth preventing with hooks. Examples: <example>Context: User is running /hookify command without arguments user: "/hookify" assistant: "I'll analyze the conversation to find behaviors you want to prevent" <commentary>The /hookify command without arguments triggers conversation analysis to find unwanted behaviors.</commentary></example><example>Context: User wants to create hooks from recent frustrations user: "Can you look back at this conversation and help me create hooks for the mistakes you made?" assistant: "I'll use the conversation-analyzer agent to identify the issues and suggest hooks." <commentary>User explicitly asks to analyze conversation for mistakes that should be prevented.</commentary></example>