Skip to main content

M8ven Score

dotslot: let agents fill the blanks, and prove they touched nothing else.

Owner: `<./owner:____________>`   Status: `<./status~:____________>`

$ dotslot fill release.md --set owner=Adam --set status="ready for tag" -i
$ dotslot check release.md --git-base HEAD
release.md: fill-safe (2 slot(s) changed)

CLI · pre-commit · GitHub Action · MCP server (Claude Code, Cursor, aider)

ci · MIT · v0.3.0 · Spec · Experiments · Changelog

What it is

Mark the parts of a file that may change with <./________>. An agent or script fills those blanks and nothing else. dotslot check proves the diff touched only the blanks, and that each blank kept its width, so columns and line wraps stay put. It works in docs, configs and code comments.

A file with slots is fill-only. That turns "don't touch the rest" into a rule a machine can check.

Install

Install from PyPI:

pip install dotslot
dotslot --help

Requires Python 3.10+ and wcwidth.

Use

dotslot new notes --width 26 --lines 3 --comment '# '   # generate a slot or block
dotslot scan FILE                                         # list slots, widths, capacity
dotslot fill FILE --set name=value -i                     # fill in place, width kept
dotslot check FILE --git-base HEAD [--allow a,b]          # prove only slots changed
dotslot check FILE --git-base HEAD --ignore-whitespace    # ...ignoring trailing whitespace outside slots
dotslot repad FILE --base OLD -i                          # restore padding after a hand edit
dotslot migrate FILE... -i                               # rewrite v0.1 `=` slots in the current syntax
dotslot fit FILE --targets 80,100,120                     # where will lines wrap?

Slot forms: <./______> (unnamed), <./owner:____> (named), <./status~:____> (ellipsis on overflow). In Markdown, put slots in backticks. Full grammar: SPEC.md.

Integrations

tool files what it does
MCP server dotslot-mcp --root . [--allow a,b] dotslot_scan, dotslot_fill, dotslot_check over stdio; schema-validated arguments; dry_run diffs; per-call allow; fill verifies before writing; paths confined to root
Claude Code integrations/claude-code/ .mcp.json, a PostToolUse hook that exits 2 on a violation, and a skill
Cursor integrations/cursor/.cursor/ mcp.json and a fill-only rule
aider integrations/aider/ lint-cmd: dotslot check --git-base HEAD with auto-lint
any agent integrations/AGENTS.md snippet to paste into your AGENTS.md
pre-commit .pre-commit-hooks.yaml dotslot-check, dotslot-lint
GitHub Action action.yml checks PR files against the base SHA, writes a JSON report to the step summary

Setup for each agent: integrations/README.md.

pre-commit (run dotslot after formatters):

- repo: https://github.com/ao3575911/dotslot
  rev: v0.3.1
  hooks:
    - id: dotslot-check
    - id: dotslot-lint

GitHub Action:

- uses: actions/checkout@v5
  with: { fetch-depth: 0 }
- uses: ao3575911/dotslot@v0.3.1
  with: { files: "docs/**/*.md config/*.yaml", allow: "status,owner" }

Inputs: files (required), allow, base (default: the PR base SHA), ignore-whitespace, report (default dotslot-report.json). The step summary lists violations and the JSON report (one array, one entry per file). No matched files is a pass; a missing base revision is a failure.

Limits

dotslot is a check, not a sandbox. The comment finder is a line heuristic unless you install dotslot[treesitter]; formatters such as gofmt can move columns, so run dotslot after them; trailing whitespace counts as a change unless you pass --ignore-whitespace. See CHANGELOG.md for open items and PLAN.md for the roadmap.

Repository layout

  • dotslot/: the package (CLI, MCP server).
  • slot/, bin/slot: the v0.1 reference, kept only so experiments/run.sh reproduces findings (a)–(g). Not installed.
  • tests/: 70 tests (12 v0.1, 33 v0.2, 25 v0.3 including the h1–h9 exit gate). Run pip install -e ".[test]" && pytest -q.
  • experiments/: run.sh (a–g) and run_v02.sh (v02, h, i), with recorded output in out/.

Licence

MIT. See LICENSE. Releases are GPG-signed in CI and carry SHA256SUMS and build provenance; see RELEASING.md.

Metadata

Release files for dotslot 0.6.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for dotslot 0.6.0
File Size Uploaded
dotslot-0.6.0.tar.gz 30.2 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for dotslot 0.6.0
File Interpreter ABI Platform
dotslot-0.6.0-py3-none-any.whl Python 3 none any Details

Total release size: 54.1 kB

Release files / dotslot-0.6.0.tar.gz

Download URL dotslot-0.6.0.tar.gz
Size 30.2 kB
Tags Source
SHA-256 checksum
How to use checksums
1642d39a90ca07f46278659ead6faaab06c7b8fdc560177c0f8a6251af4db2f4
BLAKE2b-256 checksum
How to use checksums
707cdaf8f4e99c7f536bdc3b95ce745de6e3d20d405188c63468da384a121063
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 14, 2026.

Transparency log

Release files / dotslot-0.6.0-py3-none-any.whl

Download URL dotslot-0.6.0-py3-none-any.whl
Size 23.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
9e1b27443ae824395266ebe03efd88a36ea74667e8ce12f4e27bf83c000bfc58
BLAKE2b-256 checksum
How to use checksums
d8ec882b3ead843bfb996235291f33031d4db72e09d8567c819dd40e3f61f3a1
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 14, 2026.

Transparency log

Release history Release notifications | RSS feed

0.8.1

2 release files

0.8.0

2 release files

This release

0.6.0 This release

2 release files

0.5.0

2 release files

0.4.0

2 release files

0.3.1

2 release files

0.3.0

2 release files

0.2.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page