Turn failures into lessons you can review.

Your agent records and proposes. You decide what stays. SIL tracks deadlines, changes, and evidence.

A local kit under your control

CLI, skill, and templates for projects that work with coding agents. No server, account, or API calls.

Capture with evidence

Separate what happened, the suspected cause, and the proposed improvement. Each lesson links to its occurrence.

Decide in batches

Adopt, try, defer until a date, or reject. Frequency is adjustable and every decision stays in the history.

Reassess validity

Time and changes flag potentially outdated rules. A person decides whether to keep, revise, or retire them.

From fact to rule, with explicit steps

The agent can capture occurrences during authorized work. Making a rule permanent requires an explicit decision.

Occurrence→Proposal→Decision→Rule→Promotion→Review

The framework does not train models or monitor conversations on its own. The skill guides the agent to check context at the start, capture failures during work, and check pending items before finishing.

Try it before integrating

Python 3.10+ and Git are enough. The demo uses a temporary project with clearly labeled fictional records and removes it when finished.

1

Download and run the demo

git clone https://github.com/inematds/sil-loop-r.git
cd sil-loop-r
python3 scripts/demo.py
python3 -m unittest discover -s tests -v

The demo walks through capture, fictional approval, review, and retirement. It does not modify your other projects.

2

Choose the project to track

Replace the path with your chosen directory. The command only creates local .sil storage; it does not change instructions or install hooks.

python3 sil.py --project /caminho/do/projeto init
python3 sil.py --project /caminho/do/projeto occurrence \
  --title "Test accessed the wrong service" \
  --evidence "Local log: the port was already in use"
python3 sil.py --project /caminho/do/projeto lesson \
  --occurrence O0001 \
  --proposal "Abort when the port is in use" \
  --scope "Test server"

Use the ID returned by the previous command. O0001 is only the first record in an empty project.

3

Check the batch and record a decision

python3 sil.py --project /caminho/do/projeto status
python3 sil.py --project /caminho/do/projeto request

The agent presents the proposals. Run the next command only after explicit approval for the specified lesson.

python3 sil.py --project /caminho/do/projeto decide L0001 adopt \
  --approved-by "Approver" \
  --reason "Approved after reviewing the evidence"

You can also use reject, defer, and trial. Deferrals and trials require a future date; trials require a verifiable criterion. See decide --help.

4

Review rules over time

python3 sil.py --project /caminho/do/projeto context
python3 sil.py --project /caminho/do/projeto check
python3 sil.py --project /caminho/do/projeto review R0001 keep \
  --approved-by "Approver" \
  --reason "Protection still needed; evidence reviewed"

check returns 0 when no overdue items remain, 1 when a decision or review is due, and 2 on error. Exit code 0 does not certify that rules are true.

Choose when to discuss lessons

The first threshold reached calls for a batch. The simulation below assumes new proposals with no previous reminder. It does not save data or change configuration.

Actual CLI configuration

python3 sil.py --project /caminho/do/projeto config \
  --approval-days 7 \
  --approval-releases 2 \
  --approval-batch 5 \
  --review-days 30 \
  --uncited-releases 5

A reminder does not approve or close pending items. Deadlines become due on the specified day. Frequencies are evaluated when the CLI runs; the kit does not install scheduled tasks.

Old does not mean invalid

Missing citations are a reason to investigate. Rules that protect against rare events may still be needed.

Deadline reached

Periodic reviews ask whether the problem and scope still exist. Citing a rule does not postpone this review.

File changed

Use --watch when proposing a lesson. Changed content or a missing file flags the rule for reassessment.

Documented decision

Keeping, revising, or retiring requires a reason. History is preserved, and changes invalidate the previous verification when applicable.

The rule reaches the next session

A new session does not query the database on its own. Binding rules go into a block in AGENTS.md, and check flags it when the block falls behind.

Promotion question

Would breaking the rule in a session that never consults SIL cause real harm? If yes, mark it with enforce --binding yes.

Rung and leak

Record whether the rule is only text, a checklist, a test, a probe, a hook or a server rule, and how it can be bypassed.

Watched block

promote shows the diff; promote --write writes between markers and keeps the rest. A missing, stale or corrupted block makes check return 1.

python3 sil.py --project /path/to/project enforce R0001 --binding yes --rung hook \
  --leak "git push --no-verify" --approved-by "Owner" --reason "A wrong deploy breaks the app"
python3 sil.py --project /path/to/project promote --write

Bring the method to your agent

The skill ships with the code and can be read directly or optionally installed in your chosen assistant. This project does not install it for you.

Read the skill (in Portuguese)

The agent captures facts and prepares decisions. You control permanent rules. Changes to instructions, hooks, and code require authorized scope.

What version 1.1 checks

The CLI validates states and references, calculates deadlines, and compares associated files. Reviewing meaning depends on a person or an agent working with evidence.

The verify command stores results from tests already run. It does not execute commands or certify reports. The approver name is declared, not authenticated.

Data is stored in .sil/state.sqlite3. Ignore this folder in the consuming project’s Git repository and review exports before sharing. There is no cloud sync, admin interface, or notification delivery.

Read the architecture and decisions (in Portuguese) · Full documentation