Skip to content
Back to skills

Reflections

ASecurity

616 tests pass, ruff clean. The console script runs from the installed package.

  • 11 stars
  • 0 votes
  • 0 copies
  • 2 views
  • Added September 23, 2026
ai-agentssecurity

Works with

  • cli
  • mcp

Security analysis

A100/100

Pro scans all 21 files and shows the line behind each finding

Scanned September 23, 2026

npx -y skills add vre/flow-state --skill reflections --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Reflections?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Reflections
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/vre-reflections/badge)](https://www.skillsdirectory.com/skills/vre-reflections)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
# Code reflection — cut 4c, the skill-backed CLI

616 tests pass, ruff clean. The console script runs from the installed package.

## The frame's premise did not survive being measured again

I opened this work reporting "four MCP processes, one connection, plus Thunderbird's four". Three
plans later it had become "four processes each holding its own connection", and a daemon had been
designed, reviewed twice, and hardened against socket hijacking to solve it.

Measured on the day it was dropped: **11 processes, zero connections.** Nothing connects until an
action asks. HC's question — "why over socket?" — was what made me check, and the answer was that I
had copied `chrome-control`'s daemon along with its file layout. That daemon exists because Chrome
pops a permission dialog on every new WebSocket connection; IMAP has none. I inherited an
architecture without its reason.

The failure was not the first measurement, which was correct. It was that each restatement was
slightly stronger than the last, and nobody was wrong at any single step. That is the exact shape
the wiki's "open the source, not the statement about it" rule describes, arriving in my own plans.

**~600 lines of security-sensitive IPC deleted before being written.** The two review rounds that
hardened it were not wasted — they are why the plan is kept rather than deleted — but the cheapest
defect to fix is still the one in a design nobody built.

## The trap that would have made the whole cut pointless

`.mcp.json` at a plugin root is auto-discovered. The frame recorded that back in August; I still
left `imap-slim/.mcp.json` in place while adding the skill entry. Installing the CLI would have
started the MCP server too, loaded the same ~814 tokens the skill exists to avoid, and every test
would have stayed green.

Caught by listing the two entries side by side and reading what each would actually load — not by
any test, until I wrote one. That test asserts the *absence* of a file, which is the only way this
particular mistake can fail loudly.

## What the CLI is

`imapctl.py` is argparse over `actions.run_action` and nothing else. Cut 4a's extraction is what
makes that possible: one dispatcher, two front-ends, no drift. Two details worth keeping:

- `preview` and `format` are always passed explicitly. The model rejects a missing value, and the
  CLI turns absence of a flag into `False` or a usage error rather than letting `None` through —
  the same "no silent default" rule cut 1a established, held at a second front-end.
- Failure is detected by the rendered text's prefix, which is honest but ugly. Precise exit codes
  need structured results. The plan says so instead of promising a mapping it cannot keep.

## Where the frame ends

Cut 5 was "the MCP role and two marketplace entries". The entries are here; the MCP role does not
exist because the MCP needs no change. The frame is finished, one cut short of its own plan,
because the thing that cut was for turned out not to be a problem.

Files in this skill

  • 2026-02-23-planning-draft-attachments.md3.6 KB
  • 2026-02-24-planning-ux-improvements.md2.4 KB
  • 2026-02-25-planning-snippet-preview-refinement.md3.5 KB
  • 2026-02-25-planning-thread-aware-read.md3.7 KB
  • 2026-03-03-cycle-snippet-preview.md2.3 KB
  • 2026-03-09-cycle-depth-quote-truncation.md1.9 KB
  • 2026-03-09-planning-depth-quote-truncation.md1.4 KB
  • 2026-04-20-cycle-code-fix-multi-account.md693 B
  • 2026-04-20-cycle-process-fix-multi-account.md700 B
  • 2026-04-20-planning-fix-multi-account.md746 B
  • 2026-05-08-cycle-code-prompt-injection-hardening.md3.8 KB
  • 2026-05-08-planning-prompt-injection-hardening.md2.5 KB
  • 2026-05-09-cycle-process-prompt-injection-hardening.md3.6 KB
  • 2026-06-04-code-injection-hardening.md1.2 KB
  • 2026-06-04-planning-injection-hardening.md1.4 KB
  • 2026-06-04-process-injection-hardening.md1.1 KB
  • 2026-08-24-planning-cut1-markdown-contract.md3.6 KB
  • 2026-08-26-cycle-code-cut1a-body-contract.md3 KB
  • 2026-08-26-cycle-code-cut2-connection-recovery.md2.8 KB
  • 2026-08-26-planning-cut2-connection-recovery.md3.8 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.