Skip to content
cccskills
FreePublished on GitHub

vibe-decision-journal

Extracts and records architectural decisions from diffs, conversation context, and explicit choices. Supports automatic extraction from staged changes, deduplication against prior decisions, and persistent ADR-format logging with spec traceability. Use after a significant design or architecture choice, before committing a diff that embeds implicit decisions, or when the same question keeps resurfacing.

The English summary is being prepared. Showing the original description.

Works withRedis
See how to install

Files included (1)

  • SKILL.md5.4 KB

SKILL.md (original)

Review the instructions the agent will receive before you install.

vibe-decision-journal

Decisions happen whether you document them or not. This skill makes sure they don't vanish into git history.

When to Use This Skill

  • After making any significant design, architecture, or behavioral choice
  • Before committing — extract implicit decisions from staged diffs
  • When you realize "we keep coming back to this question"
  • After a session where multiple design choices were made without explicit recording

When NOT to Use This Skill

  • Trivial implementation choices (variable naming, formatting, import order)
  • Decisions already captured and reviewed
  • Temporary/reversible choices (which test to run first)

Modes

Mode 1: Automatic Extraction (from staged diffs)

Use when committing or when the user says "what decisions did we make?"

  1. Read the staged diff:

    git diff --cached
    
  2. Analyze for implicit decisions — Look for changes that represent choices:

    • New abstractions, patterns, or data structures introduced
    • API contracts defined or changed
    • Caching/storage/retry strategies chosen
    • Error handling approaches selected
    • Behavioral changes (not just refactors)
    • Configuration or default values set
  3. Filter out non-decisions:

    • Process/workflow choices ("commit now", "run tests")
    • Tooling setup ("install package X")
    • Pure refactors with no behavioral change
    • Diagnostic observations ("X causes Y")
    • Trivial changes (formatting, imports, variable renames)
  4. Deduplicate against existing decisions:

    • Read existing decisions from docs/decisions/ or project decision log
    • Skip exact matches (same question + same decision)
    • Flag potential conflicts (same topic, different conclusion) — present both to user
    • If a new decision countermands an old one, mark the old one as Superseded by: [new decision]
  5. Present each extracted decision to the user for review (use the harness's structured question tool if it has one; otherwise ask in plain text):

    • Accept — record as-is
    • Accept with edits — user refines the wording
    • Not a decision — discard (it was a refactor, not a choice)
    • Already captured — skip

Mode 2: Explicit Recording (manual)

Use when the user explicitly states a decision.

  1. Capture the decision directly from the conversation.

Mode 3: Session Sweep

Use at end of session or when user says "what did we decide this session?"

  1. Review the work done this session — files changed, features built, bugs fixed
  2. Extract decisions from the pattern of changes (not just the latest diff)
  3. Present consolidated list for review

Decision Format

## DEC-[NNNN]: [Short title]
**Date**: [Today]
**Status**: Accepted | Superseded | Rejected
**Supersedes**: DEC-[NNNN] (if applicable)

### Context
[1-2 sentences: what situation prompted this decision]

### Decision
[What was decided. Be specific enough to reconstruct the choice.]

### Alternatives Considered
1. [Alternative A] — Rejected because [reason]

### Consequences
- [What this enables or constrains going forward]

### Affected Files
- [path/to/file.ext]

### Spec Sections (if applicable)
- [Which spec sections this decision affects]

Storage

Decisions are stored in docs/decisions/decisions.jsonl (append-only, one JSON object per line):

{
  "id": "DEC-0001",
  "title": "Use Redis for session caching",
  "status": "accepted",
  "date": "2026-03-07",
  "context": "Need sub-10ms session lookups at 10k req/s",
  "decision": "Use Redis with 24h TTL for session data",
  "alternatives": ["In-memory dict (no persistence)", "DynamoDB (too expensive at scale)"],
  "consequences": ["Adds Redis as infrastructure dependency", "Enables horizontal scaling"],
  "affected_files": ["src/cache.py", "config/redis.yml"],
  "spec_sections": ["## Session Management"],
  "supersedes": null,
  "extracted_from": "diff"
}

Also render a human-readable markdown version in docs/decisions/ as DEC-NNNN-[slug].md.

ID assignment: Read existing decisions, find the highest DEC-NNNN, increment by 1.

Deduplication Rules

When extracting decisions automatically:

  1. Exact match: Same question/topic AND same conclusion → skip
  2. Same topic, different conclusion: Present both to user — ask if this supersedes the prior decision
  3. Semantic overlap: If two extracted decisions from the same diff describe the same choice in different words, merge into one and present the clearer version

Output Format

Decisions Extracted: [N]

#DecisionSourceStatus
1Use Redis for session cachingdiff: src/cache.pyAccepted
224h TTL for all cached datadiff: config/redis.ymlAccepted
3Retry with exponential backoffexplicitAlready captured (DEC-0012)

New Decisions Recorded

  • DEC-0045: Use Redis for session caching
  • DEC-0046: 24h TTL for all cached data

Superseded Decisions

  • DEC-0008: "Use in-memory caching" → Superseded by DEC-0045

Reviews

No reviews yet. Tell others what you thought.

Comments

No login needed. Share how it worked for you, ask a question, or note where it did not run.

No comments yet. Be the first to write one.

Comments are published right away. Do not include personal information such as email addresses or phone numbers. Up to 2 URLs.

0 / 1,000 characters

This form is protected by reCAPTCHA, and the Google Privacy Policy and Terms of Service apply.

More skills from this repository

Validates completed work against defined acceptance criteria. Use after completing a task that has specific success criteria defined in issues, specs, or task descriptions.

The English summary is being prepared. Showing the original description.

ash1794/vibe-engineering164Updated Oct 8, 2026

Generates edge case, failure mode, and spec-driven test cases. Covers boundary values, nil inputs, concurrency, resource exhaustion, malformed data, and requirement-linked traceability tests. Use after happy-path tests exist and before claiming coverage is complete, when requirements lack tests, or before a security review.

The English summary is being prepared. Showing the original description.

ash1794/vibe-engineering164Updated Oct 8, 2026

Catches shortcuts and reward hacking — weakening or deleting tests to make them pass, hard-coding expected outputs, silently dropping requirements, or claiming work is done without running it. Use before declaring a task complete and whenever a test or requirement feels like it's in the way.

The English summary is being prepared. Showing the original description.

ash1794/vibe-engineering164Updated Oct 8, 2026

Safely integrates commits from parallel agent branches using sequential cherry-pick. Use after parallel work completes in isolated branches or worktrees.

The English summary is being prepared. Showing the original description.

ash1794/vibe-engineering164Updated Oct 8, 2026

Audits tests for concurrency safety — race conditions, shared mock state, cleanup ordering. Use when writing tests that involve goroutines, async operations, or shared mutable state.

The English summary is being prepared. Showing the original description.

ash1794/vibe-engineering164Updated Oct 8, 2026

Enforces tiered test coverage standards with three dimensions — line coverage by tier, spec-to-test traceability, and spec-to-code implementation mapping. Use before claiming code is complete.

The English summary is being prepared. Showing the original description.

ash1794/vibe-engineering164Updated Oct 8, 2026

See all skills by ash1794

Report a problem with this skill