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
- 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
67 lines
2.6 KiB
Markdown
67 lines
2.6 KiB
Markdown
# 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`)
|