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:
@@ -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"
|
||||
Reference in New Issue
Block a user