writing-skills
writing-skills
Use when creating new skills, editing existing skills, or verifying skills work before deployment
woodpecker-ciOperate Woodpecker CI from installation through production troubleshooting: configure servers and agents, connect Forgejo/Gitea or another forge, write and validate pipelines, manage secrets and plugins, use Docker or Kubernetes backends, run the CLI, and diagnose failed builds. Use when setting up, administering, or debugging Woodpecker CI. Do not use this…
Independent GitHub snapshot · Automated classification · Original documentation governs
Use this skill as an operating playbook, not as a substitute for checking the documentation for the installed major version. Prefer explicit SemVer image tags, verify the resolved configuration before starting services, and verify runtime health after every change.
Scope boundary: This skill configures and operates Woodpecker CI (the server, agents, workflows, and integrations). It does not install or administer Forgejo/Gitea itself, and it does not configure Forgejo Actions runners. When a task mentions Forgejo, treat it as the forge Woodpecker connects to unless forge administration is explicitly requested.
| If the task is... | Start here |
|---|---|
| New server/agent or forge connection | references/setup.md |
| Workflow YAML, services, conditions, secrets, or plugins | references/pipeline-syntax.md |
| Upgrade, backup, metrics, CLI, or capacity | references/operations.md and references/advanced-patterns.md |
| A failed login, queued pipeline, clone, step, or backend | references/troubleshooting.md and references/failure-signatures.md |
| A trust or multi-tenant decision | references/security.md and the backend section of references/setup.md |
| Local lint/exec or CLI installation | references/cli.md |
Then load references/source-index.md when a version-sensitive command or variable needs confirmation.
# Generate a shared server/agent secret
openssl rand -hex 32
# Compose Woodpecker server + agent (not Forgejo itself)
cp templates/docker-compose.yml compose.yaml
cp templates/forgejo.env.example .env
# edit .env, then:
docker compose config --quiet
docker compose up -d
docker compose ps
docker compose logs -f --tail=100 woodpecker-server woodpecker-agent
# Local workflow checks
woodpecker-cli lint .woodpecker.yml
woodpecker-cli exec .woodpecker.yml
# Pipeline and secret administration
woodpecker-cli repo info --repository OWNER/REPO
woodpecker-cli repo secret add --repository OWNER/REPO --name NAME --value @/path/to/value
woodpecker-cli exec is useful for local command and metadata checks, but it is not a complete substitute for a server run: server-managed secrets and forge events may not be available locally.
Multi-tenant default: For untrusted repositories, prefer Kubernetes with namespace/RBAC/ServiceAccount controls when the cluster is already operated as a security boundary. Docker is a viable simpler default only with dedicated agents and trust-tier separation because the Docker socket controls the host daemon. Never use the Local backend for untrusted repositories.
WOODPECKER_SERVER and the same WOODPECKER_AGENT_SECRET as the server. The server registers an agent on first contact; persist the agent config file so its generated identity survives restarts.WOODPECKER_OPEN=false unless open registration is intentional. Grant admin access explicitly and protect the OAuth client secret and agent secret.depends_on is for workflow ordering and parallelism; it is not a readiness check for service containers. Add a real wait/backoff or health probe for databases and caches.when list is OR across entries and AND within one entry. Branch filters also affect pull-request target branches; combine event and branch when you mean pushes to a branch only.docker compose config or CLI lint proves syntax/model validity, not that the agent can reach the forge, the image can pull, or the pipeline is safe.| Load when | Reference |
|---|---|
| Installing with Docker Compose, configuring Forgejo/Gitea, or choosing a backend | references/setup.md |
| Writing workflow YAML, events, conditions, matrices, services, plugins, or multi-workflow projects | references/pipeline-syntax.md |
| Designing parallel workflows, concurrency, caching, registries, reusable YAML, or autoscaling | references/advanced-patterns.md |
| Managing secrets, registries, CLI operations, upgrades, backups, and metrics | references/operations.md |
| A pipeline, clone, agent, OAuth, Docker, or Kubernetes run is failing | references/troubleshooting.md |
| You need a compact symptom-to-evidence map during an incident | references/failure-signatures.md |
| Reviewing trust boundaries, pull requests, plugins, local backend, or Kubernetes permissions | references/security.md |
Using or installing woodpecker-cli | references/cli.md |
| Checking source URLs and version-sensitive claims | references/source-index.md |
templates/docker-compose.yml — minimal server plus Docker agent deployment.templates/woodpecker.yml — conservative build/test/deploy workflow skeleton.templates/forgejo.env.example — placeholder environment contract for Forgejo.assets/troubleshooting-checklist.md — incident handoff checklist.scripts/woodpecker-doctor.py — dependency-free connectivity/configuration probe with text or JSON output.| Script | Purpose | Invocation |
|---|---|---|
scripts/woodpecker-doctor.py | Dependency-free connectivity/configuration probe for a Woodpecker deployment: checks the server HTTP URL and the agent gRPC endpoint, with text or JSON output. Run it as step one of any "is it the CI or is it me" diagnosis, after deployment changes to verify health, and before deeper troubleshooting. | python3 scripts/woodpecker-doctor.py --url https://ci.example.com --server agent-host:9000 --json |
compatibility): access to the Woodpecker instance, and Docker Compose, Kubernetes, or woodpecker-cli depending on the backend in use — see references/setup.md and references/cli.md.${NAME} when Woodpecker must pass the variable to the shell).Use a forge-specific skill for installing or administering Forgejo/Gitea itself, a Kubernetes operations skill for cluster lifecycle, and a Docker security skill for host hardening. This skill covers Woodpecker's integration points and CI behavior.