بنقرة واحدة
soul
Use when observing user patterns and synthesizing a persistent identity profile
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
القائمة
Use when observing user patterns and synthesizing a persistent identity profile
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
استنادا إلى تصنيف SOC المهني
Use when a vague idea needs Socratic requirements discovery, topology confirmation, ambiguity scoring, and an approval-gated spec before execution
Use when a prompt asset keeps causing the same PDCA gate failure and you want to evolve it against a maintainer-authored structural check
Use when running a PDCA cycle across research, production, review, and refinement
Use when iteratively improving a draft until it meets a review target
Use when reviewing content, strategy, or code with parallel specialized reviewers
Use when a fetched URL returns 4xx/blocked, hits a WAF or captcha, or when a JS-heavy SPA returns no usable body. Escalates through public APIs, Jina Reader, header-diverse curl, TLS impersonation, headless browsers, and free archive mirrors until validated content is returned. Zero API keys.
| name | soul |
| description | Use when observing user patterns and synthesizing a persistent identity profile |
| effort | high |
Observation is not judgment. Record patterns only.
Build and maintain a persistent user identity profile from behavioral signals observed across sessions. Every claim in SOUL.md must be evidence-backed. Contradictions become conditional rules, not averages.
| Subcommand | Description |
|---|---|
init | Bootstrap a fresh observation log and SOUL.md stub from a template |
learn | Record new observations from the current session into the observation log |
show | Display current SOUL.md with evidence citations |
propose | Run full synthesis and output a proposed SOUL.md diff — does not write yet |
apply | Write the proposed SOUL.md to .data/soul/SOUL.md after user review |
diff | Compare current SOUL.md against a proposed version, highlighting changes |
reset | Archive current SOUL.md and start a fresh observation log |
retro | Show shipping metrics from git history across projects |
| Flag | Values | Default | Effect |
|---|---|---|---|
--mode | manual|learning|hybrid | hybrid | manual = only user-triggered; learning = auto-observe every session; hybrid = auto-observe + user-triggered synthesis |
--template | default|developer|writer|researcher | default | Starter template for init |
--import | file path | none | Import observations from an external file into the log |
--period | week|month|quarter | week | Time range for retro metrics |
--projects | comma-separated paths | auto-detect | Project directories for retro git scanning |
soul learn. No automatic logging.soul propose.init.data/soul/ already exists — if so, warn user and require explicit --force flagreferences/templates/{template}.md.data/soul/SOUL.md (stub from template, all fields empty/TBD).data/soul/observations.jsonl (empty log).data/soul/meta.jsonlearnreferences/observation-signals.md catalog{ signal_type, context, raw_text, inferred_pattern, session_id, timestamp }signal_type or raw_text.data/soul/observations.jsonlshow.data/soul/SOUL.mdobservations.jsonl by citation IDproposeobservations.jsonl must contain ≥10 sessions OR ≥30 observations. If below threshold, output gap report and stop.observations.jsonl contains shipping signal entries, include the most recent 4 as quantitative evidence for the "Work Patterns" and "Shipping Cadence" dimensionsreferences/synthesis-algorithm.mddiff automatically and surface any dimension with >30% shiftapplypropose has been run in this session (check for proposed output in conversation).data/soul/SOUL.md. [yes/no]".data/soul/SOUL.md, append apply event to meta.jsondiff.data/soul/SOUL.mdreferences/synthesis-algorithm.md for drift detection)retro--projects provided, use those paths.git/--period range:
references/retro-metrics.md specification:
.data/soul/SOUL.md exists, compare current cadence against the "Shipping Cadence" section — note acceleration, deceleration, or project focus shiftsshipping observation to observations.jsonl with aggregated metrics as evidence (signal_type: shipping, one entry per retro invocation)reset.data/soul/SOUL.md to .data/soul/archive/SOUL-{timestamp}.md, clear observations.jsonl, reset meta.jsonData directory:
.data/soul/relative to the plugin root. Create withmkdir -pbefore writing.
| File | Description |
|---|---|
.data/soul/SOUL.md | The synthesized soul document |
.data/soul/observations.jsonl | Append-only observation log (one JSON object per line) |
.data/soul/meta.json | Init timestamp, template, last synthesis date, observation count |
.data/soul/archive/ | Archived soul versions from reset calls |
{
"id": "obs-{timestamp}-{n}",
"session_id": "session-{YYYY-MM-DD}-{topic-slug}",
"signal_type": "correction|style|expertise|decision|emotional|shipping",
"context": "brief description of what was happening",
"raw_text": "exact quote or paraphrase of the signal",
"inferred_pattern": "what this reveals about the user",
"timestamp": "ISO-8601",
"weight": 1
}
shipping entries use the same schema with structured raw_text:
{
"id": "obs-{timestamp}-retro",
"session_id": "retro-{YYYY-MM-DD}",
"signal_type": "shipping",
"context": "retro --period week",
"raw_text": "{\"period\":\"2026-03-18..2026-03-25\",\"total_commits\":47,\"streak_days\":12,\"projects\":{\"christmas-ai-studio\":28,\"second-claude\":11,\"fronmpt-academy\":8},\"net_lines\":2340,\"peak_hours\":[14,15,22]}",
"inferred_pattern": "ships daily across 3 projects, heaviest in christmas-ai-studio, afternoon + late night peaks",
"timestamp": "ISO-8601",
"weight": 1
}
soul-keeper: { model: opus, agent: pikachu, constraint: "every dimension needs 2+ evidence citations, contradictions become conditional rules, generic descriptions are rejected" }
analyst: { model: sonnet, agent: alakazam, constraint: "extract signals matching observation catalog, return structured JSON, no inferences beyond what the signal supports" }
The most common failure: producing dimensions that could describe any knowledge worker. soul-keeper must run the anti-generic filter on every dimension before output. If a dimension reads like a LinkedIn bio, it is rejected.
Observation logs can grow large. When calling soul-keeper, summarize observations older than 30 days to a single paragraph per session. Only the last 5 sessions are passed verbatim. Total input to soul-keeper must not exceed 500 tokens of observation data per session in the summary window.
A user who is "direct in chat but verbose in reports" is NOT contradictory — those are conditional behaviors. Do not force a single characterization. The conditional rule format preserves predictive power; averaging destroys it.
SOUL.md must never contain medical data, financial details, relationship status, or political/religious beliefs unless the user explicitly provides them as work-relevant context. If a sensitive signal is observed, note "sensitive signal omitted" in the observation log without recording the content.
A >30% shift in any dimension is not automatically applied. It requires explicit user acknowledgment. Surface it visibly in propose output with the phrase "SIGNIFICANT DRIFT DETECTED" before applying.
.data/soul/SOUL.mdreferences/templates/references/observation-signals.mdreferences/synthesis-algorithm.mdreferences/retro-metrics.md