Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 1 addition & 3 deletions .claude/skills/contributing-to-loopover/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -106,9 +106,7 @@ Use that generator instead of hand-writing config (**Codex uses TOML, Claude/Cur
pasted JSON block will not work in Codex). You'll use these tools in Phases 1 and 6 (inputs in
`reference.md`): `loopover_check_before_start`, `loopover_validate_linked_issue`,
`loopover_check_slop_risk`, `loopover_lint_pr_text`, `gittensory_predict_gate` — all metadata-only
(no source upload, no secrets). The first four are the new `loopover_`-prefixed primary names (#4775);
their old `gittensory_`-prefixed names still work, unchanged, as deprecated aliases for one full
minor-version deprecation cycle.
(no source upload, no secrets).

---

Expand Down
18 changes: 8 additions & 10 deletions .claude/skills/contributing-to-loopover/reference.md
Original file line number Diff line number Diff line change
Expand Up @@ -110,7 +110,7 @@ Implications for you:
a coverage miss closes the PR. This is why Phases 3–5 are non-negotiable.
- **A merge conflict closes the PR** — keep your branch current with `main`.
- **Linking the wrong issue closes the PR** — only link an open, unassigned, eligible issue (verify
with `loopover_validate_linked_issue`, aliased for one deprecation cycle as `gittensory_validate_linked_issue`).
with `loopover_validate_linked_issue`).
- Owner / automation-bot PRs are exempt from auto-close, and crucial guarded-path PRs are held — but
**assume you are a contributor** and that adverse = close.

Expand Down Expand Up @@ -149,30 +149,28 @@ gittensory-mcp init-client --print codex # → ~/.codex/config.toml ([mcp_se
gittensory-mcp init-client --print claude # or --print cursor (→ mcpServers JSON)
```

All tools are metadata-only (no source upload). Each local-package tool below is now primarily named
`loopover_*` (#4775) — the old `gittensory_*` name still works, unchanged, as a deprecated alias for
one full minor-version deprecation cycle. Run in this order:
All tools are metadata-only (no source upload). Run in this order:

1. `loopover_check_before_start` (was `gittensory_check_before_start`) — `{owner, repo, issueNumber,
1. `loopover_check_before_start` — `{owner, repo, issueNumber,
plannedChange{title, paths}}` → go/raise/avoid (claimed? duplicate cluster? already solved?).
2. `loopover_validate_linked_issue` (was `gittensory_validate_linked_issue`) — `{owner, repo,
2. `loopover_validate_linked_issue` — `{owner, repo,
issueNumber, plannedChange}` → is the issue open, valid, single-owner, solvable by this PR.
3. `loopover_check_slop_risk` (was `gittensory_check_slop_risk`) — `{changedFiles[{path,additions,deletions}], description, tests,
3. `loopover_check_slop_risk` — `{changedFiles[{path,additions,deletions}], description, tests,
testFiles}` → band + findings.
4. `gittensory_check_improvement_potential` — `{changedFiles?[{path,additions,deletions}], tests?,
testFiles?, patchCoverageDeltaPercent?, complexityDeltas?[{file,line,name,before,after,delta}],
duplicationDeltas?[{file,line,duplicateOfLine,lines}]}` → improvementScore + band
(insufficient-signal/none/minor/moderate/significant) + findings. The positive-axis mirror of
`loopover_check_slop_risk` — deterministic tier only (no LLM judgment); complexityDeltas/
duplicationDeltas are optional precomputed deltas the calling agent supplies, never raw source.
5. `loopover_lint_pr_text` (was `gittensory_lint_pr_text`) — `{commitMessages[], prBody, linkedIssue}` → verdict
5. `loopover_lint_pr_text` — `{commitMessages[], prBody, linkedIssue}` → verdict
strong/adequate/weak + specific fixes.
6. `loopover_validate_config` (was `gittensory_validate_config`) — `{content, source?}` → normalized manifest fields,
6. `loopover_validate_config` — `{content, source?}` → normalized manifest fields,
warnings, and ok/warn/error status.
7. `gittensory_predict_gate` — `{login, owner, repo, title, body, labels, linkedIssues}` → predicted
conclusion + blockers + warnings + readiness score.

(Auth'd extras: `loopover_preflight_pr` / `…_local_diff` (was `gittensory_preflight_pr` / `…_local_diff`)
(Auth'd extras: `loopover_preflight_pr` / `…_local_diff`
for lane fit + collision + queue health; `gittensory_get_pr_ai_review_findings` — `{login, owner, repo,
pullNumber}` → structured post-submission AI-review inline findings (category/path/severity) for your
own PR.)
Expand Down
6 changes: 2 additions & 4 deletions packages/gittensory-mcp/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -142,7 +142,7 @@ The report has an `overallStatus` (`pass`/`warn`/`fail`) and a `sections` array
degrades to `fail` with a public-safe `slopRiskError`/`prTextLintError` reason instead of aborting the
whole report — the other sections still return.

The same composed check is exposed to MCP clients as `loopover_review_pr_before_push` (aliased for one deprecation cycle as `gittensory_review_pr_before_push`).
The same composed check is exposed to MCP clients as `loopover_review_pr_before_push`.

## Auth

Expand Down Expand Up @@ -188,8 +188,6 @@ The same capabilities are exposed to MCP clients as:
- `loopover_agent_explain_next_action`
- `loopover_agent_prepare_pr_packet`

(Each is aliased for one deprecation cycle under its old `gittensory_agent_*` name.)

### Client config

`init-client --print <host>` prints the stdio MCP config for a host: `codex` (TOML), `claude`, `cursor`, and `mcp` (the shared `mcpServers` JSON shape), and `vscode` (VS Code's native `servers` map with `"type": "stdio"`, for `.vscode/mcp.json`). It prints config only; it never edits client files.
Expand Down Expand Up @@ -273,7 +271,7 @@ gittensory-mcp changelog

## Offline decision-pack fallback

Successful `decision-pack` and MCP `loopover_get_decision_pack` calls (aliased for one deprecation cycle as `gittensory_get_decision_pack`) store a bounded last-good local cache entry keyed by API version and login. If the API or network is temporarily unavailable, the wrapper can return that last-good guidance as `source: "local_cache"` with `stale: true`, `cachedAt`, and rerun guidance. Auth and permission failures do not use stale fallback data.
Successful `decision-pack` and MCP `loopover_get_decision_pack` calls store a bounded last-good local cache entry keyed by API version and login. If the API or network is temporarily unavailable, the wrapper can return that last-good guidance as `source: "local_cache"` with `stale: true`, `cachedAt`, and rerun guidance. Auth and permission failures do not use stale fallback data.

The cache excludes source contents and local paths, is bounded, and can be removed with:

Expand Down
Loading