github-actions
Skill2 starsChanged 15 days agoMITView on GitHub
Harden GitHub Actions and Dependabot: create or modify workflow YAML, reusable workflows, or .github/dependabot.yml; configure dependency updates, alerts, graphs, private registries, and pull-request automation; audit security, correctness, reliability, cost, or performance.
We split this skill into the rules it gives an agent
14 rules. 0 are common, 12 are distinctive, and 2 are very specific to this project.
0
Common
Most of the 35 edited versions we read keep these.
12
Distinctive
This author's own choices. Worth a look.
2
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 8
Treat a workflow as production code with credentials.
- Distinctive: line 16
Create: add a new workflow, reusable workflow, or Dependabot configuration.
- Distinctive: line 20
After mode selection, use Dependabot and dependency automation as the specialized process for a Dependabot-only task.
- Distinctive: line 73
Add only data, isolation, or lifecycle edges.
- Distinctive: line 76
Use locked dependency installs and explicit shell semantics where scripts depend on them.
- Distinctive: line 106
Treat a new action, reusable workflow, container image, or explicit upgrade as a dependency change:
- Very specific: line 120
When the repository tracks .github/workflows/actions.lock, or lockfile adoption is in scope, apply workflow lockfiles to every affected …
- Distinctive: line 126
Audit: every mapped edge and loaded rule is assessed, producing evidence-backed findings or an explicit no-findings result.
- Distinctive: line 127
Modify: every requested behavior is corrected at its source, affected callers are updated, and the resulting graph is remapped.
- Distinctive: line 128
Create: every requested behavior is present in the smallest conforming graph, and the generated graph is remapped.
- Distinctive: line 129
Dependency change: every changed reference and lockfile entry resolves to the reviewed immutable object, and its runtime contract remains …
- Distinctive: line 130
Dependabot: every affected dependency surface and automation plane satisfies the Dependabot criterion.
- Distinctive: line 136
Run each configured Actions security analyzer and reconcile its output with the trust-boundary map.
- Very specific: line 137
Run safe underlying commands from changed run: steps with the repository's locked dependency state.
“Common” is measured: kept by at least 6 in 10 of the 35 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
GitHub Actions
Treat a workflow as production code with credentials. Anchor security on the trust boundary, performance on the critical path, and correctness on the execution graph. Preserve behavior deliberately and prove the changed path.
Process
Select every requested mode first:
- Audit: inspect and report without edits when selected alone.
- Modify: diagnose and change an existing workflow or Dependabot configuration.
- Create: add a new workflow, reusable workflow, or Dependabot configuration.
Modes can combine. For an audit-and-fix request, audit first, modify the authorized findings, and report both corrected and outstanding findings.
After mode selection, use Dependabot and dependency automation as the specialized process for a Dependabot-only task. Apply the workflow execution-graph process below only to repository workflows triggered by Dependabot or generated for dependency submission.
1. Map the affected pipeline
For an existing workflow, traverse every reachable local action and reusable workflow. Deduplicate source reads by immutable identity, but analyze every call edge with its caller's ref, inputs, secrets, permission ceiling, conditions, environment, and runner. When a reusable contract can change, find every affected caller. For creation, map repository conventions and candidate components implied by the requested behavior.
For every affected execution branch, identify:
- events, actors, refs, fork and Dependabot behavior, approval and hold gates, default-branch semantics, and governing Actions policies
- code, expressions, artifacts, caches, inputs, and network data each job consumes
- token permissions, secrets, OIDC claims, environments, and runner access each job receives
- the job and step graph, including
needs, conditions, outputs, matrices, background lifecycles, concurrency, and cancellation - package manager, lockfiles, scripts, runtime versions, runner labels, and existing CI conventions
- required checks, deployment ordering, release guarantees, and the behavior users depend on
- for performance or cost work, satisfy the target and baseline gate; for cost, also collect and attribute evidence
Load the anchored reference as soon as its observed context matches:
| Observed context | Load |
| An entrant can influence a job with authority | Trust-boundary map and token permissions |
| A privileged or default-branch event handles contributor influence | Privileged events |
An external dependency, checkout, local ./ or $/ action, or workflow policy matters | Dependencies and workflow governance |
The repository tracks .github/workflows/actions.lock, or lockfile adoption or the Require lockfile policy is in scope | Workflow lockfiles |
A .github/workflows/*.md file has a generated .lock.yml, or agent-driven automation is requested | Agentic workflows |
| Secrets, OIDC, environments, or cloud credentials matter | Secrets, OIDC, and environments |
A job restores or saves caches or sets cache-mode, artifacts cross jobs, workflows, refs, or trust levels, or Actions retention settings change | Artifact promotion or cache-poisoning chain |
| A self-hosted runner, network allowlist, or Actions policy matters | Runners and network reach or platform execution protections |
| A run is held, awaits approval, or is blocked before a job starts | Approval gates and held runs and, for policy denials, platform execution protections |
A run: block is created, changed, or reviewed | Shell semantics, expression boundary, failure handling, and workflow data |
A run: block writes a transient file | Runner-owned temporary storage |
GitHub API, gh, or github-script is used | Choose the narrowest API, then its matching interface section |
workflow_dispatch is sent through an API or its run must be tracked | Workflow dispatch |
| Workflow runs are listed, counted, or searched through the API | Query workflow runs |
| Secret-scanning custom patterns are automated | Secret-scanning custom patterns |
| Dependabot configuration, alerts, dependency graphs, dependency submission, private registries, or Dependabot pull-request behavior matters | Dependabot and dependency automation |
| Outputs, environment writes, or summaries are used | Workflow channels |
| Events, filters, expressions, failure, cancellation, or timeouts matter | Events and refs, expressions, or failure |
| Concurrency, matrices, or reusable contracts matter | Concurrency, matrices, or reusable workflows |
A job is created, a requested change adds or rewrites its steps, or a step backgrounds a process with shell & | Step concurrency |
A runs-on label is added, kept, or changed | Runner labels and toolchains |
| Latency, cost, parallelism, setup, runners, caches, or artifacts matter | Name the target and baseline, then the matching performance section |
| Actions metrics, billing reports, dashboards, or GitHub-generated workflows matter | Collect and attribute evidence |
Complete when: every requested mode is selected; every affected workflow, caller, reachable local dependency, and distinct call context is accounted for; every entrant, execution edge, capability, and behavioral contract is mapped; every Dependabot task satisfies its dependency-surface gate; and performance work satisfies its linked target-and-baseline gate.
2. Shape the safe execution graph
Compare the mapped graph with the target below for every selected mode. In audit-only mode, record evidence-backed divergences without editing. For modification or creation, shape this target; when combined with audit, retain the divergences as evidence for the changes:
- Choose the least-privileged event that supplies the required context.
- Establish a deny-by-default token baseline and grant each job only its required permissions and cache access (
cache-mode). - Constrain untrusted values crossing into privileged operations so they cannot control execution, authority selection, destination, or side-effect scope.
- Add only data, isolation, or lifecycle edges; start independent work as soon as its dependencies allow, across jobs and within each job through step concurrency.
- Make required-check, failure, retry, timeout, cancellation, and concurrency semantics explicit.
- Give deployments and releases protected environments, immutable inputs, and deliberate queueing.
- Use locked dependency installs and explicit shell semantics where scripts depend on them.
- Make every external dependency immutable through the verification procedure below.
- Shape a performance change against the linked target and baseline, accounting for startup, compute, cache, and artifact-transfer work.
Complete when: every selected audit has compared every mapped edge with every loaded rule; every selected modification or creation has a target graph where capabilities, trust crossings, ordering, required outcomes, and deployment semantics are justified; and a performance design has an evidence-backed expected impact ready for proof.
3. Execute every selected mode
Audit
Record findings ordered by impact. In audit-only mode, return them without editing. When audit is combined with modification, mark each finding as corrected or outstanding in the final report. Each finding includes:
- severity and exact
file:line - triggering event, actor, or input
- concrete failure, privilege, or performance path
- smallest safe correction
- validation evidence or the exact evidence gap
A security finding needs a concrete path from untrusted influence to a capability. Label defense-in-depth and stylistic hardening separately. A performance finding needs a measured bottleneck or a clearly labeled model of the critical path. State explicitly when no findings remain.
Modify
Start from observed behavior. Trace each problem through its trigger, inputs, execution path, and result. Correct it at the source with the smallest cohesive change. Preserve package-manager, lockfile, runner, naming, and workflow conventions unless one causes the problem. Update every affected caller when a reusable-workflow contract changes.
Create
Build the smallest execution graph that satisfies the requested behavior. Reuse established local actions, reusable workflows, package commands, and naming instead of introducing a second convention. After drafting, remap the generated graph and load every newly matching reference.
When an external reference changes
Treat a new action, reusable workflow, container image, or explicit upgrade as a dependency change:
- Identify the intended release and read its release notes and migration guidance.
Resolve an action or reusable-workflow tag through its own repository's commit endpoint so annotated tags yield the commit SHA:
repo='OWNER/REPOSITORY' tag='REVIEWED_RELEASE' gh api "repos/$repo/commits/$tag" --jq .sha gh api "repos/$repo/releases/tags/$tag" --jq '{tag_name,html_url,body}'- Verify the SHA belongs to that repository; inspect source behavior, action metadata, runtime and runner floors, permissions, and input handling relevant to this workflow. On GitHub.com, JavaScript actions run only on Node 24 and the Node 20 opt-out is gone: replace a release that still declares
runs.using: node20with a Node 24-compatible one, and treat self-hosted runners on macOS 13.4 or earlier or on ARM32 as unsupported. - Pin container images by digest and external reusable workflows called at
jobs.<job_id>.usesby SHA, whether or not the workflow is onboarded to a lockfile, because lockfiles cover neither. Set a step-leveluses:to the reviewed SHA unless its workflow is onboarded to a lockfile. Whereveruses:holds a SHA, update it and its human-readable release comment together. - When the repository tracks
.github/workflows/actions.lock, or lockfile adoption is in scope, apply workflow lockfiles to every affected workflow and confirm each changedcommitis the reviewed SHA.
An explicit upgrade authorizes the compatible upgrades it names. During unrelated work, preserve existing versions unless one blocks the requested behavior or has a relevant security defect.
Complete when every selected mode gate passes:
- Audit: every mapped edge and loaded rule is assessed, producing evidence-backed findings or an explicit no-findings result.
- Modify: every requested behavior is corrected at its source, affected callers are updated, and the resulting graph is remapped.
- Create: every requested behavior is present in the smallest conforming graph, and the generated graph is remapped.
- Dependency change: every changed reference and lockfile entry resolves to the reviewed immutable object, and its runtime contract remains compatible.
- Dependabot: every affected dependency surface and automation plane satisfies the Dependabot criterion.
4. Prove the workflow
- Run the repository's configured workflow lint command; otherwise run
actionlintagainst every affected workflow. A linter can lag current syntax: actionlint 1.7.12 rejects valid$/references,parallel,background,wait,wait-all,cancel,queue: max,cache-mode, thevulnerability-alertspermission,job.workflow_*contexts, and new runner labels such asubuntu-26.04andxcode-27, yet still accepts retiring labels such asmacos-14. Confirm each such error against current GitHub Docs, keep the valid syntax, and report the linter version and gap; fix every other finding. When that linter also runs as a repository check, add an ignore scoped to exactly the rejected syntax to its configuration in the same change (for actionlint,paths.<glob>.ignoreregular expressions andself-hosted-runner.labelsin.github/actionlint.yaml) and report it; when that configuration is out of scope, report the conflict before introducing the syntax. A passing label check does not prove the label is current. - For a modified local action, validate its metadata with the configured schema tool (on GitHub.com, a JavaScript action declares
runs.using: node24) and exercise its declared inputs, outputs, entrypoint, post behavior, and representative caller. - Run each configured Actions security analyzer and reconcile its output with the trust-boundary map; static analysis supplements path tracing.
- Run safe underlying commands from changed
run:steps with the repository's locked dependency state. Use a documented dry-run for release or deployment commands. - For performance changes, satisfy the performance criterion. Report inaccessible remote execution as the exact measurement gap.
- For combined Dependabot and workflow changes, also satisfy the Dependabot validation and criterion.
- Recheck the complete affected graph: event, approval, hold, and policy semantics; permissions, secrets, OIDC, environments, and runners; dependency pins and lockfile entries; local and reusable contracts; outputs, matrices, caches, artifacts, concurrency, background barriers, and
needs. - Report exact commands and outcomes. Name an unavailable runner, credential, service, policy, or tool as a verification gap.
Complete when: every affected workflow, modified action manifest, and modified Dependabot configuration has passing applicable validation or an exact tool blocker; every changed behavior has direct execution evidence or an exact external blocker; every security conclusion names the traced path; and every optimization satisfies the linked performance criterion.
Other versions44 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 44
- JabRef/jabref★ 4.9ksame name
- callstackincubator/agent-skills★ 1.7ksame name
- tddworks/ClaudeBar★ 1.6ksame name
- OpenHands/extensions★ 167same name
- nitinjain999/platform-skills★ 71same name
- wendylabsinc/claude-skills★ 62same name
- nahid-sparktales/agent-dispatcher★ 59same name
- mujez/claude-skills★ 47same name
- sabahattink/antigravity-fullstack-hq★ 30same name
- G1Joshi/Agent-Skills★ 15same name
34 more not listed
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
Used alongsideProjects with it also use react-native-brownfield-migration, upgrading-react-native and 9 more.
Other files people use alongside this one.
Files found in the same public projects as a version of this one, more often than they turn up anywhere else. Each project counts once, large collections count for less, and this file's own repository is left out.
maikotrindadeSkillreact-native-brownfield-migration
Provides an incremental adoption strategy to migrate native iOS or Android apps to React Native or Expo using @callstack/react-native-brownfield for initial setup. Use when planning migration steps, packaging XCFramework/AAR artifacts, and integrating them into host apps.
Also in 4 projects that use this
maikotrindadeSkillupgrading-react-native
Upgrades React Native apps to newer versions by applying rn-diff-purge template diffs, updating package.json dependencies, migrating native iOS and Android configuration, resolving CocoaPods and Gradle changes, and handling breaking API updates. Use when upgrading React Native, bumping RN version, updating from RN 0.x to 0.y, or migrating Expo SDK alongside a React Native upgrade.
Also in 3 projects that use this
ffsshhttiikkSkillnodejs
JavaScript runtime built on Chrome's V8 JavaScript engine
Also in 4 projects that use this
jcsaaddupuySkillgitlab-ci
GitLab CI/CD configuration guide
Also in 3 projects that use this
Sorcha-PlatformSkillgrpc
Build or review gRPC services and clients in .NET. USE FOR: ASP.NET Core gRPC, protobuf contracts, unary or streaming RPC, gRPC client factory, interceptors, deadlines, cancellation, channel reuse, backend service integration. DO NOT USE FOR: broad browser-facing APIs without gRPC-Web tradeoff review, SignalR realtime hubs, plain REST APIs. INVOKES: dotnet build/test and focused service or client smoke checks when code changes.
Also in 3 projects that use this
ihiteshguptaSkillterraform
Expert in Infrastructure as Code with Terraform. Use for creating, managing, and versioning infrastructure across cloud providers.
Also in 5 projects that use this
In this repository48 other files it gives its agents.
- accessibilitySkill
- agent-instructionsSkill
- analyze-change-effectsSkill
- article-processingSkill
- ci-cd-automationSkill
- comment-styleSkill
- commitSkill
- communicate-clearlySkill
- compare-solutionsSkill
- create-project-instructionsSkill
- daily-meeting-updateSkill
- debugSkill
- deprecate-and-removeSkill
- design-code-structureSkill
- domain-searchSkill
- error-handlingSkill
- explain-codeSkill
- explain-decisionsSkill
- handoffSkill
- humanizeSkill
- issue-workflowSkill
- observabilitySkill
- people-memorySkill
- performance-optimizationSkill
- planningSkill
- pr-followupSkill
- prototypeSkill
- pr-review-followupSkill
- pr-reviewSkill
- prSkill
- report-work-activitySkill
- retroSkill
- review-code-changesSkill
- simplify-codeSkill
- skill-maintenanceSkill
- stacked-prSkill
- task-breakdownSkill
- tddSkill
- teachSkill
- typescript-best-practicesSkill
- verification-authoringSkill
- verifySkill
- wayfinderSkill
- workflow-to-skillSkill
- work-modeSkill
- worktrunkSkill
- write-documentationSkill
- youtube-processingSkill
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
Reviews can't be read right now.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

