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:
82
docs/skills/detective-create/SKILL.md
Normal file
82
docs/skills/detective-create/SKILL.md
Normal 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
|
||||
52
docs/skills/detective-play/SKILL.md
Normal file
52
docs/skills/detective-play/SKILL.md
Normal 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
|
||||
Reference in New Issue
Block a user