feat(roo): add Patrick-persona custom modes, skills, and mode-specific rules

Add 4 new custom modes with BigMind guidance:
- rules-bigmind/: Introspective Patrick mode (BigMind development)
- rules-homelab/: Tinkerer Patrick mode (TrueNAS, Docker, infra)
- rules-mcp-builder/: Craftsman Patrick mode (pi_mcps MCP servers)
- rules-paisy/: Professional Patrick mode (ADP Germany payroll)

Add reusable skills:
- skills/assessment-first/: structured assessment.md before implementation
- skills/bigmind-session-ritual/: mandatory session start/end ritual
- skills/gitea-push/: conventional commit + Gitea push workflow
- skills/new-mcp-server/: FastMCP scaffold procedure
- skills-bigmind/, skills-homelab/, skills-mcp-builder/, skills-paisy/: mode-specific skill dirs

Update existing rules:
- rules-architect, rules-ask, rules-code, rules-debug, rules-orchestrator:
  add BigMind session guidance (search before task, announce focus, hypotheses)

Add plans/MODES_AND_SKILLS_PLAN.md: full architecture document
This commit is contained in:
pplate
2026-04-04 09:52:08 +02:00
parent 42ffc85f0b
commit 87e0b9359e
20 changed files with 1326 additions and 7 deletions
+66
View File
@@ -0,0 +1,66 @@
---
name: jira-ticket
description: Creates an ADP Germany ESIDEPAISY Jira ticket following German language conventions and mandatory custom field requirements. Use this skill when opening a new ticket for Paisy work — handles summary, description, mandatory custom fields, and sprint assignment.
---
# Jira Ticket (Paisy/ADP)
## When to use
- Opening a new ESIDEPAISY Jira ticket
- Need to ensure all mandatory custom fields are set correctly
## When NOT to use
- Updating an existing ticket (use `update_ticket_fields` directly)
- Non-ESIDEPAISY projects
## Inputs required
- **Summary** — in German (technical terms as-is)
- **Description** — in German, include context and steps to reproduce
- **Issue type** — Bug, Story, Task, Sub-task
- **Feature Link** — current MEMO Feature (default: ESIDEPAISY-9648)
- **Sprint ID** — current active sprint (stored in BigMind: sprint 173657)
## Workflow
### Step 1 — Search for duplicate tickets
```
memory_search_facts("ESIDEPAISY {keyword}")
```
Also search Jira directly before creating.
### Step 2 — Create the ticket
Mandatory fields at creation:
```json
{
"summary": "[Deutscher Titel]",
"description": "[Deutschsprachige Beschreibung]",
"issuetype": {"name": "Bug"},
"customfield_10001": "ESIDEPAISY-9648",
"customfield_10501": {"value": "PAISY MEMO"},
"customfield_12700": {"value": "FY26 / 2"}
}
```
**Language rule:** Summary + description + comments → German. Class names, method names, stack traces, log output → original form.
### Step 3 — Set sprint (must be done AFTER creation)
```
update_ticket_fields(
ticket_id="{new-ticket-id}",
fields={"customfield_10000": [{"id": 173657}]}
)
```
### Step 4 — Link to Feature
If not set at creation, add Feature Link via update.
### Step 5 — Store in BigMind
```
memory_store_fact("codebase", "ESIDEPAISY-XXXXX created: [summary in English]. Module: [module].")
```
## Troubleshooting
- **Missing customfield_10001:** Ticket will be rejected or flagged at sprint review — always set
- **Sprint not assignable at creation:** Normal — Jira blocks this; use step 3 update pattern
- **Status confusion:** Terminal status is "Accepted" (not "Done"/"Closed")
@@ -0,0 +1,84 @@
---
name: paisy-assessment
description: Creates a structured assessment markdown document for an ADP Germany Paisy Jira ticket before any code is written. Use this skill at the start of every ESIDEPAISY ticket — covers root cause, affected files, risks, and implementation plan in German-compatible format.
---
# Paisy Assessment
## When to use
Every non-trivial ESIDEPAISY Jira ticket before touching any code. This is mandatory for Paisy work.
## When NOT to use
- Trivial config/text fixes without code changes
- A prior assessment already exists for this ticket
## Inputs required
- **Ticket ID** — e.g., `ESIDEPAISY-12021`
- **Ticket title** — from Jira
- **Module** — e.g., `eau`, `eubp`, `fex`, `common/beitragssatzdatei`
- **Error logs or symptoms** — stack traces, log output, reproduction steps
## Workflow
### Step 1 — Search BigMind for known patterns
```
memory_search_facts("ESIDEPAISY {module}")
memory_search_facts("bug-pattern {symptom keyword}")
memory_search_chunks("{error keyword}")
```
### Step 2 — Name and locate the file
Convention: `{MODULE}_{TICKET}_Assessment.md`
Location: `java/modules/.../docs/` within the affected module, or `java/modules/cs-modules/{module}/docs/`
### Step 3 — Write the assessment document
```markdown
# Assessment: {Ticket Title}
*Autor: Lumen | Datum: YYYY-MM-DD | Ticket: ESIDEPAISY-XXXXX*
## Zusammenfassung
[1-2 sentences in German summarizing the problem]
## Root Cause Analysis
[Technical analysis — can be in English for code-level detail]
### Bekannte Muster
[Reference any similar bugs from BigMind memory]
## Betroffene Dateien
| Datei | Zeile | Änderung |
|-------|-------|----------|
| ClassName.java | 428 | Add null-check |
## Risiken
- [Risk 1]
- [Risk 2]
## Alternativen
### Option A (gewählt): ...
### Option B: ...
## Implementierungsplan
1. [Step 1]
2. [Step 2]
## Offene Fragen
- [ ] Q1: [Question] → @{person}
```
### Step 4 — Store assessment location in BigMind
```
memory_store_fact("codebase", "ESIDEPAISY-XXXXX assessment at {path}")
```
### Step 5 — Create feature branch
```bash
git checkout -b feature/ESIDEPAISY-XXXXX-short-description
# or for bugs:
git checkout -b bugfix/eau/ESIDEPAISY-XXXXX-short-description
```
## Troubleshooting
- If root cause is unclear: write "TBD — pending log analysis" and open a question in the doc
- If blocked on another ticket: note the blocker in Offene Fragen and set ticket status to "Blocked"