Files
grm/.devin/skills/devx-workflow/SKILL.md
T
Emil Simeonov 9978623316
CI / validate (pull_request) Failing after 2m1s
CI / molecule-tests (1) (pull_request) Skipped
CI / molecule-tests (2) (pull_request) Skipped
CI / molecule-tests (3) (pull_request) Skipped
CI / molecule-tests (4) (pull_request) Skipped
CI / auto-merge (pull_request) Skipped
test: add skill validation tests; fix stale make-target refs in skills
- New tests/unit/test_skills_validation.py: structure, make-target,
  file-ref checks + existence tests for all 10 skills
- testing-and-debugging: fix molecule count (6->7), drop
  molecule-all-parallel/pre-push/lint-ci refs (not grm targets),
  add When to Invoke + Prerequisites
- devx-workflow: fix rebase targets (devx-rebase/devx-pr-rebase),
  add When to Invoke + Prerequisites
- spec-driven-development: add When to Invoke + Prerequisites
2026-09-19 00:41:38 +02:00

2.6 KiB

devx-workflow

Quick reference for devx tools when working on this repo.

When to Invoke

Invoke this skill when creating PRs, checking CI status, adding labels, rebasing branches, or performing any PR lifecycle operation.

Prerequisites

  • .venv exists (run make setup if not)
  • .env with DEVELOPER_GITEA_API_TOKEN, VIKUNJA_TOKEN

PR Workflow (use these, not raw git/tea/MCP)

Task Command
Create Vikunja task .venv/bin/python -m devx.tools.create_task --title "..." --description "..." (make target doesn't forward args)
Create PR make create-pr
Push + create PR make push-with-pr
Check CI status make devx-pr-status or make devx-pr-status PR=42 WAIT=1
Fetch CI failure logs make devx-pr-logs or make devx-pr-logs PR=42 JOB=quality TAIL=50
Add ready-to-merge label make devx-pr-label or make devx-pr-label PR=42
Rebase current branch make devx-rebase
Rebase PR via API make devx-pr-rebase or make pr-rebase PR=42

Auto-merge Behavior

When the ready-to-merge label is added and all CI checks pass:

  1. Auto-merge validates PR title format (GRM-N: <vikunja task title>)
  2. If branch is behind master, auto-merge rebases via Gitea API automatically
  3. The rebase triggers a new CI run; the next auto-merge attempt merges
  4. No manual rebase needed unless the API rebase fails

Pre-merge Check

CI runs a pre-merge-check job early (after quality + detect-changes) that validates branch format, PR title, and Vikunja task match. This fails fast before expensive molecule tests run.

Spec-Driven CI Gates (Pre-merge)

Every PR must pass these gates before merge:

Gate Module What it checks
Spec validation devx.ci.validate_spec Spec file exists at docs/specs/<TASK-ID>.md, has REQ-IDs, all ACs checked
PR size devx.ci.check_pr_size Max 500 lines / 10 files (excludes CHANGELOG, badges, locks)

Full molecule tests still run on every PR (6 scenarios, all platforms).

Post-merge Auto-publish + Dependency PR

After merge to master, post-merge.yml:

  1. Runs release (git-cliff semver, tags, publishes to Gitea PyPI)
  2. Auto-creates an infra dependency PR (devx.ci.create_dependency_pr) to bump the pinned grm version in infra/pyproject.toml
  3. Syncs wiki, updates Vikunja task, pushes badges

Key Rules

  • Never manually merge via API — always use auto-merge with ready-to-merge label
  • Branch naming: GRM-N-short-description (N = Vikunja task ID)
  • Commit format: conventional commits (feat:, fix:, docs:, etc.)
  • PR title: GRM-N: <vikunja task title> (auto-derived by make create-pr)