Slice refactors, fail-fast gates, evidence-driven logging templates for code agents
Project description
sliceproofkit
A small, opinionated control-plane kit for code agents:
- Slice refactors (small, verifiable changes)
- Fail-fast gates (stop regressions early)
- Evidence-driven runs via timestamped logs (grep-friendly)
Think of it as “repo-native muscle memory” for you + your code agent: what to read first, how to validate, where evidence lives, and how to persist knowledge across tasks.
Why
If you’ve ever had a code agent:
- refactor too much → features disappear / bugs reappear
- “fix” via silent fallbacks → problems get hidden until later
- leave progress only in chat → nothing is grep-able next time
…then you don’t need a smarter agent. You need a workflow that constrains the agent.
sliceproofkit installs that workflow into your repo as files + scripts.
Quick start
Install
pip install sliceproofkit
# or (no env pollution)
uvx sliceproofkit --help
Apply to a repo
sliceproofkit apply --dest . --agents all
# or pick some
sliceproofkit apply --dest . --agents antigravity,trae,cursor
# from this repo (no install)
sliceproofkit apply --kit src/sliceproofkit/kit --dest . --agents all
List supported agents
sliceproofkit list-agents
Run anything with evidence logs
./scripts/run_with_log.sh smoke -- echo "hello"
./scripts/grep_logs.sh "hello"
Run the fail-fast gate
./scripts/run_with_log.sh verify_fast -- ./scripts/verify_fast.sh
One-time manual setup (recommended, ~10 minutes)
The kit provides the control plane, but your repo must define two “facts” for maximum agent speed:
1) Fill docs/INDEX.md
This is the repo navigation map. Minimal fill is enough:
- entry points (CLI / main / service)
- how to run locally
- where config lives (path + format)
- key modules (domain/infra/utils)
2) Create scripts/verify_fast.local.sh
Most real repos have custom commands (monorepo, Makefile, just, tox/nox, etc.). Create a local fast gate and make it executable:
cat > scripts/verify_fast.local.sh << 'EOF'
#!/usr/bin/env bash
set -euo pipefail
# Example (edit to match your repo)
# python -m compileall -q .
# ruff check .
# pytest -q
echo "TODO: define your project fast gate"
exit 2
EOF
chmod +x scripts/verify_fast.local.sh
verify_fast.sh will prefer verify_fast.local.sh if present.
Optional but valuable: tune
docs/STANDARDS.md(architecture boundaries + “don’t change these contracts”) andLOCKED_FILES.txt.
How it works
Flow
flowchart TD
classDef entry fill:#f8fafc,stroke:#64748b,stroke-width:1px,color:#111;
classDef doc fill:#ecfeff,stroke:#06b6d4,stroke-width:1px,color:#111;
classDef mem fill:#eef2ff,stroke:#6366f1,stroke-width:1px,color:#111;
classDef gate fill:#f0fdf4,stroke:#22c55e,stroke-width:1px,color:#111;
classDef run fill:#fff7ed,stroke:#fb923c,stroke-width:1px,color:#111;
classDef log fill:#fdf2f8,stroke:#db2777,stroke-width:1px,color:#111;
classDef done fill:#f5f3ff,stroke:#8b5cf6,stroke-width:1px,color:#111;
A["Start: Agent receives task"]:::entry
B["Read AGENT.md<br/>(Search Order + DoD + Commands)"]:::doc
C["Slice Protocol<br/>S0 Define constraints<br/>S1 Lock oracle (test/repro)<br/>S2 Small change (<=300 LOC)"]:::gate
D["Run with evidence<br/>./scripts/run_with_log.sh <tag> -- <cmd>"]:::run
E["verify_fast gate (fail-fast)<br/>check_locked<br/>check_memory<br/>check_outputs<br/>lint_gate<br/>tests/smoke"]:::gate
F{"PASS?"}:::gate
G["Fix smallest delta<br/>re-run verify_fast"]:::gate
H["Evidence produced<br/>logs/<tag>_<YYYYMMDD_HHMMSS>.log<br/>logs/latest.log -> newest<br/>logs/runs.tsv index"]:::log
I["Update STM<br/>memory/STM.md: run_id/log/verify<br/>changes + next slice"]:::mem
J["If stable knowledge found<br/>Write LTM note (kid/tags/updated)<br/>Update memory/INDEX.md"]:::mem
K["Done (DoD satisfied)<br/>Oracle exists + verify_fast PASS<br/>Evidence linked + STM updated"]:::done
A --> B --> C --> D --> E --> F
F -- "No" --> G --> D
F -- "Yes" --> H --> I --> J --> K
User ↔ Agent interaction
sequenceDiagram
autonumber
participant U as User
participant CLI as sliceproofkit (CLI)
participant R as Repo (files/scripts)
participant AG as Code Agent
participant SH as Shell (run_with_log)
participant LG as Logs (logs/*)
participant MEM as Memory (STM/LTM)
participant V as verify_fast (gates)
U->>CLI: pip install sliceproofkit
U->>CLI: sliceproofkit apply --dest . --agents <selected>
CLI->>R: Copy control plane (AGENT/docs/memory/scripts) + agent rules
CLI->>R: Merge .gitignore + ensure scripts executable
Note over U,R: One-time manual setup (recommended, ~10 min)
U->>R: Edit docs/INDEX.md (entry points / modules / config / verify)
U->>R: Create scripts/verify_fast.local.sh (project-specific fast gate)
opt Optional hardening
U->>R: Tune docs/STANDARDS.md + LOCKED_FILES.txt
end
U->>AG: Give task + repo context
AG->>R: Read AGENT.md (search order + DoD)
AG->>R: Read docs/INDEX.md + memory/STM.md
AG->>AG: Plan in slices (S0-S4)
loop Each slice
AG->>R: Add/adjust oracle (test or repro)
AG->>R: Implement small change (<=300 LOC)
AG->>SH: ./scripts/run_with_log.sh verify_fast -- ./scripts/verify_fast.sh
SH->>V: check_locked -> check_memory -> check_outputs -> lint_gate -> tests/smoke
V-->>SH: PASS/FAIL + exit_code
SH->>LG: Write logs/<tag>_<ts>.log + latest.log + runs.tsv + meta
alt FAIL
AG->>LG: Read logs/latest.log / grep errors
AG->>R: Fix smallest delta
else PASS
AG->>MEM: Update memory/STM.md with run_id/log/verify + changes + next slice
opt Stable knowledge discovered
AG->>MEM: Write memory/LTM/*.md (kid/tags/updated) + update memory/INDEX.md
end
end
end
AG-->>U: Report completion with evidence (run_id, log, verify) + files changed
What gets installed into your repo
Common control plane
AGENT.md— read-first entrypoint (search order, DoD, commands)docs/— standards, logging spec, ADR templates, repo indexmemory/— STM + LTM conventions (grep-first)scripts/— run-with-log, grep logs, verify gates, locked-files check.gitignoresnippet is merged (logs/ etc.)
Evidence logs
logs/<tag>_YYYYMMDD_HHMMSS.log(one log per run)logs/latest.log(symlink/copy to newest log)logs/runs.tsv(index)
Supported agents
Agents are applied via --agents (comma-separated) or all.
Current templates include:
antigravitytraecursorcontinueclinecopilotclaude_codewindsurfaideriflow-clicodebuddy
Add a new agent:
- Create
src/sliceproofkit/kit/agents/<agent_name>/...- Add it to
src/sliceproofkit/kit/manifest.yaml- Done — the apply tool discovers it automatically
Lint gate: what it checks
verify_fast is a layered, fail-fast gate:
- Locked files: prevent accidental edits to repo contracts (
LOCKED_FILES.txt) - Memory format: STM/LTM must stay grep-able (headers, required keys)
- Outputs format: ADR/INDEX must include evidence fields, etc.
- Lint gate: stack-aware lint/format/typecheck (and/or your local override)
- Tests/smoke: minimal sanity checks
Your job is to define what “fast enough + strict enough” means for your repo
(via scripts/verify_fast.local.sh).
CLI reference
sliceproofkit --help
sliceproofkit list-agents
sliceproofkit apply --dest <repo_path> --agents all
sliceproofkit apply --dest <repo_path> --agents antigravity,trae,cursor --force
Contributing
PRs welcome—especially:
- better stack autodetection for
verify_fast - more agent rule templates
- stronger “evidence formatting” gates that stay simple & grep-friendly
License
MIT
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file sliceproofkit-0.1.2.tar.gz.
File metadata
- Download URL: sliceproofkit-0.1.2.tar.gz
- Upload date:
- Size: 24.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
35eb76ce4fc3593bd8fd0ae0f405d1564b85e320b97250d9dc6642f0fa46fa2c
|
|
| MD5 |
e2f2230841cd776bee5ec2b502d47b94
|
|
| BLAKE2b-256 |
e62854ef3bd0e364e6351342b7feb9dcd29c0538c3c8183e506cc115ffd7a283
|
Provenance
The following attestation bundles were made for sliceproofkit-0.1.2.tar.gz:
Publisher:
pypi-publish.yml on QingGo/sliceproofkit
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
sliceproofkit-0.1.2.tar.gz -
Subject digest:
35eb76ce4fc3593bd8fd0ae0f405d1564b85e320b97250d9dc6642f0fa46fa2c - Sigstore transparency entry: 790337138
- Sigstore integration time:
-
Permalink:
QingGo/sliceproofkit@60a4ea61deaa6bf51cf899abf1b23018560695de -
Branch / Tag:
refs/tags/v0.1.2 - Owner: https://github.com/QingGo
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
pypi-publish.yml@60a4ea61deaa6bf51cf899abf1b23018560695de -
Trigger Event:
push
-
Statement type:
File details
Details for the file sliceproofkit-0.1.2-py3-none-any.whl.
File metadata
- Download URL: sliceproofkit-0.1.2-py3-none-any.whl
- Upload date:
- Size: 32.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3327033a6e31d314dca0a31b5037f396d2edb00a4b247525fcb95be607c0075e
|
|
| MD5 |
0db2fed0845fa9855b2e7fc6c8a71193
|
|
| BLAKE2b-256 |
85f42e33c3cbb6f973facd12eb65fce8672bfc4483210c865b05e5b6e90d177b
|
Provenance
The following attestation bundles were made for sliceproofkit-0.1.2-py3-none-any.whl:
Publisher:
pypi-publish.yml on QingGo/sliceproofkit
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
sliceproofkit-0.1.2-py3-none-any.whl -
Subject digest:
3327033a6e31d314dca0a31b5037f396d2edb00a4b247525fcb95be607c0075e - Sigstore transparency entry: 790337143
- Sigstore integration time:
-
Permalink:
QingGo/sliceproofkit@60a4ea61deaa6bf51cf899abf1b23018560695de -
Branch / Tag:
refs/tags/v0.1.2 - Owner: https://github.com/QingGo
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
pypi-publish.yml@60a4ea61deaa6bf51cf899abf1b23018560695de -
Trigger Event:
push
-
Statement type: