feat: Case format and skill drafts

- Case format: YAML schema for investigation cases
  - title, briefing, evidence, suspects
  - Truth separated to truth.enc (base64 encoded)
  - Images: path or URL

- Two skills:
  - detective-play: Play investigation cases
  - detective-create: Create new cases

- Folder structure:
  - ~/.hermes/detective/cases/ for all cases
  - Each case: case.yaml + truth.enc + images/

- Truth protection: base64 encoded, decode only after playing
This commit is contained in:
2026-04-20 07:27:55 +00:00
parent ecfd0b1160
commit 64f30bf532
3 changed files with 339 additions and 0 deletions

View File

@@ -0,0 +1,82 @@
---
name: detective-create
description: Create mystery investigation cases for Hermes Detective Agency
---
# Detective Case Creator
Help users create mystery investigation cases.
## Case Structure
Create a folder in `~/.hermes/detective/cases/<case-name>/`
Each case needs:
```
<case-name>/
├── case.yaml # Case data
├── truth.enc # Encoded truth
└── images/ # Evidence images
```
## Case YAML Format
```yaml
title: "Case Title Here"
briefing:
narrative: |
The opening story. Set the scene for the investigation.
evidence:
- id: "evidence-01"
name: "Evidence Name"
image: "images/evidence-01.jpg"
description: "Brief description"
- id: "evidence-02"
name: "Another Evidence"
image: "images/evidence-02.jpg"
description: "Brief description"
suspects:
- id: "suspect-01"
name: "Suspect Name"
photo: "images/suspect-01.jpg"
description: "Background info"
```
## How to Encode Truth
The truth must be encoded to `truth.enc`:
```python
import base64
truth = """---
summary: |
What actually happened in the case.
key_points:
- "Key point 1"
- "Key point 2"
---"""
encoded = base64.b64encode(truth.encode()).decode()
# Write encoded to truth.enc
```
## Creating Images
Images can be:
- Real photos or documents
- AI-generated (use Pollinations or similar)
- Clear and readable
- JPG or PNG format
- Not too large (under 1MB each)
- Named clearly (evidence-01.jpg, suspect-01.jpg)
## Guidelines
- Case should be solvable with the evidence provided
- Truth should align with evidence (no hidden info)
- Include 2-4 evidence items and 2-3 suspects for Easy

View File

@@ -0,0 +1,52 @@
---
name: detective-play
description: Play mystery investigation cases powered by Kimi Vision
---
# Detective Play
You are a detective agency assistant. Help the user play mystery investigation cases.
## Cases Location
All cases are stored in:
```
~/.hermes/detective/cases/
```
Each case is a folder containing:
- `case.yaml` — Evidence, suspects, briefing (NO truth)
- `truth.enc` — Encoded solution
- `images/` — Evidence images
## How to Play
1. Look at available cases in `~/.hermes/detective/cases/`
2. Tell the user what cases are available
3. User picks a case
4. Load the case.yaml from that folder
5. Present the briefing narrative
6. Let the user examine evidence (show images from images/ folder)
7. Use Kimi Vision to analyze images when asked
8. Help theorize based on evidence
9. When user is ready, help them build and submit their theory
## When User Asks About Truth
Only reveal truth AFTER user has formed and submitted their theory.
To decode truth:
```python
import base64
with open('truth.enc', 'r') as f:
encoded = f.read().strip()
decoded = base64.b64decode(encoded.encode()).decode()
print(decoded)
```
## Important
- NEVER read truth.enc before the user is done investigating
- Case format: case.yaml (evidence + suspects only)
- Images are in the images/ subfolder
- Kimi Vision can analyze images when you call it