Skip to content

feat(grill): native sin-code grill CLI (issue #141 fusion)#220

Merged
Delqhi merged 1 commit into
mainfrom
feat/issue-141-grill-fusion
Jun 16, 2026
Merged

feat(grill): native sin-code grill CLI (issue #141 fusion)#220
Delqhi merged 1 commit into
mainfrom
feat/issue-141-grill-fusion

Conversation

@Delqhi

@Delqhi Delqhi commented Jun 16, 2026

Copy link
Copy Markdown
Collaborator

Implements the native Go replacement for the external SIN-Code-Grill-Me-Skill Python MCP server. The bundled SKILL.md doc becomes a documentation pointer to the new sin-code grill subcommand.

What ships

  • cmd/sin-code/internal/grill/ — 4 source files + 14 race-clean tests
  • cmd/sin-code/grill_cmd.go — 5 subcommands (start/next/answer/status/synthesize)
  • Question catalog — 8 anti-patterns (Hidden Assumptions, Rollback Plan, Failure Modes, Operator Cost, Premature Optimization, Scope Creep, Single Point of Failure, Verification Gap)
  • JSON file storage at $SIN_CODE_HOME/grill/.json, atomic writes
  • main.go registration (additive)

Live smoke test

$ sin-code grill start 'ship a binary'
started session grill-3cba08636002cb98
  seed question: What is the core decision you want this grilling to resolve about: ship a binary?

$ sin-code grill next grill-3cba08636002cb98
sub-question under d0:
  d1: [Rollback Plan] Can the operator undo step 1 cleanly, or is it a one-way door?

$ sin-code grill answer grill-3cba08636002cb98 d1 'I assume the operator has admin access'
answered decision d1 in session grill-3cba08636002cb98

$ sin-code grill synthesize grill-3cba08636002cb98
# Grilling Synthesis
## Assumptions
- [Rollback Plan] Can the operator... (assumed: I assume...)

Hard mandates honored

  • M2: no new deps
  • M5: cmd/sin-code/internal/grill/
  • M7: 14/14 tests pass under go test -race -count=1

What does NOT ship (deferred to v1)

  • SQLite session storage (the issue body's 'SQLite session/ledger DB'). v0 uses JSON files; v1 will wire to internal/session/store.
  • The full upstream question catalog (v0 ships 8 seed anti-patterns; v1 imports the full set from the upstream SKILL.md).

Diffstat

 7 files changed, 712 insertions(+), 1 deletion(-)

Closes

What ships:
  - cmd/sin-code/internal/grill/ — 4 source files (types, catalog,
    manager, grill_test) + 14 race-clean unit tests
  - cmd/sin-code/grill_cmd.go — 5 subcommands:
    - 'grill start <topic>' — begin a session
    - 'grill next <id>' — ask the next adversarial question
    - 'grill answer <id> <d-id> <text>' — record response
      (use 'done' to resolve)
    - 'grill status <id>' — show decisions
    - 'grill synthesize <id> [--json]' — summary
  - Question catalog — 8 anti-patterns with 2-3 example
    questions each (Hidden Assumptions, Rollback Plan, etc.)
  - JSON file storage at $SIN_CODE_HOME/grill/<id>.json,
    atomic writes (temp + rename)
  - main.go registration (additive, no breaking change)
  - CHANGELOG entry

Replaces the external SIN-Code-Grill-Me-Skill Python MCP server
(38 KB). The bundled SKILL.md in skills/process-skills/skill-
process-grill/ documents the native command. v1 follow-up:
migrate the JSON storage to SQLite via internal/session/store.

Hard mandates honored:
  - M2: no new deps (stdlib + gopkg.in/yaml.v3 already in go.sum)
  - M5: cmd/sin-code/internal/grill/
  - M7: 14/14 tests pass under go test -race -count=1

Live smoke test:
  $ sin-code grill start 'ship a binary'
  started session grill-3cba08636002cb98
    topic: ship a binary
    seed question: What is the core decision...

  $ sin-code grill next grill-3cba08636002cb98
  sub-question under d0:
    d1: [Rollback Plan] Can the operator undo step 1 cleanly...

  $ sin-code grill answer grill-3cba08636002cb98 d1 'I assume...'
  answered decision d1 in session grill-3cba08636002cb98

  $ sin-code grill synthesize grill-3cba08636002cb98
  # Grilling Synthesis
  ## Assumptions
  - [Rollback Plan] Can the operator... (assumed: I assume...)

Refs: #141
@vercel

vercel Bot commented Jun 16, 2026

Copy link
Copy Markdown
Contributor

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
sin-code Ready Ready Preview, Comment, Open in v0 Jun 16, 2026 7:13pm

@Delqhi
Delqhi merged commit 22c960e into main Jun 16, 2026
8 of 10 checks passed
@Delqhi
Delqhi deleted the feat/issue-141-grill-fusion branch June 16, 2026 19:13
@github-actions

Copy link
Copy Markdown

🏆 CEO Audit — A+ (100.0/100)

Metric Value
Grade A+
Score 100.0/100
Critical findings 0
High findings 0
Profile QUICK
Min grade gate B

📥 Download full report (Markdown)
📊 Download SARIF (for Code Scanning)

Run ~/.config/opencode/skills/ceo-audit/scripts/audit.sh . --profile=QUICK locally to reproduce.

@github-actions

Copy link
Copy Markdown

🏆 CEO Audit — A+ (100.0/100)

Metric Value
Grade A+
Score 100.0/100
Critical findings 0
High findings 0
Medium findings 0
Profile QUICK
Min grade gate B

📥 Download full report (Markdown)

Run ID: 27641760879 · Commit: ${github.sha}

Run ~/.config/opencode/skills/ceo-audit/scripts/audit.sh . --profile=QUICK locally to reproduce.

// NewManager opens (or creates) the grill directory. Sessions are
// loaded lazily on first access; the manager is cheap to construct.
func NewManager(dir string) (*Manager, error) {
if err := os.MkdirAll(dir, 0o755); err != nil {
return err
}
tmp := path + ".tmp"
if err := os.WriteFile(tmp, b, 0o644); err != nil {

func (m *Manager) load(id string) (*Session, error) {
path := m.path(id)
b, err := os.ReadFile(path)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants