.claude/skills/claude-code-action/SKILL.md
Knowledge base for creating and configuring Claude Code Action GitHub workflows
npx skillsauth add codyswanngt/lisa claude-code-actionInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Reference guide for creating anthropics/claude-code-action@v1 GitHub workflows.
Choose one authentication method:
| Method | Input | Use Case |
|--------|-------|----------|
| OAuth Token | claude_code_oauth_token | Recommended for most setups (requires Claude Pro or Max) |
| API Key | anthropic_api_key | Direct Anthropic API key from console.anthropic.com |
| AWS Bedrock | aws_access_key_id + aws_secret_access_key | AWS-hosted Claude |
| GCP Vertex | gcp_project_id + gcp_region + gcp_workload_identity_provider | Google Cloud Claude |
CLAUDE_CODE_OAUTH_TOKENRequires a Claude Pro or Max subscription.
claude setup-token
gh secret set CLAUDE_CODE_OAUTH_TOKEN
Paste the token when prompted.On macOS, Claude Code stores credentials in the encrypted Keychain (not a plain file). The setup-token command is the official way to extract a token for CI use.
| Name | Type | Required For | How to Set |
|------|------|-------------|------------|
| CLAUDE_CODE_OAUTH_TOKEN | Secret | All Claude workflows | gh secret set CLAUDE_CODE_OAUTH_TOKEN |
| ENABLE_CLAUDE_NIGHTLY | Variable | Nightly workflows (opt-in) | gh variable set ENABLE_CLAUDE_NIGHTLY --body "true" |
Triggered when users mention @claude in comments, reviews, or issues.
on:
issue_comment:
types: [created]
pull_request_review_comment:
types: [created]
issues:
types: [opened, assigned]
pull_request_review:
types: [submitted]
Triggered when a CI workflow fails. Automatically fixes the code.
on:
workflow_run:
workflows: ["CI Quality Checks"]
types: [completed]
Guard against infinite loops:
if: |
github.event.workflow_run.conclusion == 'failure' &&
!startsWith(github.event.workflow_run.head_branch, 'claude-auto-fix-') &&
github.event.workflow_run.head_branch != 'main' &&
github.event.workflow_run.head_branch != 'staging' &&
github.event.workflow_run.head_branch != 'dev'
Runs on a cron schedule for maintenance tasks (test improvement, coverage).
on:
schedule:
- cron: '0 3 * * 1-5' # 3 AM UTC weekdays
workflow_dispatch:
Use opt-in guard:
if: vars.ENABLE_CLAUDE_NIGHTLY == 'true'
permissions:
contents: write
pull-requests: write
issues: write
actions: read
id-token: write
Standard allowedTools for Lisa projects:
Edit,MultiEdit,Write,Read,Glob,Grep,Bash(git:*),Bash(npm:*),Bash(npx:*),Bash(bun:*),Bash(yarn:*),Bash(pnpm:*),Bash(gh:*)
This covers:
Bash(git:*) -- commit, push, branch, etc.Bash(gh:*) -- create PRs, issues, etc.| Input | Required | Description |
|-------|----------|-------------|
| prompt | No | Task instructions for Claude |
| claude_code_oauth_token | Yes* | OAuth token for authentication |
| claude_args | No | CLI args: --allowedTools, --max-turns, --system-prompt, --mcp-config |
| branch_prefix | No | Prefix for auto-created branches (e.g., claude/nightly-) |
| additional_permissions | No | Extra GitHub permissions (e.g., actions: read) |
| max_turns | No | Max agentic turns (via claude_args --max-turns) |
| track_progress | No | Enable progress tracking comments |
| allowed_bots | No | Comma-separated bot names allowed to trigger |
| allowed_non_write_users | No | Users without write access who can trigger |
Pass MCP server config via claude_args:
claude_args: |
--mcp-config .mcp.json
Pass secrets to MCP servers via environment variables in the workflow.
Before running nightly workflows, check for existing open PRs:
- name: Check for existing PR
id: check-pr
uses: actions/github-script@v7
with:
script: |
const pulls = await github.rest.pulls.list({
owner: context.repo.owner,
repo: context.repo.repo,
state: 'open',
per_page: 100,
});
const existing = pulls.data.find(pr =>
pr.head.ref.startsWith('claude/nightly-') &&
pr.title.toLowerCase().includes('your-keyword')
);
core.setOutput('has_existing_pr', existing ? 'true' : 'false');
- name: Run Claude
if: steps.check-pr.outputs.has_existing_pr != 'true'
uses: anthropics/claude-code-action@v1
Use --max-turns to limit API usage:
claude_args: |
--max-turns 25
Recommended limits:
${{ secrets.* }} for all sensitive valuesallowed_bots to control which bots can trigger Claudedocumentation
Onboard a user to the project via its LLM Wiki. Interviews the user about themselves in relation to the project, captures that to project-scoped memory only, then gives a guided tour of what the project is and sample questions they can ask. Use when someone is new to the project or asks to be onboarded. Read-mostly — it does not open PRs or write PII into the wiki.
documentation
Migrate an existing, hand-rolled wiki implementation onto the lisa-wiki kernel — phased and compatibility-first, with a strict no-loss guarantee. Use when adopting lisa-wiki in a repo that already has its own wiki/, ingest skills, docs, or roles. Renaming things into the canonical shape is fine; losing functionality or data is not. Ends by running /doctor.
development
Health-check the LLM Wiki. Reports orphan pages, contradictions, stale claims, broken internal links, missing index/log coverage, structure-manifest violations, and secret/tenant leaks. Use periodically or before hardening a wiki. Read-only — it reports findings, it does not fix them.
testing
Ingest source material into the LLM Wiki. With an argument (URL, file path, or prompt) it ingests that one source; with no argument it runs a full ingest across every enabled non-external-write source. Routes to the right connector, then runs the ordered pipeline (source note → synthesis → index → log → verify → state → commit/PR). Use whenever new knowledge should enter the wiki.