

Also from Kynth Studios


Also from Kynth Studios


Also from Kynth Studios
123456<!-- story: e38s07 -->7<!-- story: e45s15 -->8<!-- story: e45s32 -->9<!-- story: e45s39 -->10<!-- story: e20s02 -->111213# Release Branch1415> **HARD GATE** — Do NOT merge or release if tests fail or if coverage gates are not met. If the branch is red, return to `develop-tdd` to fix regressions or add missing tests before proceeding.1617Finalize a completed feature branch: verify coverage gates, integrate onto `main`, and clean up the worktree.1819## Additional modes20- `--hotfix`: Cherry-pick to main + tag. Skip PR in solo.21- `--squash-state`: Squash `chore(state):` commits before merge.2223## Integrate mode2425Read `specs/state.yaml` key `workflow_mode` (`team-pr` | `solo-git`). Fall back to `profiles/solo-git.md`.2627| Mode | When | Ship path |28|------|------|-----------|29| **solo-local** | `workflow_mode: solo-git` | Auto: `scripts/land-branch.sh` if present, else fallback (Step 5) |30| **team-pr** | `workflow_mode: team-pr` (default) | `gh pr create` → `gh pr merge --squash` |3132If unsure, prefer **solo-local**.3334## Process3536> **Timing:** `bash scripts/bp-timing.sh start release-branch` at invocation; `bash scripts/bp-timing.sh end release-branch` before handoff.3738### 1. Final verification3940```bash41<full test command> && <typecheck command> && <lint command>42git log main...HEAD --oneline | grep -vE "^[a-f0-9]+ (feat|fix|docs|style|refactor|perf|test|build|ci|chore|revert)(\(.+\))?!?: .+$" && echo "❌ Non-conventional commits found" || echo "✅ Commits verified"43# Block AI agent attribution (P1)44git log main...HEAD --format="%B" | grep -qiE 'co[- ]authored[- ]by' && echo "❌ Co-authored-by footer found — blocked" || echo "✅ No AI attribution"45```4647- [ ] All tests pass, no type errors, no lint violations, all commits follow Conventional Commits48- [ ] **NO `Co-authored-by` or `Co-Authored-By`** in any commit body — P1 rule (CONVENTIONS.md § Git Attribution). `land-branch.sh` blocks the merge if found.4950### 2. Coverage check5152- [ ] Overall coverage ≥ 80%; business logic coverage ≥ 95%5354### 2a. Security gate5556- [ ] `specs/security/REVIEW.md` exists and is fresh (matches current branch diff)57- [ ] No unresolved HIGH findings with confidence ≥ 8 (or all documented in `specs/security/EXCEPTIONS.md` with sign-off rationale)5859If REVIEW.md is missing or stale → run `security-review` inline. Findings block the merge unless documented in EXCEPTIONS.md.6061### 2b. Traceability gate6263Run `gate-trace` before merge. FAIL blocks merge; CONCERNS requires explicit override in `specs/state.yaml` (`traceability_override: CONCERNS accepted, reason: <explanation>`). WAIVED if no matrix available.6465> **Adversarial refute framing (e45s32):** The final pre-merge check is **refute, not rubber-stamp**. Before declaring ready, actively try to disprove traceability completeness — missing story tags, absent verify evidence, stale security review. Only proceed when refutation fails.6667### 3. Diff review6869- [ ] All commits intentional, no secrets, CONVENTIONS.md compliance7071### 4. Decision7273Options: **Release (solo-local)** / **Open PR** / **Keep branch** / **Discard**7475### 5. Solo-local integrate7677Run `commit-message` for the squash subject, then land:7879```bash80# Path A (preferred):81bash scripts/land-branch.sh <task-slug> "feat(scope): description"82# Path B (fallback if land-branch.sh missing): see REFERENCE.md83```8485### 6. Create PR (team-pr only)8687Create the pull request with a **literal provenance marker** in the body so agent-generated PRs are identifiable and do not rot silently:8889```markdown90<!-- bigpowers-provenance: agent-generated -->91```9293Place the marker on its own line immediately after the `## Summary` heading. Then merge via `gh`:9495```bash96gh pr create --title "..." --body "$(cat <<'EOF'97## Summary98<!-- bigpowers-provenance: agent-generated -->99100- ...101102## Test plan103- [ ] ...104105EOF106)"107gh pr merge --squash --delete-branch108```109110`semantic-release` auto-detects the commit, bumps SemVer, tags the repo, generates release notes.111112### 7a. Archive completed epic capsule113114> **HARD GATE** — When all epic stories are done (all `done` in `execution-status.yaml`), archive the capsule:115116```bash117mv specs/epics/eNN-slug specs/epics/archive/118```119120### 7b. CI verification & agent lock release (e39s02)121122> **HARD GATE** — Do NOT declare success until CI completes. **Three-independent-facts** (e45s15): commit landed, workflow green, registry visible — see [REFERENCE.md](REFERENCE.md#three-independent-facts-release).123124```bash125bash scripts/wait-for-ci.sh --timeout 600 --interval 30126```127128- [ ] CI passes; `release.ci_verified: true` in state.yaml129- On failure: `handoff.next_skill = fix-bug`130131### 8. Clean up & return132133Worktree prune, branch delete, `git checkout main`. Cycle-time: see [REFERENCE.md](REFERENCE.md#cycle-time).134135Report: "Branch released."136137## Verify138139→ verify: `command -v gh >/dev/null 2>&1 && test -f specs/state.yaml && test -d skills/verify-work`140141---142143# Release Branch — Reference144145## Navigation146147| Lines | Section |148|-------|---------|149| 1 | Title |150| 3–22 | Navigation |151| 23–31 | PR body template (team-pr mode) |152| 32–35 | Summary |153| 36–41 | Verify |154| 42–47 | specs/ artifacts |155| 48–58 | Worktree cleanup details |156| 59–81 | Cycle-time recording |157| 82–100 | Why not story_start minus story_end? |158| 101–121 | CI verification |159| 122–127 | Solo-local fallback detail |160| 128–134 | Handoff |161| 135–159 | Reference block 1 |162163# Release Branch — Reference164165## PR body template (team-pr mode)166167```bash168PR_TITLE="<type>(<scope>): <description>"169echo "$PR_TITLE" | grep -vE "^(feat|fix|docs|style|refactor|perf|test|build|ci|chore|revert)(\(.+\))?!?: .+$" && echo "❌ ERROR: PR Title must follow Conventional Commits"170171gh pr create \172 --title "$PR_TITLE" \173 --body "$(cat <<'EOF'174## Summary175- [What this PR does]176- [Key decisions made]177178## Verify179- [ ] All tests pass180- [ ] Coverage gates met (≥80% overall, ≥95% business logic)181- [ ] CONVENTIONS.md compliance verified182- [ ] PR Title follows Conventional Commits (for automated release)183184## specs/ artifacts185- [List any specs/ files produced or updated]186EOF187)"188```189190## Worktree cleanup details191192```bash193# From the main repo root194git worktree prune195git worktree remove ../<branch-name> 2>/dev/null || true196git branch -d <branch-name>197```198199If `git worktree remove` fails due to uncommitted changes, ask: "There are uncommitted changes in the worktree. Force remove? (y/n)". If yes: `git worktree remove -f ../<branch-name>`.200201## Cycle-time recording202203After landing the branch, record delivery metrics using the git-derived,204additive script (replaces hand-arithmetic):205206```bash207bash scripts/record-cycle-time.sh append \208 --story <story_id> --bcps <bcps> \209 --range "$(git merge-base main HEAD)..HEAD" \210 --file specs/metrics/cycle-times.yaml211```212213This appends a row to the cycle-times ledger with two separated metrics:214215- **effort_hours** — ADDITIVE. Idle-stripped estimated effort from git commit216 history (git-hours model: 120-min session threshold, 120-min first-commit pad).217 Sums exactly to whole-repo effort. NO hand-arithmetic, NO wall-clock includes.218- **lead_time_minutes** — calendar latency from first commit to merge.219 Median-aggregated across stories; NEVER summed.220221The script also runs an additivity self-check: Σ(story effort) == whole-repo effort222within rounding tolerance.223224### Why not story_start minus story_end?225226The previous hand-arithmetic approach (survey-context writes `story_start`,227release-branch writes `story_end`, agent hand-computes `cycle_minutes`) was228retired because:2292301. It was **agent-self-reported** — trivially fabricated or mis-subtracted.2312. Wall-clock included **overnight/weekend/UAT gaps** — calendar latency,232 not coding effort.2333. The `bcp_per_hour` metric was **computationally meaningless** (velocity234 derived from a latency measurement).235236The new approach derives effort from commit history (objective, reproducible)237and lead time from first commit → merge (honest calendar latency). See238`docs/references/bcp.md` for BCP sizing context and239`scripts/record-cycle-time.sh` for the full algorithm.240241---242243## CI verification244245The CI polling logic has been extracted to `scripts/wait-for-ci.sh`.246See the script's `--help` for usage. Step 7b of the main SKILL.md invokes it directly:247248```bash249bash scripts/wait-for-ci.sh --timeout 600 --interval 30250```251252**Exit codes:**253- **0** — all workflows green. Set `release.ci_verified: true` in state.yaml.254- **1** — at least one workflow failed. Prints failure URLs. Set `handoff.next_skill = fix-bug`.255- **2** — timeout. CI did not complete. Retry or investigate.256- **0 with warning** — `gh` CLI not available, git-only fallback confirmed push landed but CI status unverified.257258The script handles: auto-discovery of all workflows for the current259branch/commit, polling until completion, success/failure/timeout exit codes,260and git-only fallback when `gh` CLI is unavailable.261262---263264## Solo-local fallback detail265266The fallback sequence (Path B above) handles the "remote has moved" case with `git pull --rebase`. Use when `scripts/land-branch.sh` is absent.267268**Acceptance:** When fallback runs, main is updated, feature branch is deleted locally, and output states `"used fallback merge (land-branch.sh not found)"`.269270## Handoff271272Gate: READY -> next: survey-context273Writes: state.yaml handoff.next_skill = survey-context274275---276277## Reference block 1278279```bash280# Fallback: manual squash-merge when land-branch.sh is absent281FEATURE_BRANCH=<task-slug>282DEFAULT_BRANCH=$(git symbolic-ref refs/remotes/origin/HEAD 2>/dev/null | sed 's@^refs/remotes/origin/@@' || echo main)283284# Ensure we're on the feature branch285if [ "$(git branch --show-current)" != "$FEATURE_BRANCH" ]; then286 git checkout "$FEATURE_BRANCH"287fi288289# Checkout default branch and update290git checkout "$DEFAULT_BRANCH"291git pull --rebase origin "$DEFAULT_BRANCH" 2>/dev/null || git pull origin "$DEFAULT_BRANCH"292293# Squash-merge the feature branch294git merge --no-ff "$FEATURE_BRANCH" -m "<conventional-commit-message>"295296# Push297git push origin "$DEFAULT_BRANCH"298299# Clean up local feature branch300git branch -d "$FEATURE_BRANCH"301```302
One repository carrying more than one format is the comparison this product exists for: does anyone actually write different content in each file, or is one a copy of the other?
| Repository | Format | Stack | Covers | Score | Changed |
|---|---|---|---|---|---|
| danielvm-git/bigpowers.cursor/rules/simple-english.mdc · 139 | Cursor rules | styletypesgitdatabase+6 | 47/100 | 14 days ago | |
| danielvm-git/bigpowers.cursor/rules/assess-impact.mdc · 139 | Cursor rules | testtesting-strategydeployment | 66/100 | 14 days ago | |
| danielvm-git/bigpowers.cursor/rules/audit-plan.mdc · 139 | Cursor rules | buildteststylegit | 74/100 | 14 days ago | |
| danielvm-git/bigpowers.cursor/rules/build-epic.mdc · 139 | Cursor rules | buildgit | 58/100 | 14 days ago | |
| danielvm-git/bigpowers.cursor/rules/change-request.mdc · 139 | Cursor rules | no sections | 48/100 | 14 days ago | |
| danielvm-git/bigpowers.cursor/rules/commit-message.mdc · 139 | Cursor rules | lint-formatstyletypesgit+3 | 82/100 | 14 days ago | |
| danielvm-git/bigpowers.cursor/rules/compose-workflow.mdc · 139 | Cursor rules | styledo-notagent-behaviour | 65/100 | 14 days ago | |
| danielvm-git/bigpowers.cursor/rules/context7-mcp.mdc · 139 | Cursor rules | style | 54/100 | 14 days ago | |
| danielvm-git/bigpowers.cursor/rules/deepen-architecture.mdc · 139 | Cursor rules | testtesting-strategydo-not | 57/100 | 14 days ago | |
| danielvm-git/bigpowers.cursor/rules/define-language.mdc · 139 | Cursor rules | lint-formatdo-not | 65/100 | 14 days ago | |
| danielvm-git/bigpowers.cursor/rules/define-success.mdc · 139 | Cursor rules | no sections | 4/100 | 14 days ago | |
| danielvm-git/bigpowers.cursor/rules/delegate-task.mdc · 139 | Cursor rules | git | 62/100 | 14 days ago | |
| danielvm-git/bigpowers.cursor/rules/deploy.mdc · 139 | Cursor rules | setupbuildtestdeployment | 77/100 | 14 days ago | |
| danielvm-git/bigpowers.windsurf/rules/verify-work.md · 139 | Windsurf rules | buildtestlint-formatagent-behaviour | 74/100 | 14 days ago | |
| danielvm-git/bigpowers.cursor/rules/develop-tdd.mdc · 139 | Cursor rules | teststylearchtesting-strategy+5 | 85/100 | 14 days ago | |
| danielvm-git/bigpowers.cursor/rules/diagnose-root.mdc · 139 | Cursor rules | no sections | 39/100 | 14 days ago | |
| danielvm-git/bigpowers.cursor/rules/diagnose-stall.mdc · 139 | Cursor rules | no sections | 44/100 | 14 days ago | |
| danielvm-git/bigpowers.cursor/rules/dispatch-agents.mdc · 139 | Cursor rules | git | 54/100 | 14 days ago | |
| danielvm-git/bigpowers.cursor/rules/edit-document.mdc · 139 | Cursor rules | no sections | 39/100 | 14 days ago | |
| danielvm-git/bigpowers.cursor/rules/elaborate-spec.mdc · 139 | Cursor rules | test | 58/100 | 14 days ago |
Same format, overlapping stack, ranked by quality.
| Repository | Format | Stack | Covers | Score | Changed |
|---|---|---|---|---|---|
| hiromaily/go-crypto-wallet.cursor/rules/typescript.mdc · 126 | Cursor rules | setupbuildtestlint-format+6 | 100/100 | 14 days ago | |
| TechSquidTV/Hermes.cursor/rules/10-hermes-api.mdc · 46 | Cursor rules | testlint-formatstylearch+5 | 100/100 | 14 days ago | |
| dodgecfr/combatfilms-webapp.cursor/rules/frontend.mdc · 0 | Cursor rules | setuptestlint-formatstyle+7 | 99/100 | 14 days ago | |
| deifos/clipmira-subtitles.cursor/rules/frontend.mdc · 1 | Cursor rules | setuptestlint-formatstyle+7 | 99/100 | 14 days ago | |
| markstev/mark-starter.cursor/rules/frontend.mdc · 0 | Cursor rules | setuptestlint-formatstyle+6 | 99/100 | 14 days ago | |
| Allymahmoud/case-intake-platform.cursor/rules/frontend.mdc · 0 | Cursor rules | setuptestlint-formatstyle+7 | 99/100 | 14 days ago | |
| langflow-ai/langflow.cursor/rules/docs_development.mdc · 153k | Cursor rules | setupbuildtestlint-format+7 | 97/100 | 14 days ago | |
| bybren-llc/safe-agentic-workflow.cursor/rules/10-backend-python.mdc · 399 | Cursor rules | testlint-formatstylegit+4 | 97/100 | today |
A badge carrying the measured quality of the strongest agent config file in this repository, out of 100. It reads from this index every time somebody loads your page, so it changes when the measurement changes and there is nothing to keep up to date. Free, no account, and the value is not something you or we can set by hand.
[](https://rulestack.kynth.studio/configs/danielvm-git-bigpowers-cursor-rules-release-branch)Would rather not hotlink us? Every badge is also served in shields.io’s endpoint schema, so shields renders the image and your readers never talk to our domain:
Published by Toolproof, the masthead over this index and eight others. The method behind the number is at toolproof.kynth.studio/methodology, and the whole thing is readable as JSON with no key at /api.