--- a/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/xml.xsd
+++ b/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/xml.xsd
@@ -0,0 +1,116 @@
+
+
+
+
+
+ See http://www.w3.org/XML/1998/namespace.html and
+ http://www.w3.org/TR/REC-xml for information about this namespace.
+
+ This schema document describes the XML namespace, in a form
+ suitable for import by other schema documents.
+
+ Note that local names in this namespace are intended to be defined
+ only by the World Wide Web Consortium or its subgroups. The
+ following names are currently defined in this namespace and should
+ not be used with conflicting semantics by any Working Group,
+ specification, or document instance:
+
+ base (as an attribute name): denotes an attribute whose value
+ provides a URI to be used as the base for interpreting any
+ relative URIs in the scope of the element on which it
+ appears; its value is inherited. This name is reserved
+ by virtue of its definition in the XML Base specification.
+
+ lang (as an attribute name): denotes an attribute whose value
+ is a language code for the natural language of the content of
+ any element; its value is inherited. This name is reserved
+ by virtue of its definition in the XML specification.
+
+ space (as an attribute name): denotes an attribute whose
+ value is a keyword indicating what whitespace processing
+ discipline is intended for the content of the element; its
+ value is inherited. This name is reserved by virtue of its
+ definition in the XML specification.
+
+ Father (in any context at all): denotes Jon Bosak, the chair of
+ the original XML Working Group. This name is reserved by
+ the following decision of the W3C XML Plenary and
+ XML Coordination groups:
+
+ In appreciation for his vision, leadership and dedication
+ the W3C XML Plenary on this 10th day of February, 2000
+ reserves for Jon Bosak in perpetuity the XML name
+ xml:Father
+
+
+
+
+ This schema defines attributes and an attribute group
+ suitable for use by
+ schemas wishing to allow xml:base, xml:lang or xml:space attributes
+ on elements they define.
+
+ To enable this, such a schema must import this schema
+ for the XML namespace, e.g. as follows:
+ <schema . . .>
+ . . .
+ <import namespace="http://www.w3.org/XML/1998/namespace"
+ schemaLocation="http://www.w3.org/2001/03/xml.xsd"/>
+
+ Subsequently, qualified reference to any of the attributes
+ or the group defined below will have the desired effect, e.g.
+
+ <type . . .>
+ . . .
+ <attributeGroup ref="xml:specialAttrs"/>
+
+ will define a type which will schema-validate an instance
+ element with any of those attributes
+
+
+
+ In keeping with the XML Schema WG's standard versioning
+ policy, this schema document will persist at
+ http://www.w3.org/2001/03/xml.xsd.
+ At the date of issue it can also be found at
+ http://www.w3.org/2001/xml.xsd.
+ The schema document at that URI may however change in the future,
+ in order to remain compatible with the latest version of XML Schema
+ itself. In other words, if the XML Schema namespace changes, the version
+ of this document at
+ http://www.w3.org/2001/xml.xsd will change
+ accordingly; the version at
+ http://www.w3.org/2001/03/xml.xsd will not change.
+
+
+
+
+
+ In due course, we should install the relevant ISO 2- and 3-letter
+ codes as the enumerated possible values . . .
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ See http://www.w3.org/TR/xmlbase/ for
+ information about this attribute.
+
+
+
+
+
+
+
+
+
+
Neuer Skill „xlsx" — Use this skill any time a spreadsheet file is the primary input or output.
Technischen Diff anzeigen
--- a/skills/xlsx/SKILL.md
+++ b/skills/xlsx/SKILL.md
@@ -0,0 +1,5 @@
+---
+name: xlsx
+description: "Use this skill any time a spreadsheet file is the primary input or output. This means any task where the user wants to: open, read, edit, or fix an existing .xlsx, .xlsm, .csv, or .tsv file (e.g., adding columns, computing formulas, formatting, charting, cleaning messy data); create a new spreadsheet from scratch or from other data sources; or convert between tabular file formats. Trigger especially when the user references a spreadsheet file by name or path — even casually (like \"the xlsx in my downloads\") — and wants something done to it or produced from it. Also trigger for cleaning or restructuring messy tabular data files (malformed rows, misplaced headers, junk data) into proper spreadsheets. The deliverable must be a spreadsheet file. Do NOT trigger when the primary deliverable is a Word document, HTML report, standalone Python script, database pipeline, or Google Sheets API integration, even if tabular data is involved."
+license: Proprietary. LICENSE.txt has complete terms
+---
🧩
Skill-Anpassung
Neu
skills/xlsx/SKILL.md
## Recalculating formulas
Von Daniel • 2026-04-24 09:26:29.836174
Worum geht es?
Neuer Skill „xlsx" wird angelegt
Excel files created or modified by openpyxl contain formulas as strings but not calculated values. Use the provided `scripts/recalc.py` script to recalculate fo…
Technischen Diff anzeigen
--- a/skills/xlsx/SKILL.md
+++ b/skills/xlsx/SKILL.md
@@ -0,0 +1,20 @@
+## Recalculating formulas
+
+Excel files created or modified by openpyxl contain formulas as strings but not calculated values. Use the provided `scripts/recalc.py` script to recalculate formulas:
+
+```bash
+python scripts/recalc.py [timeout_seconds]
+```
+
+Example:
+```bash
+python scripts/recalc.py output.xlsx 30
+```
+
+The script:
+- Automatically sets up LibreOffice macro on first run
+- Recalculates all formulas in all sheets
+- Scans ALL cells for Excel errors (#REF!, #DIV/0!, etc.)
+- Returns JSON with detailed error locations and counts
+- Works on both Linux and macOS
+
🧩
Skill-Anpassung
Neu
skills/xlsx/SKILL.md
## Reading and analyzing data
Von Daniel • 2026-04-24 09:26:29.835296
Worum geht es?
Neuer Skill „xlsx" wird angelegt
For data analysis, visualization, and basic operations, use **pandas** which provides powerful data manipulation capabilities:
Technischen Diff anzeigen
--- a/skills/xlsx/SKILL.md
+++ b/skills/xlsx/SKILL.md
@@ -0,0 +1,21 @@
+## Reading and analyzing data
+
+### Data analysis with pandas
+For data analysis, visualization, and basic operations, use **pandas** which provides powerful data manipulation capabilities:
+
+```python
+import pandas as pd
+
+# Read Excel
+df = pd.read_excel('file.xlsx') # Default: first sheet
+all_sheets = pd.read_excel('file.xlsx', sheet_name=None) # All sheets as dict
+
+# Analyze
+df.head() # Preview data
+df.info() # Column info
+df.describe() # Statistics
+
+# Write Excel
+df.to_excel('output.xlsx', index=False)
+```
+
🧩
Skill-Anpassung
Neu
skills/xlsx/SKILL.md
## Overview
Von Daniel • 2026-04-24 09:26:29.834416
Worum geht es?
Neuer Skill „xlsx" wird angelegt
A user may ask you to create, edit, or analyze the contents of an .xlsx file. You have different tools and workflows available for different tasks.
Technischen Diff anzeigen
--- a/skills/xlsx/SKILL.md
+++ b/skills/xlsx/SKILL.md
@@ -0,0 +1,4 @@
+## Overview
+
+A user may ask you to create, edit, or analyze the contents of an .xlsx file. You have different tools and workflows available for different tasks.
+
🧩
Skill-Anpassung
Neu
skills/xlsx/SKILL.md
## Important Requirements
Von Daniel • 2026-04-24 09:26:29.833386
Worum geht es?
Neuer Skill „xlsx" wird angelegt
**LibreOffice Required for Formula Recalculation**: You can assume LibreOffice is installed for recalculating formula values using the `scripts/recalc.py` scrip…
Technischen Diff anzeigen
--- a/skills/xlsx/SKILL.md
+++ b/skills/xlsx/SKILL.md
@@ -0,0 +1,4 @@
+## Important Requirements
+
+**LibreOffice Required for Formula Recalculation**: You can assume LibreOffice is installed for recalculating formula values using the `scripts/recalc.py` script. The script automatically configures LibreOffice on first run, including in sandboxed environments where Unix sockets are restricted (handled by `scripts/office/soffice.py`)
+
🧩
Skill-Anpassung
Neu
skills/xlsx/SKILL.md
## Formula Verification Checklist
Von Daniel • 2026-04-24 09:26:29.832398
Worum geht es?
Neuer Skill „xlsx" wird angelegt
Quick checks to ensure formulas work correctly:
Technischen Diff anzeigen
--- a/skills/xlsx/SKILL.md
+++ b/skills/xlsx/SKILL.md
@@ -0,0 +1,38 @@
+## Formula Verification Checklist
+
+Quick checks to ensure formulas work correctly:
+
+### Essential Verification
+- [ ] **Test 2-3 sample references**: Verify they pull correct values before building full model
+- [ ] **Column mapping**: Confirm Excel columns match (e.g., column 64 = BL, not BK)
+- [ ] **Row offset**: Remember Excel rows are 1-indexed (DataFrame row 5 = Excel row 6)
+
+### Common Pitfalls
+- [ ] **NaN handling**: Check for null values with `pd.notna()`
+- [ ] **Far-right columns**: FY data often in columns 50+
+- [ ] **Multiple matches**: Search all occurrences, not just first
+- [ ] **Division by zero**: Check denominators before using `/` in formulas (#DIV/0!)
+- [ ] **Wrong references**: Verify all cell references point to intended cells (#REF!)
+- [ ] **Cross-sheet references**: Use correct format (Sheet1!A1) for linking sheets
+
+### Formula Testing Strategy
+- [ ] **Start small**: Test formulas on 2-3 cells before applying broadly
+- [ ] **Verify dependencies**: Check all cells referenced in formulas exist
+- [ ] **Test edge cases**: Include zero, negative, and very large values
+
+### Interpreting scripts/recalc.py Output
+The script returns JSON with error details:
+```json
+{
+ "status": "success", // or "errors_found"
+ "total_errors": 0, // Total error count
+ "total_formulas": 42, // Number of formulas in file
+ "error_summary": { // Only present if errors found
+ "#REF!": {
+ "count": 2,
+ "locations": ["Sheet1!B5", "Sheet1!C10"]
+ }
+ }
+}
+```
+
🧩
Skill-Anpassung
Neu
skills/xlsx/SKILL.md
## Financial models
Von Daniel • 2026-04-24 09:26:29.831595
Worum geht es?
Neuer Skill „xlsx" wird angelegt
Unless otherwise stated by the user or existing template
Technischen Diff anzeigen
--- a/skills/xlsx/SKILL.md
+++ b/skills/xlsx/SKILL.md
@@ -0,0 +1,46 @@
+## Financial models
+
+### Color Coding Standards
+Unless otherwise stated by the user or existing template
+
+#### Industry-Standard Color Conventions
+- **Blue text (RGB: 0,0,255)**: Hardcoded inputs, and numbers users will change for scenarios
+- **Black text (RGB: 0,0,0)**: ALL formulas and calculations
+- **Green text (RGB: 0,128,0)**: Links pulling from other worksheets within same workbook
+- **Red text (RGB: 255,0,0)**: External links to other files
+- **Yellow background (RGB: 255,255,0)**: Key assumptions needing attention or cells that need to be updated
+
+### Number Formatting Standards
+
+#### Required Format Rules
+- **Years**: Format as text strings (e.g., "2024" not "2,024")
+- **Currency**: Use $#,##0 format; ALWAYS specify units in headers ("Revenue ($mm)")
+- **Zeros**: Use number formatting to make all zeros "-", including percentages (e.g., "$#,##0;($#,##0);-")
+- **Percentages**: Default to 0.0% format (one decimal)
+- **Multiples**: Format as 0.0x for valuation multiples (EV/EBITDA, P/E)
+- **Negative numbers**: Use parentheses (123) not minus -123
+
+### Formula Construction Rules
+
+#### Assumptions Placement
+- Place ALL assumptions (growth rates, margins, multiples, etc.) in separate assumption cells
+- Use cell references instead of hardcoded values in formulas
+- Example: Use =B5*(1+$B$6) instead of =B5*1.05
+
+#### Formula Error Prevention
+- Verify all cell references are correct
+- Check for off-by-one errors in ranges
+- Ensure consistent formulas across all projection periods
+- Test with edge cases (zero values, negative numbers)
+- Verify no unintended circular references
+
+#### Documentation Requirements for Hardcodes
+- Comment or in cells beside (if end of table). Format: "Source: [System/Document], [Date], [Specific Reference], [URL if applicable]"
+- Examples:
+ - "Source: Company 10-K, FY2024, Page 45, Revenue Note, [SEC EDGAR URL]"
+ - "Source: Company 10-Q, Q2 2025, Exhibit 99.1, [SEC EDGAR URL]"
+ - "Source: Bloomberg Terminal, 8/15/2025, AAPL US Equity"
+ - "Source: FactSet, 8/20/2025, Consensus Estimates Screen"
+
+# XLSX creation, editing, and analysis
+
1. **Choose tool**: pandas for data, openpyxl for formulas/formatting
Technischen Diff anzeigen
--- a/skills/xlsx/SKILL.md
+++ b/skills/xlsx/SKILL.md
@@ -0,0 +1,75 @@
+## Common Workflow
+1. **Choose tool**: pandas for data, openpyxl for formulas/formatting
+2. **Create/Load**: Create new workbook or load existing file
+3. **Modify**: Add/edit data, formulas, and formatting
+4. **Save**: Write to file
+5. **Recalculate formulas (MANDATORY IF USING FORMULAS)**: Use the scripts/recalc.py script
+ ```bash
+ python scripts/recalc.py output.xlsx
+ ```
+6. **Verify and fix any errors**:
+ - The script returns JSON with error details
+ - If `status` is `errors_found`, check `error_summary` for specific error types and locations
+ - Fix the identified errors and recalculate again
+ - Common errors to fix:
+ - `#REF!`: Invalid cell references
+ - `#DIV/0!`: Division by zero
+ - `#VALUE!`: Wrong data type in formula
+ - `#NAME?`: Unrecognized formula name
+
+### Creating new Excel files
+
+```python
+# Using openpyxl for formulas and formatting
+from openpyxl import Workbook
+from openpyxl.styles import Font, PatternFill, Alignment
+
+wb = Workbook()
+sheet = wb.active
+
+# Add data
+sheet['A1'] = 'Hello'
+sheet['B1'] = 'World'
+sheet.append(['Row', 'of', 'data'])
+
+# Add formula
+sheet['B2'] = '=SUM(A1:A10)'
+
+# Formatting
+sheet['A1'].font = Font(bold=True, color='FF0000')
+sheet['A1'].fill = PatternFill('solid', start_color='FFFF00')
+sheet['A1'].alignment = Alignment(horizontal='center')
+
+# Column width
+sheet.column_dimensions['A'].width = 20
+
+wb.save('output.xlsx')
+```
+
+### Editing existing Excel files
+
+```python
+# Using openpyxl to preserve formulas and formatting
+from openpyxl import load_workbook
+
+# Load existing file
+wb = load_workbook('existing.xlsx')
+sheet = wb.active # or wb['SheetName'] for specific sheet
+
+# Working with multiple sheets
+for sheet_name in wb.sheetnames:
+ sheet = wb[sheet_name]
+ print(f"Sheet: {sheet_name}")
+
+# Modify cells
+sheet['A1'] = 'New Value'
+sheet.insert_rows(2) # Insert row at position 2
+sheet.delete_cols(3) # Delete column 3
+
+# Add new sheet
+new_sheet = wb.create_sheet('NewSheet')
+new_sheet['A1'] = 'Data'
+
+wb.save('modified.xlsx')
+```
+
🧩
Skill-Anpassung
Neu
skills/xlsx/SKILL.md
## Code Style Guidelines
Von Daniel • 2026-04-24 09:26:29.829061
Worum geht es?
Neuer Skill „xlsx" wird angelegt
**IMPORTANT**: When generating Python code for Excel operations:
Technischen Diff anzeigen
--- a/skills/xlsx/SKILL.md
+++ b/skills/xlsx/SKILL.md
@@ -0,0 +1,10 @@
+## Code Style Guidelines
+**IMPORTANT**: When generating Python code for Excel operations:
+- Write minimal, concise Python code without unnecessary comments
+- Avoid verbose variable names and redundant operations
+- Avoid unnecessary print statements
+
+**For Excel files themselves**:
+- Add comments to cells with complex formulas or important assumptions
+- Document data sources for hardcoded values
+- Include notes for key calculations and model sections
🧩
Skill-Anpassung
Neu
skills/xlsx/SKILL.md
## CRITICAL: Use Formulas, Not Hardcoded Values
Von Daniel • 2026-04-24 09:26:29.828243
Worum geht es?
Neuer Skill „xlsx" wird angelegt
**Always use Excel formulas instead of calculating values in Python and hardcoding them.** This ensures the spreadsheet remains dynamic and updateable.
Technischen Diff anzeigen
--- a/skills/xlsx/SKILL.md
+++ b/skills/xlsx/SKILL.md
@@ -0,0 +1,33 @@
+## CRITICAL: Use Formulas, Not Hardcoded Values
+
+**Always use Excel formulas instead of calculating values in Python and hardcoding them.** This ensures the spreadsheet remains dynamic and updateable.
+
+### ❌ WRONG - Hardcoding Calculated Values
+```python
+# Bad: Calculating in Python and hardcoding result
+total = df['Sales'].sum()
+sheet['B10'] = total # Hardcodes 5000
+
+# Bad: Computing growth rate in Python
+growth = (df.iloc[-1]['Revenue'] - df.iloc[0]['Revenue']) / df.iloc[0]['Revenue']
+sheet['C5'] = growth # Hardcodes 0.15
+
+# Bad: Python calculation for average
+avg = sum(values) / len(values)
+sheet['D20'] = avg # Hardcodes 42.5
+```
+
+### ✅ CORRECT - Using Excel Formulas
+```python
+# Good: Let Excel calculate the sum
+sheet['B10'] = '=SUM(B2:B9)'
+
+# Good: Growth rate as Excel formula
+sheet['C5'] = '=(C4-C2)/C2'
+
+# Good: Average using Excel function
+sheet['D20'] = '=AVERAGE(D2:D19)'
+```
+
+This applies to ALL calculations - totals, percentages, ratios, differences, etc. The spreadsheet should be able to recalculate when source data changes.
+
🧩
Skill-Anpassung
Neu
skills/xlsx/SKILL.md
## Best Practices
Von Daniel • 2026-04-24 09:26:29.827433
Worum geht es?
Neuer Skill „xlsx" wird angelegt
- **pandas**: Best for data analysis, bulk operations, and simple data export
Technischen Diff anzeigen
--- a/skills/xlsx/SKILL.md
+++ b/skills/xlsx/SKILL.md
@@ -0,0 +1,18 @@
+## Best Practices
+
+### Library Selection
+- **pandas**: Best for data analysis, bulk operations, and simple data export
+- **openpyxl**: Best for complex formatting, formulas, and Excel-specific features
+
+### Working with openpyxl
+- Cell indices are 1-based (row=1, column=1 refers to cell A1)
+- Use `data_only=True` to read calculated values: `load_workbook('file.xlsx', data_only=True)`
+- **Warning**: If opened with `data_only=True` and saved, formulas are replaced with values and permanently lost
+- For large files: Use `read_only=True` for reading or `write_only=True` for writing
+- Formulas are preserved but not evaluated - use scripts/recalc.py to update values
+
+### Working with pandas
+- Specify data types to avoid inference issues: `pd.read_excel('file.xlsx', dtype={'id': str})`
+- For large files, read specific columns: `pd.read_excel('file.xlsx', usecols=['A', 'C', 'E'])`
+- Handle dates properly: `pd.read_excel('file.xlsx', parse_dates=['date_column'])`
+
🧩
Skill-Anpassung
Neu
skills/xlsx/SKILL.md
## All Excel files
Von Daniel • 2026-04-24 09:26:29.826621
Worum geht es?
Neuer Skill „xlsx" wird angelegt
- Use a consistent, professional font (e.g., Arial, Times New Roman) for all deliverables unless otherwise instructed by the user
Technischen Diff anzeigen
--- a/skills/xlsx/SKILL.md
+++ b/skills/xlsx/SKILL.md
@@ -0,0 +1,13 @@
+## All Excel files
+
+### Professional Font
+- Use a consistent, professional font (e.g., Arial, Times New Roman) for all deliverables unless otherwise instructed by the user
+
+### Zero Formula Errors
+- Every Excel model MUST be delivered with ZERO formula errors (#REF!, #DIV/0!, #VALUE!, #N/A, #NAME?)
+
+### Preserve Existing Templates (when updating templates)
+- Study and EXACTLY match existing format, style, and conventions when modifying files
+- Never impose standardized formatting on files with established patterns
+- Existing template conventions ALWAYS override these guidelines
+
"""Improve a skill description based on eval results.
Technischen Diff anzeigen
--- a/skills/skill-creator/scripts/improve_description.py
+++ b/skills/skill-creator/scripts/improve_description.py
@@ -0,0 +1,247 @@
+#!/usr/bin/env python3
+"""Improve a skill description based on eval results.
+
+Takes eval results (from run_eval.py) and generates an improved description
+by calling `claude -p` as a subprocess (same auth pattern as run_eval.py —
+uses the session's Claude Code auth, no separate ANTHROPIC_API_KEY needed).
+"""
+
+import argparse
+import json
+import os
+import re
+import subprocess
+import sys
+from pathlib import Path
+
+from scripts.utils import parse_skill_md
+
+
+def _call_claude(prompt: str, model: str | None, timeout: int = 300) -> str:
+ """Run `claude -p` with the prompt on stdin and return the text response.
+
+ Prompt goes over stdin (not argv) because it embeds the full SKILL.md
+ body and can easily exceed comfortable argv length.
+ """
+ cmd = ["claude", "-p", "--output-format", "text"]
+ if model:
+ cmd.extend(["--model", model])
+
+ # Remove CLAUDECODE env var to allow nesting claude -p inside a
+ # Claude Code session. The guard is for interactive terminal conflicts;
+ # programmatic subprocess usage is safe. Same pattern as run_eval.py.
+ env = {k: v for k, v in os.environ.items() if k != "CLAUDECODE"}
+
+ result = subprocess.run(
+ cmd,
+ input=prompt,
+ capture_output=True,
+ text=True,
+ env=env,
+ timeout=timeout,
+ )
+ if result.returncode != 0:
+ raise RuntimeError(
+ f"claude -p exited {result.returncode}\nstderr: {result.stderr}"
+ )
+ return result.stdout
+
+
+def improve_description(
+ skill_name: str,
+ skill_content: str,
+ current_description: str,
+ eval_results: dict,
+ history: list[dict],
+ model: str,
+ test_results: dict | None = None,
+ log_dir: Path | None = None,
+ iteration: int | None = None,
+) -> str:
+ """Call Claude to improve the description based on eval results."""
+ failed_triggers = [
+ r for r in eval_results["results"]
+ if r["should_trigger"] and not r["pass"]
+ ]
+ false_triggers = [
+ r for r in eval_results["results"]
+ if not r["should_trigger"] and not r["pass"]
+ ]
+
+ # Build scores summary
+ train_score = f"{eval_results['summary']['passed']}/{eval_results['summary']['total']}"
+ if test_results:
+ test_score = f"{test_results['summary']['passed']}/{test_results['summary']['total']}"
+ scores_summary = f"Train: {train_score}, Test: {test_score}"
+ else:
+ scores_summary = f"Train: {train_score}"
+
+ prompt = f"""You are optimizing a skill description for a Claude Code skill called "{skill_name}". A "skill" is sort of like a prompt, but with progressive disclosure -- there's a title and description that Claude sees when deciding whether to use the skill, and then if it does use the skill, it reads the .md file which has lots more details and potentially links to other resources in the skill folder like helper files and scripts and additional documentation or examples.
+
+The description appears in Claude's "available_skills" list. When a user sends a query, Claude decides whether to invoke the skill based solely on the title and on this description. Your goal is to write a description that triggers for relevant queries, and doesn't trigger for irrelevant ones.
+
+Here's the current description:
+
+"{current_description}"
+
+
+Current scores ({scores_summary}):
+
+"""
+ if failed_triggers:
+ prompt += "FAILED TO TRIGGER (should have triggered but didn't):\n"
+ for r in failed_triggers:
+ prompt += f' - "{r["query"]}" (triggered {r["triggers"]}/{r["runs"]} times)\n'
+ prompt += "\n"
+
+ if false_triggers:
+ prompt += "FALSE TRIGGERS (triggered but shouldn't have):\n"
+ for r in false_triggers:
+ prompt += f' - "{r["query"]}" (triggered {r["triggers"]}/{r["runs"]} times)\n'
+ prompt += "\n"
+
+ if history:
+ prompt += "PREVIOUS ATTEMPTS (do NOT repeat these — try something structurally different):\n\n"
+ for h in history:
+ train_s = f"{h.get('train_passed', h.get('passed', 0))}/{h.get('train_total', h.get('total', 0))}"
+ test_s = f"{h.get('test_passed', '?')}/{h.get('test_total', '?')}" if h.get('test_passed') is not None else None
+ score_str = f"train={train_s}" + (f", test={test_s}" if test_s else "")
+ prompt += f'\n'
+ prompt += f'Description: "{h["description"]}"\n'
+ if "results" in h:
+ prompt += "Train results:\n"
+ for r in h["results"]:
+ status = "PASS" if r["pass"] else "FAIL"
+ prompt += f' [{status}] "{r["query"][:80]}" (triggered {r["triggers"]}/{r["runs"]})\n'
+ if h.get("note"):
+ prompt += f'Note: {h["note"]}\n'
+ prompt += "\n\n"
+
+ prompt += f"""
+
+Skill content (for context on what the skill does):
+
+{skill_content}
+
+
+Based on the failures, write a new and improved description that is more likely to trigger correctly. When I say "based on the failures", it's a bit of a tricky line to walk because we don't want to overfit to the specific cases you're seeing. So what I DON'T want you to do is produce an ever-expanding list of specific queries that this skill should or shouldn't trigger for. Instead, try to generalize from the failures to broader categories of user intent and situations where this skill would be useful or not useful. The reason for this is twofold:
+
+1. Avoid overfitting
+2. The list might get loooong and it's injected into ALL queries and there might be a lot of skills, so we don't want to blow too much space on any given description.
+
+Concretely, your description should not be more than about 100-200 words, even if that comes at the cost of accuracy. There is a hard limit of 1024 characters — descriptions over that will be truncated, so stay comfortably under it.
+
+Here are some tips that we've found to work well in writing these descriptions:
+- The skill should be phrased in the imperative -- "Use this skill for" rather than "this skill does"
+- The skill description should focus on the user's intent, what they are trying to achieve, vs. the implementation details of how the skill works.
+- The description competes with other skills for Claude's attention — make it distinctive and immediately recognizable.
+- If you're getting lots of failures after repeated attempts, change things up. Try different sentence structures or wordings.
+
+I'd encourage you to be creative and mix up the style in different iterations since you'll have multiple opportunities to try different approaches and we'll just grab the highest-scoring one at the end.
+
+Please respond with only the new description text in tags, nothing else."""
+
+ text = _call_claude(prompt, model)
+
+ match = re.search(r"(.*?)", text, re.DOTALL)
+ description = match.group(1).strip().strip('"') if match else text.strip().strip('"')
+
+ transcript: dict = {
+ "iteration": iteration,
+ "prompt": prompt,
+ "response": text,
+ "parsed_description": description,
+ "char_count": len(description),
+ "over_limit": len(description) > 1024,
+ }
+
+ # Safety net: the prompt already states the 1024-char hard limit, but if
+ # the model blew past it anyway, make one fresh single-turn call that
+ # quotes the too-long version and asks for a shorter rewrite. (The old
+ # SDK path did this as a true multi-turn; `claude -p` is one-shot, so we
+ # inline the prior output into the new prompt instead.)
+ if len(description) > 1024:
+ shorten_prompt = (
+ f"{prompt}\n\n"
+ f"---\n\n"
+ f"A previous attempt produced this description, which at "
+ f"{len(description)} characters is over the 1024-character hard limit:\n\n"
+ f'"{description}"\n\n'
+ f"Rewrite it to be under 1024 characters while keeping the most "
+ f"important trigger words and intent coverage. Respond with only "
+ f"the new description in tags."
+ )
+ shorten_text = _call_claude(shorten_prompt, model)
+ match = re.search(r"(.*?)", shorten_text, re.DOTALL)
+ shortened = match.group(1).strip().strip('"') if match else shorten_text.strip().strip('"')
+
+ transcript["rewrite_prompt"] = shorten_prompt
+ transcript["rewrite_response"] = shorten_text
+ transcript["rewrite_description"] = shortened
+ transcript["rewrite_char_count"] = len(shortened)
+ description = shortened
+
+ transcript["final_description"] = description
+
+ if log_dir:
+ log_dir.mkdir(parents=True, exist_ok=True)
+ log_file = log_dir / f"improve_iter_{iteration or 'unknown'}.json"
+ log_file.write_text(json.dumps(transcript, indent=2))
+
+ return description
+
+
+def main():
+ parser = argparse.ArgumentParser(description="Improve a skill description based on eval results")
+ parser.add_argument("--eval-results", required=True, help="Path to eval results JSON (from run_eval.py)")
+ parser.add_argument("--skill-path", required=True, help="Path to skill directory")
+ parser.add_argument("--history", default=None, help="Path to history JSON (previous attempts)")
+ parser.add_argument("--model", required=True, help="Model for improvement")
+ parser.add_argument("--verbose", action="store_true", help="Print thinking to stderr")
+ args = parser.parse_args()
+
+ skill_path = Path(args.skill_path)
+ if not (skill_path / "SKILL.md").exists():
+ print(f"Error: No SKILL.md found at {skill_path}", file=sys.stderr)
+ sys.exit(1)
+
+ eval_results = json.loads(Path(args.eval_results).read_text())
+ history = []
+ if args.history:
+ history = json.loads(Path(args.history).read_text())
+
+ name, _, content = parse_skill_md(skill_path)
+ current_description = eval_results["description"]
+
+ if args.verbose:
+ print(f"Current: {current_description}", file=sys.stderr)
+ print(f"Score: {eval_results['summary']['passed']}/{eval_results['summary']['total']}", file=sys.stderr)
+
+ new_description = improve_description(
+ skill_name=name,
+ skill_content=content,
+ current_description=current_description,
+ eval_results=eval_results,
+ history=history,
+ model=args.model,
+ )
+
+ if args.verbose:
+ print(f"Improved: {new_description}", file=sys.stderr)
+
+ # Output as JSON with both the new description and updated history
+ output = {
+ "description": new_description,
+ "history": history + [{
+ "description": current_description,
+ "passed": eval_results["summary"]["passed"],
+ "failed": eval_results["summary"]["failed"],
+ "total": eval_results["summary"]["total"],
+ "results": eval_results["results"],
+ }],
+ }
+ print(json.dumps(output, indent=2))
+
+
+if __name__ == "__main__":
+ main()
🧩
Skill-Anpassung
Neu
skills/skill-creator/scripts/generate_report.py
Von Daniel • 2026-04-24 09:26:29.819152
Worum geht es?
Neuer Skill „skill-creator" wird angelegt
"""Generate an HTML report from run_loop.py output.
Technischen Diff anzeigen
--- a/skills/skill-creator/scripts/generate_report.py
+++ b/skills/skill-creator/scripts/generate_report.py
@@ -0,0 +1,326 @@
+#!/usr/bin/env python3
+"""Generate an HTML report from run_loop.py output.
+
+Takes the JSON output from run_loop.py and generates a visual HTML report
+showing each description attempt with check/x for each test case.
+Distinguishes between train and test queries.
+"""
+
+import argparse
+import html
+import json
+import sys
+from pathlib import Path
+
+
+def generate_html(data: dict, auto_refresh: bool = False, skill_name: str = "") -> str:
+ """Generate HTML report from loop output data. If auto_refresh is True, adds a meta refresh tag."""
+ history = data.get("history", [])
+ holdout = data.get("holdout", 0)
+ title_prefix = html.escape(skill_name + " \u2014 ") if skill_name else ""
+
+ # Get all unique queries from train and test sets, with should_trigger info
+ train_queries: list[dict] = []
+ test_queries: list[dict] = []
+ if history:
+ for r in history[0].get("train_results", history[0].get("results", [])):
+ train_queries.append({"query": r["query"], "should_trigger": r.get("should_trigger", True)})
+ if history[0].get("test_results"):
+ for r in history[0].get("test_results", []):
+ test_queries.append({"query": r["query"], "should_trigger": r.get("should_trigger", True)})
+
+ refresh_tag = ' \n' if auto_refresh else ""
+
+ html_parts = ["""
+
+
+
+""" + refresh_tag + """ """ + title_prefix + """Skill Description Optimization
+
+
+
+
+
+
+
+ Optimizing your skill's description. This page updates automatically as Claude tests different versions of your skill's description. Each row is an iteration — a new description attempt. The columns show test queries: green checkmarks mean the skill triggered correctly (or correctly didn't trigger), red crosses mean it got it wrong. The "Train" score shows performance on queries used to improve the description; the "Test" score shows performance on held-out queries the optimizer hasn't seen. When it's done, Claude will apply the best-performing description to your skill.
+
Aggregate individual run results into benchmark summary statistics.
Technischen Diff anzeigen
--- a/skills/skill-creator/scripts/aggregate_benchmark.py
+++ b/skills/skill-creator/scripts/aggregate_benchmark.py
@@ -0,0 +1,401 @@
+#!/usr/bin/env python3
+"""
+Aggregate individual run results into benchmark summary statistics.
+
+Reads grading.json files from run directories and produces:
+- run_summary with mean, stddev, min, max for each metric
+- delta between with_skill and without_skill configurations
+
+Usage:
+ python aggregate_benchmark.py
+
+Example:
+ python aggregate_benchmark.py benchmarks/2026-01-15T10-30-00/
+
+The script supports two directory layouts:
+
+ Workspace layout (from skill-creator iterations):
+ /
+ └── eval-N/
+ ├── with_skill/
+ │ ├── run-1/grading.json
+ │ └── run-2/grading.json
+ └── without_skill/
+ ├── run-1/grading.json
+ └── run-2/grading.json
+
+ Legacy layout (with runs/ subdirectory):
+ /
+ └── runs/
+ └── eval-N/
+ ├── with_skill/
+ │ └── run-1/grading.json
+ └── without_skill/
+ └── run-1/grading.json
+"""
+
+import argparse
+import json
+import math
+import sys
+from datetime import datetime, timezone
+from pathlib import Path
+
+
+def calculate_stats(values: list[float]) -> dict:
+ """Calculate mean, stddev, min, max for a list of values."""
+ if not values:
+ return {"mean": 0.0, "stddev": 0.0, "min": 0.0, "max": 0.0}
+
+ n = len(values)
+ mean = sum(values) / n
+
+ if n > 1:
+ variance = sum((x - mean) ** 2 for x in values) / (n - 1)
+ stddev = math.sqrt(variance)
+ else:
+ stddev = 0.0
+
+ return {
+ "mean": round(mean, 4),
+ "stddev": round(stddev, 4),
+ "min": round(min(values), 4),
+ "max": round(max(values), 4)
+ }
+
+
+def load_run_results(benchmark_dir: Path) -> dict:
+ """
+ Load all run results from a benchmark directory.
+
+ Returns dict keyed by config name (e.g. "with_skill"/"without_skill",
+ or "new_skill"/"old_skill"), each containing a list of run results.
+ """
+ # Support both layouts: eval dirs directly under benchmark_dir, or under runs/
+ runs_dir = benchmark_dir / "runs"
+ if runs_dir.exists():
+ search_dir = runs_dir
+ elif list(benchmark_dir.glob("eval-*")):
+ search_dir = benchmark_dir
+ else:
+ print(f"No eval directories found in {benchmark_dir} or {benchmark_dir / 'runs'}")
+ return {}
+
+ results: dict[str, list] = {}
+
+ for eval_idx, eval_dir in enumerate(sorted(search_dir.glob("eval-*"))):
+ metadata_path = eval_dir / "eval_metadata.json"
+ if metadata_path.exists():
+ try:
+ with open(metadata_path) as mf:
+ eval_id = json.load(mf).get("eval_id", eval_idx)
+ except (json.JSONDecodeError, OSError):
+ eval_id = eval_idx
+ else:
+ try:
+ eval_id = int(eval_dir.name.split("-")[1])
+ except ValueError:
+ eval_id = eval_idx
+
+ # Discover config directories dynamically rather than hardcoding names
+ for config_dir in sorted(eval_dir.iterdir()):
+ if not config_dir.is_dir():
+ continue
+ # Skip non-config directories (inputs, outputs, etc.)
+ if not list(config_dir.glob("run-*")):
+ continue
+ config = config_dir.name
+ if config not in results:
+ results[config] = []
+
+ for run_dir in sorted(config_dir.glob("run-*")):
+ run_number = int(run_dir.name.split("-")[1])
+ grading_file = run_dir / "grading.json"
+
+ if not grading_file.exists():
+ print(f"Warning: grading.json not found in {run_dir}")
+ continue
+
+ try:
+ with open(grading_file) as f:
+ grading = json.load(f)
+ except json.JSONDecodeError as e:
+ print(f"Warning: Invalid JSON in {grading_file}: {e}")
+ continue
+
+ # Extract metrics
+ result = {
+ "eval_id": eval_id,
+ "run_number": run_number,
+ "pass_rate": grading.get("summary", {}).get("pass_rate", 0.0),
+ "passed": grading.get("summary", {}).get("passed", 0),
+ "failed": grading.get("summary", {}).get("failed", 0),
+ "total": grading.get("summary", {}).get("total", 0),
+ }
+
+ # Extract timing — check grading.json first, then sibling timing.json
+ timing = grading.get("timing", {})
+ result["time_seconds"] = timing.get("total_duration_seconds", 0.0)
+ timing_file = run_dir / "timing.json"
+ if result["time_seconds"] == 0.0 and timing_file.exists():
+ try:
+ with open(timing_file) as tf:
+ timing_data = json.load(tf)
+ result["time_seconds"] = timing_data.get("total_duration_seconds", 0.0)
+ result["tokens"] = timing_data.get("total_tokens", 0)
+ except json.JSONDecodeError:
+ pass
+
+ # Extract metrics if available
+ metrics = grading.get("execution_metrics", {})
+ result["tool_calls"] = metrics.get("total_tool_calls", 0)
+ if not result.get("tokens"):
+ result["tokens"] = metrics.get("output_chars", 0)
+ result["errors"] = metrics.get("errors_encountered", 0)
+
+ # Extract expectations — viewer requires fields: text, passed, evidence
+ raw_expectations = grading.get("expectations", [])
+ for exp in raw_expectations:
+ if "text" not in exp or "passed" not in exp:
+ print(f"Warning: expectation in {grading_file} missing required fields (text, passed, evidence): {exp}")
+ result["expectations"] = raw_expectations
+
+ # Extract notes from user_notes_summary
+ notes_summary = grading.get("user_notes_summary", {})
+ notes = []
+ notes.extend(notes_summary.get("uncertainties", []))
+ notes.extend(notes_summary.get("needs_review", []))
+ notes.extend(notes_summary.get("workarounds", []))
+ result["notes"] = notes
+
+ results[config].append(result)
+
+ return results
+
+
+def aggregate_results(results: dict) -> dict:
+ """
+ Aggregate run results into summary statistics.
+
+ Returns run_summary with stats for each configuration and delta.
+ """
+ run_summary = {}
+ configs = list(results.keys())
+
+ for config in configs:
+ runs = results.get(config, [])
+
+ if not runs:
+ run_summary[config] = {
+ "pass_rate": {"mean": 0.0, "stddev": 0.0, "min": 0.0, "max": 0.0},
+ "time_seconds": {"mean": 0.0, "stddev": 0.0, "min": 0.0, "max": 0.0},
+ "tokens": {"mean": 0, "stddev": 0, "min": 0, "max": 0}
+ }
+ continue
+
+ pass_rates = [r["pass_rate"] for r in runs]
+ times = [r["time_seconds"] for r in runs]
+ tokens = [r.get("tokens", 0) for r in runs]
+
+ run_summary[config] = {
+ "pass_rate": calculate_stats(pass_rates),
+ "time_seconds": calculate_stats(times),
+ "tokens": calculate_stats(tokens)
+ }
+
+ # Calculate delta between the first two configs (if two exist)
+ if len(configs) >= 2:
+ primary = run_summary.get(configs[0], {})
+ baseline = run_summary.get(configs[1], {})
+ else:
+ primary = run_summary.get(configs[0], {}) if configs else {}
+ baseline = {}
+
+ delta_pass_rate = primary.get("pass_rate", {}).get("mean", 0) - baseline.get("pass_rate", {}).get("mean", 0)
+ delta_time = primary.get("time_seconds", {}).get("mean", 0) - baseline.get("time_seconds", {}).get("mean", 0)
+ delta_tokens = primary.get("tokens", {}).get("mean", 0) - baseline.get("tokens", {}).get("mean", 0)
+
+ run_summary["delta"] = {
+ "pass_rate": f"{delta_pass_rate:+.2f}",
+ "time_seconds": f"{delta_time:+.1f}",
+ "tokens": f"{delta_tokens:+.0f}"
+ }
+
+ return run_summary
+
+
+def generate_benchmark(benchmark_dir: Path, skill_name: str = "", skill_path: str = "") -> dict:
+ """
+ Generate complete benchmark.json from run results.
+ """
+ results = load_run_results(benchmark_dir)
+ run_summary = aggregate_results(results)
+
+ # Build runs array for benchmark.json
+ runs = []
+ for config in results:
+ for result in results[config]:
+ runs.append({
+ "eval_id": result["eval_id"],
+ "configuration": config,
+ "run_number": result["run_number"],
+ "result": {
+ "pass_rate": result["pass_rate"],
+ "passed": result["passed"],
+ "failed": result["failed"],
+ "total": result["total"],
+ "time_seconds": result["time_seconds"],
+ "tokens": result.get("tokens", 0),
+ "tool_calls": result.get("tool_calls", 0),
+ "errors": result.get("errors", 0)
+ },
+ "expectations": result["expectations"],
+ "notes": result["notes"]
+ })
+
+ # Determine eval IDs from results
+ eval_ids = sorted(set(
+ r["eval_id"]
+ for config in results.values()
+ for r in config
+ ))
+
+ benchmark = {
+ "metadata": {
+ "skill_name": skill_name or "",
+ "skill_path": skill_path or "",
+ "executor_model": "",
+ "analyzer_model": "",
+ "timestamp": datetime.now(timezone.utc).strftime("%Y-%m-%dT%H:%M:%SZ"),
+ "evals_run": eval_ids,
+ "runs_per_configuration": 3
+ },
+ "runs": runs,
+ "run_summary": run_summary,
+ "notes": [] # To be filled by analyzer
+ }
+
+ return benchmark
+
+
+def generate_markdown(benchmark: dict) -> str:
+ """Generate human-readable benchmark.md from benchmark data."""
+ metadata = benchmark["metadata"]
+ run_summary = benchmark["run_summary"]
+
+ # Determine config names (excluding "delta")
+ configs = [k for k in run_summary if k != "delta"]
+ config_a = configs[0] if len(configs) >= 1 else "config_a"
+ config_b = configs[1] if len(configs) >= 2 else "config_b"
+ label_a = config_a.replace("_", " ").title()
+ label_b = config_b.replace("_", " ").title()
+
+ lines = [
+ f"# Skill Benchmark: {metadata['skill_name']}",
+ "",
+ f"**Model**: {metadata['executor_model']}",
+ f"**Date**: {metadata['timestamp']}",
+ f"**Evals**: {', '.join(map(str, metadata['evals_run']))} ({metadata['runs_per_configuration']} runs each per configuration)",
+ "",
+ "## Summary",
+ "",
+ f"| Metric | {label_a} | {label_b} | Delta |",
+ "|--------|------------|---------------|-------|",
+ ]
+
+ a_summary = run_summary.get(config_a, {})
+ b_summary = run_summary.get(config_b, {})
+ delta = run_summary.get("delta", {})
+
+ # Format pass rate
+ a_pr = a_summary.get("pass_rate", {})
+ b_pr = b_summary.get("pass_rate", {})
+ lines.append(f"| Pass Rate | {a_pr.get('mean', 0)*100:.0f}% ± {a_pr.get('stddev', 0)*100:.0f}% | {b_pr.get('mean', 0)*100:.0f}% ± {b_pr.get('stddev', 0)*100:.0f}% | {delta.get('pass_rate', '—')} |")
+
+ # Format time
+ a_time = a_summary.get("time_seconds", {})
+ b_time = b_summary.get("time_seconds", {})
+ lines.append(f"| Time | {a_time.get('mean', 0):.1f}s ± {a_time.get('stddev', 0):.1f}s | {b_time.get('mean', 0):.1f}s ± {b_time.get('stddev', 0):.1f}s | {delta.get('time_seconds', '—')}s |")
+
+ # Format tokens
+ a_tokens = a_summary.get("tokens", {})
+ b_tokens = b_summary.get("tokens", {})
+ lines.append(f"| Tokens | {a_tokens.get('mean', 0):.0f} ± {a_tokens.get('stddev', 0):.0f} | {b_tokens.get('mean', 0):.0f} ± {b_tokens.get('stddev', 0):.0f} | {delta.get('tokens', '—')} |")
+
+ # Notes section
+ if benchmark.get("notes"):
+ lines.extend([
+ "",
+ "## Notes",
+ ""
+ ])
+ for note in benchmark["notes"]:
+ lines.append(f"- {note}")
+
+ return "\n".join(lines)
+
+
+def main():
+ parser = argparse.ArgumentParser(
+ description="Aggregate benchmark run results into summary statistics"
+ )
+ parser.add_argument(
+ "benchmark_dir",
+ type=Path,
+ help="Path to the benchmark directory"
+ )
+ parser.add_argument(
+ "--skill-name",
+ default="",
+ help="Name of the skill being benchmarked"
+ )
+ parser.add_argument(
+ "--skill-path",
+ default="",
+ help="Path to the skill being benchmarked"
+ )
+ parser.add_argument(
+ "--output", "-o",
+ type=Path,
+ help="Output path for benchmark.json (default: /benchmark.json)"
+ )
+
+ args = parser.parse_args()
+
+ if not args.benchmark_dir.exists():
+ print(f"Directory not found: {args.benchmark_dir}")
+ sys.exit(1)
+
+ # Generate benchmark
+ benchmark = generate_benchmark(args.benchmark_dir, args.skill_name, args.skill_path)
+
+ # Determine output paths
+ output_json = args.output or (args.benchmark_dir / "benchmark.json")
+ output_md = output_json.with_suffix(".md")
+
+ # Write benchmark.json
+ with open(output_json, "w") as f:
+ json.dump(benchmark, f, indent=2)
+ print(f"Generated: {output_json}")
+
+ # Write benchmark.md
+ markdown = generate_markdown(benchmark)
+ with open(output_md, "w") as f:
+ f.write(markdown)
+ print(f"Generated: {output_md}")
+
+ # Print summary
+ run_summary = benchmark["run_summary"]
+ configs = [k for k in run_summary if k != "delta"]
+ delta = run_summary.get("delta", {})
+
+ print(f"\nSummary:")
+ for config in configs:
+ pr = run_summary[config]["pass_rate"]["mean"]
+ label = config.replace("_", " ").title()
+ print(f" {label}: {pr*100:.1f}% pass rate")
+ print(f" Delta: {delta.get('pass_rate', '—')}")
+
+
+if __name__ == "__main__":
+ main()
🧩
Skill-Anpassung
Neu
skills/skill-creator/scripts/__init__.py
Von Daniel • 2026-04-24 09:26:29.817510
Worum geht es?
Neuer Skill „skill-creator" wird angelegt
Technischen Diff anzeigen
🧩
Skill-Anpassung
Neu
skills/skill-creator/references/schemas.md
__preamble__
Von Daniel • 2026-04-24 09:26:29.816651
Worum geht es?
Neuer Skill „skill-creator" wird angelegt
This document defines the JSON schemas used by skill-creator.
Technischen Diff anzeigen
--- a/skills/skill-creator/references/schemas.md
+++ b/skills/skill-creator/references/schemas.md
@@ -0,0 +1,6 @@
+# JSON Schemas
+
+This document defines the JSON schemas used by skill-creator.
+
+---
+
🧩
Skill-Anpassung
Neu
skills/skill-creator/references/schemas.md
## timing.json
Von Daniel • 2026-04-24 09:26:29.815851
Worum geht es?
Neuer Skill „skill-creator" wird angelegt
Wall clock timing for a run. Located at `<run-dir>/timing.json`.
Technischen Diff anzeigen
--- a/skills/skill-creator/references/schemas.md
+++ b/skills/skill-creator/references/schemas.md
@@ -0,0 +1,22 @@
+## timing.json
+
+Wall clock timing for a run. Located at `/timing.json`.
+
+**How to capture:** When a subagent task completes, the task notification includes `total_tokens` and `duration_ms`. Save these immediately — they are not persisted anywhere else and cannot be recovered after the fact.
+
+```json
+{
+ "total_tokens": 84852,
+ "duration_ms": 23332,
+ "total_duration_seconds": 23.3,
+ "executor_start": "2026-01-15T10:30:00Z",
+ "executor_end": "2026-01-15T10:32:45Z",
+ "executor_duration_seconds": 165.0,
+ "grader_start": "2026-01-15T10:32:46Z",
+ "grader_end": "2026-01-15T10:33:12Z",
+ "grader_duration_seconds": 26.0
+}
+```
+
+---
+
🧩
Skill-Anpassung
Neu
skills/skill-creator/references/schemas.md
## metrics.json
Von Daniel • 2026-04-24 09:26:29.815033
Worum geht es?
Neuer Skill „skill-creator" wird angelegt
Output from the executor agent. Located at `<run-dir>/outputs/metrics.json`.
Technischen Diff anzeigen
--- a/skills/skill-creator/references/schemas.md
+++ b/skills/skill-creator/references/schemas.md
@@ -0,0 +1,34 @@
+## metrics.json
+
+Output from the executor agent. Located at `/outputs/metrics.json`.
+
+```json
+{
+ "tool_calls": {
+ "Read": 5,
+ "Write": 2,
+ "Bash": 8,
+ "Edit": 1,
+ "Glob": 2,
+ "Grep": 0
+ },
+ "total_tool_calls": 18,
+ "total_steps": 6,
+ "files_created": ["filled_form.pdf", "field_values.json"],
+ "errors_encountered": 0,
+ "output_chars": 12450,
+ "transcript_chars": 3200
+}
+```
+
+**Fields:**
+- `tool_calls`: Count per tool type
+- `total_tool_calls`: Sum of all tool calls
+- `total_steps`: Number of major execution steps
+- `files_created`: List of output files created
+- `errors_encountered`: Number of errors during execution
+- `output_chars`: Total character count of output files
+- `transcript_chars`: Character count of transcript
+
+---
+
🧩
Skill-Anpassung
Neu
skills/skill-creator/references/schemas.md
## history.json
Von Daniel • 2026-04-24 09:26:29.814229
Worum geht es?
Neuer Skill „skill-creator" wird angelegt
Tracks version progression in Improve mode. Located at workspace root.
Technischen Diff anzeigen
--- a/skills/skill-creator/references/schemas.md
+++ b/skills/skill-creator/references/schemas.md
@@ -0,0 +1,47 @@
+## history.json
+
+Tracks version progression in Improve mode. Located at workspace root.
+
+```json
+{
+ "started_at": "2026-01-15T10:30:00Z",
+ "skill_name": "pdf",
+ "current_best": "v2",
+ "iterations": [
+ {
+ "version": "v0",
+ "parent": null,
+ "expectation_pass_rate": 0.65,
+ "grading_result": "baseline",
+ "is_current_best": false
+ },
+ {
+ "version": "v1",
+ "parent": "v0",
+ "expectation_pass_rate": 0.75,
+ "grading_result": "won",
+ "is_current_best": false
+ },
+ {
+ "version": "v2",
+ "parent": "v1",
+ "expectation_pass_rate": 0.85,
+ "grading_result": "won",
+ "is_current_best": true
+ }
+ ]
+}
+```
+
+**Fields:**
+- `started_at`: ISO timestamp of when improvement started
+- `skill_name`: Name of the skill being improved
+- `current_best`: Version identifier of the best performer
+- `iterations[].version`: Version identifier (v0, v1, ...)
+- `iterations[].parent`: Parent version this was derived from
+- `iterations[].expectation_pass_rate`: Pass rate from grading
+- `iterations[].grading_result`: "baseline", "won", "lost", or "tie"
+- `iterations[].is_current_best`: Whether this is the current best version
+
+---
+
🧩
Skill-Anpassung
Neu
skills/skill-creator/references/schemas.md
## grading.json
Von Daniel • 2026-04-24 09:26:29.813439
Worum geht es?
Neuer Skill „skill-creator" wird angelegt
Output from the grader agent. Located at `<run-dir>/grading.json`.
Technischen Diff anzeigen
--- a/skills/skill-creator/references/schemas.md
+++ b/skills/skill-creator/references/schemas.md
@@ -0,0 +1,77 @@
+## grading.json
+
+Output from the grader agent. Located at `/grading.json`.
+
+```json
+{
+ "expectations": [
+ {
+ "text": "The output includes the name 'John Smith'",
+ "passed": true,
+ "evidence": "Found in transcript Step 3: 'Extracted names: John Smith, Sarah Johnson'"
+ },
+ {
+ "text": "The spreadsheet has a SUM formula in cell B10",
+ "passed": false,
+ "evidence": "No spreadsheet was created. The output was a text file."
+ }
+ ],
+ "summary": {
+ "passed": 2,
+ "failed": 1,
+ "total": 3,
+ "pass_rate": 0.67
+ },
+ "execution_metrics": {
+ "tool_calls": {
+ "Read": 5,
+ "Write": 2,
+ "Bash": 8
+ },
+ "total_tool_calls": 15,
+ "total_steps": 6,
+ "errors_encountered": 0,
+ "output_chars": 12450,
+ "transcript_chars": 3200
+ },
+ "timing": {
+ "executor_duration_seconds": 165.0,
+ "grader_duration_seconds": 26.0,
+ "total_duration_seconds": 191.0
+ },
+ "claims": [
+ {
+ "claim": "The form has 12 fillable fields",
+ "type": "factual",
+ "verified": true,
+ "evidence": "Counted 12 fields in field_info.json"
+ }
+ ],
+ "user_notes_summary": {
+ "uncertainties": ["Used 2023 data, may be stale"],
+ "needs_review": [],
+ "workarounds": ["Fell back to text overlay for non-fillable fields"]
+ },
+ "eval_feedback": {
+ "suggestions": [
+ {
+ "assertion": "The output includes the name 'John Smith'",
+ "reason": "A hallucinated document that mentions the name would also pass"
+ }
+ ],
+ "overall": "Assertions check presence but not correctness."
+ }
+}
+```
+
+**Fields:**
+- `expectations[]`: Graded expectations with evidence
+- `summary`: Aggregate pass/fail counts
+- `execution_metrics`: Tool usage and output size (from executor's metrics.json)
+- `timing`: Wall clock timing (from timing.json)
+- `claims`: Extracted and verified claims from the output
+- `user_notes_summary`: Issues flagged by the executor
+- `eval_feedback`: (optional) Improvement suggestions for the evals, only present when the grader identifies issues worth raising
+
+---
+
🧩
Skill-Anpassung
Neu
skills/skill-creator/references/schemas.md
## evals.json
Von Daniel • 2026-04-24 09:26:29.812653
Worum geht es?
Neuer Skill „skill-creator" wird angelegt
Defines the evals for a skill. Located at `evals/evals.json` within the skill directory.
Technischen Diff anzeigen
--- a/skills/skill-creator/references/schemas.md
+++ b/skills/skill-creator/references/schemas.md
@@ -0,0 +1,32 @@
+## evals.json
+
+Defines the evals for a skill. Located at `evals/evals.json` within the skill directory.
+
+```json
+{
+ "skill_name": "example-skill",
+ "evals": [
+ {
+ "id": 1,
+ "prompt": "User's example prompt",
+ "expected_output": "Description of expected result",
+ "files": ["evals/files/sample1.pdf"],
+ "expectations": [
+ "The output includes X",
+ "The skill used script Y"
+ ]
+ }
+ ]
+}
+```
+
+**Fields:**
+- `skill_name`: Name matching the skill's frontmatter
+- `evals[].id`: Unique integer identifier
+- `evals[].prompt`: The task to execute
+- `evals[].expected_output`: Human-readable description of success
+- `evals[].files`: Optional list of input file paths (relative to skill root)
+- `evals[].expectations`: List of verifiable statements
+
+---
+
🧩
Skill-Anpassung
Neu
skills/skill-creator/references/schemas.md
## comparison.json
Von Daniel • 2026-04-24 09:26:29.811847
Worum geht es?
Neuer Skill „skill-creator" wird angelegt
Output from blind comparator. Located at `<grading-dir>/comparison-N.json`.
Current description: __SKILL_DESCRIPTION_PLACEHOLDER__
+
+
+
+
+
+
+
+
+
+
Query
+
Should Trigger
+
Actions
+
+
+
+
+
+
+
+
+
+
🧩
Skill-Anpassung
Neu
skills/skill-creator/agents/grader.md
__preamble__
Von Daniel • 2026-04-24 09:26:29.805597
Worum geht es?
Neuer Skill „skill-creator" wird angelegt
Evaluate expectations against an execution transcript and outputs.
Technischen Diff anzeigen
--- a/skills/skill-creator/agents/grader.md
+++ b/skills/skill-creator/agents/grader.md
@@ -0,0 +1,4 @@
+# Grader Agent
+
+Evaluate expectations against an execution transcript and outputs.
+
🧩
Skill-Anpassung
Neu
skills/skill-creator/agents/grader.md
## Role
Von Daniel • 2026-04-24 09:26:29.804786
Worum geht es?
Neuer Skill „skill-creator" wird angelegt
The Grader reviews a transcript and output files, then determines whether each expectation passes or fails. Provide clear evidence for each judgment.
Technischen Diff anzeigen
--- a/skills/skill-creator/agents/grader.md
+++ b/skills/skill-creator/agents/grader.md
@@ -0,0 +1,6 @@
+## Role
+
+The Grader reviews a transcript and output files, then determines whether each expectation passes or fails. Provide clear evidence for each judgment.
+
+You have two jobs: grade the outputs, and critique the evals themselves. A passing grade on a weak assertion is worse than useless — it creates false confidence. When you notice an assertion that's trivially satisfied, or an important outcome that no assertion checks, say so.
+
🧩
Skill-Anpassung
Neu
skills/skill-creator/agents/grader.md
## Process
Von Daniel • 2026-04-24 09:26:29.803958
Worum geht es?
Neuer Skill „skill-creator" wird angelegt
1. Read the transcript file completely
Technischen Diff anzeigen
--- a/skills/skill-creator/agents/grader.md
+++ b/skills/skill-creator/agents/grader.md
@@ -0,0 +1,66 @@
+## Process
+
+### Step 1: Read the Transcript
+
+1. Read the transcript file completely
+2. Note the eval prompt, execution steps, and final result
+3. Identify any issues or errors documented
+
+### Step 2: Examine Output Files
+
+1. List files in outputs_dir
+2. Read/examine each file relevant to the expectations. If outputs aren't plain text, use the inspection tools provided in your prompt — don't rely solely on what the transcript says the executor produced.
+3. Note contents, structure, and quality
+
+### Step 3: Evaluate Each Assertion
+
+For each expectation:
+
+1. **Search for evidence** in the transcript and outputs
+2. **Determine verdict**:
+ - **PASS**: Clear evidence the expectation is true AND the evidence reflects genuine task completion, not just surface-level compliance
+ - **FAIL**: No evidence, or evidence contradicts the expectation, or the evidence is superficial (e.g., correct filename but empty/wrong content)
+3. **Cite the evidence**: Quote the specific text or describe what you found
+
+### Step 4: Extract and Verify Claims
+
+Beyond the predefined expectations, extract implicit claims from the outputs and verify them:
+
+1. **Extract claims** from the transcript and outputs:
+ - Factual statements ("The form has 12 fields")
+ - Process claims ("Used pypdf to fill the form")
+ - Quality claims ("All fields were filled correctly")
+
+2. **Verify each claim**:
+ - **Factual claims**: Can be checked against the outputs or external sources
+ - **Process claims**: Can be verified from the transcript
+ - **Quality claims**: Evaluate whether the claim is justified
+
+3. **Flag unverifiable claims**: Note claims that cannot be verified with available information
+
+This catches issues that predefined expectations might miss.
+
+### Step 5: Read User Notes
+
+If `{outputs_dir}/user_notes.md` exists:
+1. Read it and note any uncertainties or issues flagged by the executor
+2. Include relevant concerns in the grading output
+3. These may reveal problems even when expectations pass
+
+### Step 6: Critique the Evals
+
+After grading, consider whether the evals themselves could be improved. Only surface suggestions when there's a clear gap.
+
+Good suggestions test meaningful outcomes — assertions that are hard to satisfy without actually doing the work correctly. Think about what makes an assertion *discriminating*: it passes when the skill genuinely succeeds and fails when it doesn't.
+
+Suggestions worth raising:
+- An assertion that passed but would also pass for a clearly wrong output (e.g., checking filename existence but not file content)
+- An important outcome you observed — good or bad — that no assertion covers at all
+- An assertion that can't actually be verified from the available outputs
+
+Keep the bar high. The goal is to flag things the eval author would say "good catch" about, not to nitpick every assertion.
+
+### Step 7: Write Grading Results
+
+Save results to `{outputs_dir}/../grading.json` (sibling to outputs_dir).
+
🧩
Skill-Anpassung
Neu
skills/skill-creator/agents/grader.md
## Output Format
Von Daniel • 2026-04-24 09:26:29.803095
Worum geht es?
Neuer Skill „skill-creator" wird angelegt
Write a JSON file with this structure:
Technischen Diff anzeigen
--- a/skills/skill-creator/agents/grader.md
+++ b/skills/skill-creator/agents/grader.md
@@ -0,0 +1,80 @@
+## Output Format
+
+Write a JSON file with this structure:
+
+```json
+{
+ "expectations": [
+ {
+ "text": "The output includes the name 'John Smith'",
+ "passed": true,
+ "evidence": "Found in transcript Step 3: 'Extracted names: John Smith, Sarah Johnson'"
+ },
+ {
+ "text": "The spreadsheet has a SUM formula in cell B10",
+ "passed": false,
+ "evidence": "No spreadsheet was created. The output was a text file."
+ },
+ {
+ "text": "The assistant used the skill's OCR script",
+ "passed": true,
+ "evidence": "Transcript Step 2 shows: 'Tool: Bash - python ocr_script.py image.png'"
+ }
+ ],
+ "summary": {
+ "passed": 2,
+ "failed": 1,
+ "total": 3,
+ "pass_rate": 0.67
+ },
+ "execution_metrics": {
+ "tool_calls": {
+ "Read": 5,
+ "Write": 2,
+ "Bash": 8
+ },
+ "total_tool_calls": 15,
+ "total_steps": 6,
+ "errors_encountered": 0,
+ "output_chars": 12450,
+ "transcript_chars": 3200
+ },
+ "timing": {
+ "executor_duration_seconds": 165.0,
+ "grader_duration_seconds": 26.0,
+ "total_duration_seconds": 191.0
+ },
+ "claims": [
+ {
+ "claim": "The form has 12 fillable fields",
+ "type": "factual",
+ "verified": true,
+ "evidence": "Counted 12 fields in field_info.json"
+ },
+ {
+ "claim": "All required fields were populated",
+ "type": "quality",
+ "verified": false,
+ "evidence": "Reference section was left blank despite data being available"
+ }
+ ],
+ "user_notes_summary": {
+ "uncertainties": ["Used 2023 data, may be stale"],
+ "needs_review": [],
+ "workarounds": ["Fell back to text overlay for non-fillable fields"]
+ },
+ "eval_feedback": {
+ "suggestions": [
+ {
+ "assertion": "The output includes the name 'John Smith'",
+ "reason": "A hallucinated document that mentions the name would also pass — consider checking it appears as the primary contact with matching phone and email from the input"
+ },
+ {
+ "reason": "No assertion checks whether the extracted phone numbers match the input — I observed incorrect numbers in the output that went uncaught"
+ }
+ ],
+ "overall": "Assertions check presence but not correctness. Consider adding content verification."
+ }
+}
+```
+
🧩
Skill-Anpassung
Neu
skills/skill-creator/agents/grader.md
## Inputs
Von Daniel • 2026-04-24 09:26:29.802174
Worum geht es?
Neuer Skill „skill-creator" wird angelegt
You receive these parameters in your prompt:
Technischen Diff anzeigen
--- a/skills/skill-creator/agents/grader.md
+++ b/skills/skill-creator/agents/grader.md
@@ -0,0 +1,8 @@
+## Inputs
+
+You receive these parameters in your prompt:
+
+- **expectations**: List of expectations to evaluate (strings)
+- **transcript_path**: Path to the execution transcript (markdown file)
+- **outputs_dir**: Directory containing output files from execution
+
🧩
Skill-Anpassung
Neu
skills/skill-creator/agents/grader.md
## Guidelines
Von Daniel • 2026-04-24 09:26:29.801158
Worum geht es?
Neuer Skill „skill-creator" wird angelegt
- **Be objective**: Base verdicts on evidence, not assumptions
Technischen Diff anzeigen
--- a/skills/skill-creator/agents/grader.md
+++ b/skills/skill-creator/agents/grader.md
@@ -0,0 +1,8 @@
+## Guidelines
+
+- **Be objective**: Base verdicts on evidence, not assumptions
+- **Be specific**: Quote the exact text that supports your verdict
+- **Be thorough**: Check both transcript and output files
+- **Be consistent**: Apply the same standard to each expectation
+- **Explain failures**: Make it clear why evidence was insufficient
+- **No partial credit**: Each expectation is pass or fail, not partial
🧩
Skill-Anpassung
Neu
skills/skill-creator/agents/grader.md
## Grading Criteria
Von Daniel • 2026-04-24 09:26:29.800229
Worum geht es?
Neuer Skill „skill-creator" wird angelegt
- The transcript or outputs clearly demonstrate the expectation is true
Technischen Diff anzeigen
--- a/skills/skill-creator/agents/grader.md
+++ b/skills/skill-creator/agents/grader.md
@@ -0,0 +1,21 @@
+## Grading Criteria
+
+**PASS when**:
+- The transcript or outputs clearly demonstrate the expectation is true
+- Specific evidence can be cited
+- The evidence reflects genuine substance, not just surface compliance (e.g., a file exists AND contains correct content, not just the right filename)
+
+**FAIL when**:
+- No evidence found for the expectation
+- Evidence contradicts the expectation
+- The expectation cannot be verified from available information
+- The evidence is superficial — the assertion is technically satisfied but the underlying task outcome is wrong or incomplete
+- The output appears to meet the assertion by coincidence rather than by actually doing the work
+
+**When uncertain**: The burden of proof to pass is on the expectation.
+
+### Step 8: Read Executor Metrics and Timing
+
+1. If `{outputs_dir}/metrics.json` exists, read it and include in grading output
+2. If `{outputs_dir}/../timing.json` exists, read it and include timing data
+
🧩
Skill-Anpassung
Neu
skills/skill-creator/agents/grader.md
## Field Descriptions
Von Daniel • 2026-04-24 09:26:29.799385
Worum geht es?
Neuer Skill „skill-creator" wird angelegt
- **expectations**: Array of graded expectations
Technischen Diff anzeigen
--- a/skills/skill-creator/agents/grader.md
+++ b/skills/skill-creator/agents/grader.md
@@ -0,0 +1,30 @@
+## Field Descriptions
+
+- **expectations**: Array of graded expectations
+ - **text**: The original expectation text
+ - **passed**: Boolean - true if expectation passes
+ - **evidence**: Specific quote or description supporting the verdict
+- **summary**: Aggregate statistics
+ - **passed**: Count of passed expectations
+ - **failed**: Count of failed expectations
+ - **total**: Total expectations evaluated
+ - **pass_rate**: Fraction passed (0.0 to 1.0)
+- **execution_metrics**: Copied from executor's metrics.json (if available)
+ - **output_chars**: Total character count of output files (proxy for tokens)
+ - **transcript_chars**: Character count of transcript
+- **timing**: Wall clock timing from timing.json (if available)
+ - **executor_duration_seconds**: Time spent in executor subagent
+ - **total_duration_seconds**: Total elapsed time for the run
+- **claims**: Extracted and verified claims from the output
+ - **claim**: The statement being verified
+ - **type**: "factual", "process", or "quality"
+ - **verified**: Boolean - whether the claim holds
+ - **evidence**: Supporting or contradicting evidence
+- **user_notes_summary**: Issues flagged by the executor
+ - **uncertainties**: Things the executor wasn't sure about
+ - **needs_review**: Items requiring human attention
+ - **workarounds**: Places where the skill didn't work as expected
+- **eval_feedback**: Improvement suggestions for the evals (only when warranted)
+ - **suggestions**: List of concrete suggestions, each with a `reason` and optionally an `assertion` it relates to
+ - **overall**: Brief assessment — can be "No suggestions, evals look solid" if nothing to flag
+
🧩
Skill-Anpassung
Neu
skills/skill-creator/agents/comparator.md
__preamble__
Von Daniel • 2026-04-24 09:26:29.798599
Worum geht es?
Neuer Skill „skill-creator" wird angelegt
Compare two outputs WITHOUT knowing which skill produced them.
Technischen Diff anzeigen
--- a/skills/skill-creator/agents/comparator.md
+++ b/skills/skill-creator/agents/comparator.md
@@ -0,0 +1,4 @@
+# Blind Comparator Agent
+
+Compare two outputs WITHOUT knowing which skill produced them.
+
🧩
Skill-Anpassung
Neu
skills/skill-creator/agents/comparator.md
## Role
Von Daniel • 2026-04-24 09:26:29.797790
Worum geht es?
Neuer Skill „skill-creator" wird angelegt
The Blind Comparator judges which output better accomplishes the eval task. You receive two outputs labeled A and B, but you do NOT know which skill produced wh…
Technischen Diff anzeigen
--- a/skills/skill-creator/agents/comparator.md
+++ b/skills/skill-creator/agents/comparator.md
@@ -0,0 +1,6 @@
+## Role
+
+The Blind Comparator judges which output better accomplishes the eval task. You receive two outputs labeled A and B, but you do NOT know which skill produced which. This prevents bias toward a particular skill or approach.
+
+Your judgment is based purely on output quality and task completion.
+
🧩
Skill-Anpassung
Neu
skills/skill-creator/agents/comparator.md
## Process
Von Daniel • 2026-04-24 09:26:29.796952
Worum geht es?
Neuer Skill „skill-creator" wird angelegt
1. Examine output A (file or directory)
Technischen Diff anzeigen
--- a/skills/skill-creator/agents/comparator.md
+++ b/skills/skill-creator/agents/comparator.md
@@ -0,0 +1,71 @@
+## Process
+
+### Step 1: Read Both Outputs
+
+1. Examine output A (file or directory)
+2. Examine output B (file or directory)
+3. Note the type, structure, and content of each
+4. If outputs are directories, examine all relevant files inside
+
+### Step 2: Understand the Task
+
+1. Read the eval_prompt carefully
+2. Identify what the task requires:
+ - What should be produced?
+ - What qualities matter (accuracy, completeness, format)?
+ - What would distinguish a good output from a poor one?
+
+### Step 3: Generate Evaluation Rubric
+
+Based on the task, generate a rubric with two dimensions:
+
+**Content Rubric** (what the output contains):
+| Criterion | 1 (Poor) | 3 (Acceptable) | 5 (Excellent) |
+|-----------|----------|----------------|---------------|
+| Correctness | Major errors | Minor errors | Fully correct |
+| Completeness | Missing key elements | Mostly complete | All elements present |
+| Accuracy | Significant inaccuracies | Minor inaccuracies | Accurate throughout |
+
+**Structure Rubric** (how the output is organized):
+| Criterion | 1 (Poor) | 3 (Acceptable) | 5 (Excellent) |
+|-----------|----------|----------------|---------------|
+| Organization | Disorganized | Reasonably organized | Clear, logical structure |
+| Formatting | Inconsistent/broken | Mostly consistent | Professional, polished |
+| Usability | Difficult to use | Usable with effort | Easy to use |
+
+Adapt criteria to the specific task. For example:
+- PDF form → "Field alignment", "Text readability", "Data placement"
+- Document → "Section structure", "Heading hierarchy", "Paragraph flow"
+- Data output → "Schema correctness", "Data types", "Completeness"
+
+### Step 4: Evaluate Each Output Against the Rubric
+
+For each output (A and B):
+
+1. **Score each criterion** on the rubric (1-5 scale)
+2. **Calculate dimension totals**: Content score, Structure score
+3. **Calculate overall score**: Average of dimension scores, scaled to 1-10
+
+### Step 5: Check Assertions (if provided)
+
+If expectations are provided:
+
+1. Check each expectation against output A
+2. Check each expectation against output B
+3. Count pass rates for each output
+4. Use expectation scores as secondary evidence (not the primary decision factor)
+
+### Step 6: Determine the Winner
+
+Compare A and B based on (in priority order):
+
+1. **Primary**: Overall rubric score (content + structure)
+2. **Secondary**: Assertion pass rates (if applicable)
+3. **Tiebreaker**: If truly equal, declare a TIE
+
+Be decisive - ties should be rare. One output is usually better, even if marginally.
+
+### Step 7: Write Comparison Results
+
+Save results to a JSON file at the path specified (or `comparison.json` if not specified).
+
--- a/skills/skill-creator/agents/comparator.md
+++ b/skills/skill-creator/agents/comparator.md
@@ -0,0 +1,9 @@
+## Inputs
+
+You receive these parameters in your prompt:
+
+- **output_a_path**: Path to the first output file or directory
+- **output_b_path**: Path to the second output file or directory
+- **eval_prompt**: The original task/prompt that was executed
+- **expectations**: List of expectations to check (optional - may be empty)
+
🧩
Skill-Anpassung
Neu
skills/skill-creator/agents/comparator.md
## Guidelines
Von Daniel • 2026-04-24 09:26:29.794261
Worum geht es?
Neuer Skill „skill-creator" wird angelegt
- **Stay blind**: DO NOT try to infer which skill produced which output. Judge purely on output quality.
Technischen Diff anzeigen
--- a/skills/skill-creator/agents/comparator.md
+++ b/skills/skill-creator/agents/comparator.md
@@ -0,0 +1,9 @@
+## Guidelines
+
+- **Stay blind**: DO NOT try to infer which skill produced which output. Judge purely on output quality.
+- **Be specific**: Cite specific examples when explaining strengths and weaknesses.
+- **Be decisive**: Choose a winner unless outputs are genuinely equivalent.
+- **Output quality first**: Assertion scores are secondary to overall task completion.
+- **Be objective**: Don't favor outputs based on style preferences; focus on correctness and completeness.
+- **Explain your reasoning**: The reasoning field should make it clear why you chose the winner.
+- **Handle edge cases**: If both outputs fail, pick the one that fails less badly. If both are excellent, pick the one that's marginally better.
🧩
Skill-Anpassung
Neu
skills/skill-creator/agents/comparator.md
## Field Descriptions
Von Daniel • 2026-04-24 09:26:29.793252
Worum geht es?
Neuer Skill „skill-creator" wird angelegt
- **winner**: "A", "B", or "TIE"
Technischen Diff anzeigen
--- a/skills/skill-creator/agents/comparator.md
+++ b/skills/skill-creator/agents/comparator.md
@@ -0,0 +1,20 @@
+## Field Descriptions
+
+- **winner**: "A", "B", or "TIE"
+- **reasoning**: Clear explanation of why the winner was chosen (or why it's a tie)
+- **rubric**: Structured rubric evaluation for each output
+ - **content**: Scores for content criteria (correctness, completeness, accuracy)
+ - **structure**: Scores for structure criteria (organization, formatting, usability)
+ - **content_score**: Average of content criteria (1-5)
+ - **structure_score**: Average of structure criteria (1-5)
+ - **overall_score**: Combined score scaled to 1-10
+- **output_quality**: Summary quality assessment
+ - **score**: 1-10 rating (should match rubric overall_score)
+ - **strengths**: List of positive aspects
+ - **weaknesses**: List of issues or shortcomings
+- **expectation_results**: (Only if expectations provided)
+ - **passed**: Number of expectations that passed
+ - **total**: Total number of expectations
+ - **pass_rate**: Fraction passed (0.0 to 1.0)
+ - **details**: Individual expectation results
+
🧩
Skill-Anpassung
Neu
skills/skill-creator/agents/analyzer.md
__preamble__
Von Daniel • 2026-04-24 09:26:29.792466
Worum geht es?
Neuer Skill „skill-creator" wird angelegt
Analyze blind comparison results to understand WHY the winner won and generate improvement suggestions.
Technischen Diff anzeigen
--- a/skills/skill-creator/agents/analyzer.md
+++ b/skills/skill-creator/agents/analyzer.md
@@ -0,0 +1,4 @@
+# Post-hoc Analyzer Agent
+
+Analyze blind comparison results to understand WHY the winner won and generate improvement suggestions.
+
🧩
Skill-Anpassung
Neu
skills/skill-creator/agents/analyzer.md
## Role (2)
Von Daniel • 2026-04-24 09:26:29.791662
Worum geht es?
Neuer Skill „skill-creator" wird angelegt
Review all benchmark run results and generate freeform notes that help the user understand skill performance. Focus on patterns that wouldn't be visible from ag…
Technischen Diff anzeigen
--- a/skills/skill-creator/agents/analyzer.md
+++ b/skills/skill-creator/agents/analyzer.md
@@ -0,0 +1,4 @@
+## Role
+
+Review all benchmark run results and generate freeform notes that help the user understand skill performance. Focus on patterns that wouldn't be visible from aggregate metrics alone.
+
🧩
Skill-Anpassung
Neu
skills/skill-creator/agents/analyzer.md
## Role
Von Daniel • 2026-04-24 09:26:29.790836
Worum geht es?
Neuer Skill „skill-creator" wird angelegt
After the blind comparator determines a winner, the Post-hoc Analyzer "unblids" the results by examining the skills and transcripts. The goal is to extract acti…
Technischen Diff anzeigen
--- a/skills/skill-creator/agents/analyzer.md
+++ b/skills/skill-creator/agents/analyzer.md
@@ -0,0 +1,4 @@
+## Role
+
+After the blind comparator determines a winner, the Post-hoc Analyzer "unblids" the results by examining the skills and transcripts. The goal is to extract actionable insights: what made the winner better, and how can the loser be improved?
+
🧩
Skill-Anpassung
Neu
skills/skill-creator/agents/analyzer.md
## Process (2)
Von Daniel • 2026-04-24 09:26:29.790016
Worum geht es?
Neuer Skill „skill-creator" wird angelegt
1. Read the benchmark.json containing all run results
Technischen Diff anzeigen
--- a/skills/skill-creator/agents/analyzer.md
+++ b/skills/skill-creator/agents/analyzer.md
@@ -0,0 +1,59 @@
+## Process
+
+### Step 1: Read Benchmark Data
+
+1. Read the benchmark.json containing all run results
+2. Note the configurations tested (with_skill, without_skill)
+3. Understand the run_summary aggregates already calculated
+
+### Step 2: Analyze Per-Assertion Patterns
+
+For each expectation across all runs:
+- Does it **always pass** in both configurations? (may not differentiate skill value)
+- Does it **always fail** in both configurations? (may be broken or beyond capability)
+- Does it **always pass with skill but fail without**? (skill clearly adds value here)
+- Does it **always fail with skill but pass without**? (skill may be hurting)
+- Is it **highly variable**? (flaky expectation or non-deterministic behavior)
+
+### Step 3: Analyze Cross-Eval Patterns
+
+Look for patterns across evals:
+- Are certain eval types consistently harder/easier?
+- Do some evals show high variance while others are stable?
+- Are there surprising results that contradict expectations?
+
+### Step 4: Analyze Metrics Patterns
+
+Look at time_seconds, tokens, tool_calls:
+- Does the skill significantly increase execution time?
+- Is there high variance in resource usage?
+- Are there outlier runs that skew the aggregates?
+
+### Step 5: Generate Notes
+
+Write freeform observations as a list of strings. Each note should:
+- State a specific observation
+- Be grounded in the data (not speculation)
+- Help the user understand something the aggregate metrics don't show
+
+Examples:
+- "Assertion 'Output is a PDF file' passes 100% in both configurations - may not differentiate skill value"
+- "Eval 3 shows high variance (50% ± 40%) - run 2 had an unusual failure that may be flaky"
+- "Without-skill runs consistently fail on table extraction expectations (0% pass rate)"
+- "Skill adds 13s average execution time but improves pass rate by 50%"
+- "Token usage is 80% higher with skill, primarily due to script output parsing"
+- "All 3 without-skill runs for eval 1 produced empty output"
+
+### Step 6: Write Notes
+
+Save notes to `{output_path}` as a JSON array of strings:
+
+```json
+[
+ "Assertion 'Output is a PDF file' passes 100% in both configurations - may not differentiate skill value",
+ "Eval 3 shows high variance (50% ± 40%) - run 2 had an unusual failure",
+ "Without-skill runs consistently fail on table extraction expectations",
+ "Skill adds 13s average execution time but improves pass rate by 50%"
+]
+```
+
🧩
Skill-Anpassung
Neu
skills/skill-creator/agents/analyzer.md
## Process
Von Daniel • 2026-04-24 09:26:29.789195
Worum geht es?
Neuer Skill „skill-creator" wird angelegt
1. Read the blind comparator's output at comparison_result_path
Technischen Diff anzeigen
--- a/skills/skill-creator/agents/analyzer.md
+++ b/skills/skill-creator/agents/analyzer.md
@@ -0,0 +1,70 @@
+## Process
+
+### Step 1: Read Comparison Result
+
+1. Read the blind comparator's output at comparison_result_path
+2. Note the winning side (A or B), the reasoning, and any scores
+3. Understand what the comparator valued in the winning output
+
+### Step 2: Read Both Skills
+
+1. Read the winner skill's SKILL.md and key referenced files
+2. Read the loser skill's SKILL.md and key referenced files
+3. Identify structural differences:
+ - Instructions clarity and specificity
+ - Script/tool usage patterns
+ - Example coverage
+ - Edge case handling
+
+### Step 3: Read Both Transcripts
+
+1. Read the winner's transcript
+2. Read the loser's transcript
+3. Compare execution patterns:
+ - How closely did each follow their skill's instructions?
+ - What tools were used differently?
+ - Where did the loser diverge from optimal behavior?
+ - Did either encounter errors or make recovery attempts?
+
+### Step 4: Analyze Instruction Following
+
+For each transcript, evaluate:
+- Did the agent follow the skill's explicit instructions?
+- Did the agent use the skill's provided tools/scripts?
+- Were there missed opportunities to leverage skill content?
+- Did the agent add unnecessary steps not in the skill?
+
+Score instruction following 1-10 and note specific issues.
+
+### Step 5: Identify Winner Strengths
+
+Determine what made the winner better:
+- Clearer instructions that led to better behavior?
+- Better scripts/tools that produced better output?
+- More comprehensive examples that guided edge cases?
+- Better error handling guidance?
+
+Be specific. Quote from skills/transcripts where relevant.
+
+### Step 6: Identify Loser Weaknesses
+
+Determine what held the loser back:
+- Ambiguous instructions that led to suboptimal choices?
+- Missing tools/scripts that forced workarounds?
+- Gaps in edge case coverage?
+- Poor error handling that caused failures?
+
+### Step 7: Generate Improvement Suggestions
+
+Based on the analysis, produce actionable suggestions for improving the loser skill:
+- Specific instruction changes to make
+- Tools/scripts to add or modify
+- Examples to include
+- Edge cases to address
+
+Prioritize by impact. Focus on changes that would have changed the outcome.
+
+### Step 8: Write Analysis Results
+
+Save structured analysis to `{output_path}`.
+
🧩
Skill-Anpassung
Neu
skills/skill-creator/agents/analyzer.md
## Priority Levels
Von Daniel • 2026-04-24 09:26:29.788389
Worum geht es?
Neuer Skill „skill-creator" wird angelegt
- **high**: Would likely change the outcome of this comparison
Technischen Diff anzeigen
--- a/skills/skill-creator/agents/analyzer.md
+++ b/skills/skill-creator/agents/analyzer.md
@@ -0,0 +1,12 @@
+## Priority Levels
+
+- **high**: Would likely change the outcome of this comparison
+- **medium**: Would improve quality but may not change win/loss
+- **low**: Nice to have, marginal improvement
+
+---
+
+# Analyzing Benchmark Results
+
+When analyzing benchmark results, the analyzer's purpose is to **surface patterns and anomalies** across multiple runs, not suggest skill improvements.
+
🧩
Skill-Anpassung
Neu
skills/skill-creator/agents/analyzer.md
## Output Format
Von Daniel • 2026-04-24 09:26:29.787594
Worum geht es?
Neuer Skill „skill-creator" wird angelegt
Write a JSON file with this structure:
Technischen Diff anzeigen
--- a/skills/skill-creator/agents/analyzer.md
+++ b/skills/skill-creator/agents/analyzer.md
@@ -0,0 +1,65 @@
+## Output Format
+
+Write a JSON file with this structure:
+
+```json
+{
+ "comparison_summary": {
+ "winner": "A",
+ "winner_skill": "path/to/winner/skill",
+ "loser_skill": "path/to/loser/skill",
+ "comparator_reasoning": "Brief summary of why comparator chose winner"
+ },
+ "winner_strengths": [
+ "Clear step-by-step instructions for handling multi-page documents",
+ "Included validation script that caught formatting errors",
+ "Explicit guidance on fallback behavior when OCR fails"
+ ],
+ "loser_weaknesses": [
+ "Vague instruction 'process the document appropriately' led to inconsistent behavior",
+ "No script for validation, agent had to improvise and made errors",
+ "No guidance on OCR failure, agent gave up instead of trying alternatives"
+ ],
+ "instruction_following": {
+ "winner": {
+ "score": 9,
+ "issues": [
+ "Minor: skipped optional logging step"
+ ]
+ },
+ "loser": {
+ "score": 6,
+ "issues": [
+ "Did not use the skill's formatting template",
+ "Invented own approach instead of following step 3",
+ "Missed the 'always validate output' instruction"
+ ]
+ }
+ },
+ "improvement_suggestions": [
+ {
+ "priority": "high",
+ "category": "instructions",
+ "suggestion": "Replace 'process the document appropriately' with explicit steps: 1) Extract text, 2) Identify sections, 3) Format per template",
+ "expected_impact": "Would eliminate ambiguity that caused inconsistent behavior"
+ },
+ {
+ "priority": "high",
+ "category": "tools",
+ "suggestion": "Add validate_output.py script similar to winner skill's validation approach",
+ "expected_impact": "Would catch formatting errors before final output"
+ },
+ {
+ "priority": "medium",
+ "category": "error_handling",
+ "suggestion": "Add fallback instructions: 'If OCR fails, try: 1) different resolution, 2) image preprocessing, 3) manual extraction'",
+ "expected_impact": "Would prevent early failure on difficult documents"
+ }
+ ],
+ "transcript_insights": {
+ "winner_execution_pattern": "Read skill -> Followed 5-step process -> Used validation script -> Fixed 2 issues -> Produced output",
+ "loser_execution_pattern": "Read skill -> Unclear on approach -> Tried 3 different methods -> No validation -> Output had errors"
+ }
+}
+```
+
🧩
Skill-Anpassung
Neu
skills/skill-creator/agents/analyzer.md
## Inputs (2)
Von Daniel • 2026-04-24 09:26:29.786771
Worum geht es?
Neuer Skill „skill-creator" wird angelegt
You receive these parameters in your prompt:
Technischen Diff anzeigen
--- a/skills/skill-creator/agents/analyzer.md
+++ b/skills/skill-creator/agents/analyzer.md
@@ -0,0 +1,8 @@
+## Inputs
+
+You receive these parameters in your prompt:
+
+- **benchmark_data_path**: Path to the in-progress benchmark.json with all run results
+- **skill_path**: Path to the skill being benchmarked
+- **output_path**: Where to save the notes (as JSON array of strings)
+
🧩
Skill-Anpassung
Neu
skills/skill-creator/agents/analyzer.md
## Inputs
Von Daniel • 2026-04-24 09:26:29.785953
Worum geht es?
Neuer Skill „skill-creator" wird angelegt
You receive these parameters in your prompt:
Technischen Diff anzeigen
--- a/skills/skill-creator/agents/analyzer.md
+++ b/skills/skill-creator/agents/analyzer.md
@@ -0,0 +1,12 @@
+## Inputs
+
+You receive these parameters in your prompt:
+
+- **winner**: "A" or "B" (from blind comparison)
+- **winner_skill_path**: Path to the skill that produced the winning output
+- **winner_transcript_path**: Path to the execution transcript for the winner
+- **loser_skill_path**: Path to the skill that produced the losing output
+- **loser_transcript_path**: Path to the execution transcript for the loser
+- **comparison_result_path**: Path to the blind comparator's output JSON
+- **output_path**: Where to save the analysis results
+
🧩
Skill-Anpassung
Neu
skills/skill-creator/agents/analyzer.md
## Guidelines (2)
Von Daniel • 2026-04-24 09:26:29.785136
Worum geht es?
Neuer Skill „skill-creator" wird angelegt
- Report what you observe in the data
Technischen Diff anzeigen
--- a/skills/skill-creator/agents/analyzer.md
+++ b/skills/skill-creator/agents/analyzer.md
@@ -0,0 +1,13 @@
+## Guidelines
+
+**DO:**
+- Report what you observe in the data
+- Be specific about which evals, expectations, or runs you're referring to
+- Note patterns that aggregate metrics would hide
+- Provide context that helps interpret the numbers
+
+**DO NOT:**
+- Suggest improvements to the skill (that's for the improvement step, not benchmarking)
+- Make subjective quality judgments ("the output was good/bad")
+- Speculate about causes without evidence
+- Repeat information already in the run_summary aggregates
🧩
Skill-Anpassung
Neu
skills/skill-creator/agents/analyzer.md
## Guidelines
Von Daniel • 2026-04-24 09:26:29.784306
Worum geht es?
Neuer Skill „skill-creator" wird angelegt
- **Be specific**: Quote from skills and transcripts, don't just say "instructions were unclear"
Technischen Diff anzeigen
--- a/skills/skill-creator/agents/analyzer.md
+++ b/skills/skill-creator/agents/analyzer.md
@@ -0,0 +1,10 @@
+## Guidelines
+
+- **Be specific**: Quote from skills and transcripts, don't just say "instructions were unclear"
+- **Be actionable**: Suggestions should be concrete changes, not vague advice
+- **Focus on skill improvements**: The goal is to improve the losing skill, not critique the agent
+- **Prioritize by impact**: Which changes would most likely have changed the outcome?
+- **Consider causation**: Did the skill weakness actually cause the worse output, or is it incidental?
+- **Stay objective**: Analyze what happened, don't editorialize
+- **Think about generalization**: Would this improvement help on other evals too?
+
🧩
Skill-Anpassung
Neu
skills/skill-creator/agents/analyzer.md
## Categories for Suggestions
Von Daniel • 2026-04-24 09:26:29.783420
Worum geht es?
Neuer Skill „skill-creator" wird angelegt
Use these categories to organize improvement suggestions:
Technischen Diff anzeigen
--- a/skills/skill-creator/agents/analyzer.md
+++ b/skills/skill-creator/agents/analyzer.md
@@ -0,0 +1,13 @@
+## Categories for Suggestions
+
+Use these categories to organize improvement suggestions:
+
+| Category | Description |
+|----------|-------------|
+| `instructions` | Changes to the skill's prose instructions |
+| `tools` | Scripts, templates, or utilities to add/modify |
+| `examples` | Example inputs/outputs to include |
+| `error_handling` | Guidance for handling failures |
+| `structure` | Reorganization of skill content |
+| `references` | External docs or resources to add |
+
🧩
Skill-Anpassung
Neu
skills/skill-creator/SKILL.md
__preamble__
Von Daniel • 2026-04-24 09:26:29.782609
Worum geht es?
Neuer Skill „skill-creator" wird angelegt
A skill for creating new skills and iteratively improving them.
Technischen Diff anzeigen
--- a/skills/skill-creator/SKILL.md
+++ b/skills/skill-creator/SKILL.md
@@ -0,0 +1,27 @@
+
+# Skill Creator
+
+A skill for creating new skills and iteratively improving them.
+
+At a high level, the process of creating a skill goes like this:
+
+- Decide what you want the skill to do and roughly how it should do it
+- Write a draft of the skill
+- Create a few test prompts and run claude-with-access-to-the-skill on them
+- Help the user evaluate the results both qualitatively and quantitatively
+ - While the runs happen in the background, draft some quantitative evals if there aren't any (if there are some, you can either use as is or modify if you feel something needs to change about them). Then explain them to the user (or if they already existed, explain the ones that already exist)
+ - Use the `eval-viewer/generate_review.py` script to show the user the results for them to look at, and also let them look at the quantitative metrics
+- Rewrite the skill based on feedback from the user's evaluation of the results (and also if there are any glaring flaws that become apparent from the quantitative benchmarks)
+- Repeat until you're satisfied
+- Expand the test set and try again at larger scale
+
+Your job when using this skill is to figure out where the user is in this process and then jump in and help them progress through these stages. So for instance, maybe they're like "I want to make a skill for X". You can help narrow down what they mean, write a draft, write the test cases, figure out how they want to evaluate, run all the prompts, and repeat.
+
+On the other hand, maybe they already have a draft of the skill. In this case you can go straight to the eval/iterate part of the loop.
+
+Of course, you should always be flexible and if the user is like "I don't need to run a bunch of evaluations, just vibe with me", you can do that instead.
+
+Then after the skill is done (but again, the order is flexible), you can also run the skill description improver, which we have a whole separate script for, to optimize the triggering of the skill.
+
+Cool? Cool.
+
🧩
Skill-Anpassung
Neu
skills/skill-creator/SKILL.md
__frontmatter__
Von Daniel • 2026-04-24 09:26:29.781776
Worum geht es?
Neuer Skill „skill-creator" — Create new skills, modify and improve existing skills, and measure skill performance.
Technischen Diff anzeigen
--- a/skills/skill-creator/SKILL.md
+++ b/skills/skill-creator/SKILL.md
@@ -0,0 +1,4 @@
+---
+name: skill-creator
+description: Create new skills, modify and improve existing skills, and measure skill performance. Use when users want to create a skill from scratch, edit, or optimize an existing skill, run evals to test a skill, benchmark skill performance with variance analysis, or optimize a skill's description for better triggering accuracy.
+---
🧩
Skill-Anpassung
Neu
skills/skill-creator/SKILL.md
## Running and evaluating test cases
Von Daniel • 2026-04-24 09:26:29.780879
Worum geht es?
Neuer Skill „skill-creator" wird angelegt
This section is one continuous sequence — don't stop partway through. Do NOT use `/skill-test` or any other testing skill.
Technischen Diff anzeigen
--- a/skills/skill-creator/SKILL.md
+++ b/skills/skill-creator/SKILL.md
@@ -0,0 +1,129 @@
+## Running and evaluating test cases
+
+This section is one continuous sequence — don't stop partway through. Do NOT use `/skill-test` or any other testing skill.
+
+Put results in `-workspace/` as a sibling to the skill directory. Within the workspace, organize results by iteration (`iteration-1/`, `iteration-2/`, etc.) and within that, each test case gets a directory (`eval-0/`, `eval-1/`, etc.). Don't create all of this upfront — just create directories as you go.
+
+### Step 1: Spawn all runs (with-skill AND baseline) in the same turn
+
+For each test case, spawn two subagents in the same turn — one with the skill, one without. This is important: don't spawn the with-skill runs first and then come back for baselines later. Launch everything at once so it all finishes around the same time.
+
+**With-skill run:**
+
+```
+Execute this task:
+- Skill path:
+- Task:
+- Input files:
+- Save outputs to: /iteration-/eval-/with_skill/outputs/
+- Outputs to save:
+```
+
+**Baseline run** (same prompt, but the baseline depends on context):
+- **Creating a new skill**: no skill at all. Same prompt, no skill path, save to `without_skill/outputs/`.
+- **Improving an existing skill**: the old version. Before editing, snapshot the skill (`cp -r /skill-snapshot/`), then point the baseline subagent at the snapshot. Save to `old_skill/outputs/`.
+
+Write an `eval_metadata.json` for each test case (assertions can be empty for now). Give each eval a descriptive name based on what it's testing — not just "eval-0". Use this name for the directory too. If this iteration uses new or modified eval prompts, create these files for each new eval directory — don't assume they carry over from previous iterations.
+
+```json
+{
+ "eval_id": 0,
+ "eval_name": "descriptive-name-here",
+ "prompt": "The user's task prompt",
+ "assertions": []
+}
+```
+
+### Step 2: While runs are in progress, draft assertions
+
+Don't just wait for the runs to finish — you can use this time productively. Draft quantitative assertions for each test case and explain them to the user. If assertions already exist in `evals/evals.json`, review them and explain what they check.
+
+Good assertions are objectively verifiable and have descriptive names — they should read clearly in the benchmark viewer so someone glancing at the results immediately understands what each one checks. Subjective skills (writing style, design quality) are better evaluated qualitatively — don't force assertions onto things that need human judgment.
+
+Update the `eval_metadata.json` files and `evals/evals.json` with the assertions once drafted. Also explain to the user what they'll see in the viewer — both the qualitative outputs and the quantitative benchmark.
+
+### Step 3: As runs complete, capture timing data
+
+When each subagent task completes, you receive a notification containing `total_tokens` and `duration_ms`. Save this data immediately to `timing.json` in the run directory:
+
+```json
+{
+ "total_tokens": 84852,
+ "duration_ms": 23332,
+ "total_duration_seconds": 23.3
+}
+```
+
+This is the only opportunity to capture this data — it comes through the task notification and isn't persisted elsewhere. Process each notification as it arrives rather than trying to batch them.
+
+### Step 4: Grade, aggregate, and launch the viewer
+
+Once all runs are done:
+
+1. **Grade each run** — spawn a grader subagent (or grade inline) that reads `agents/grader.md` and evaluates each assertion against the outputs. Save results to `grading.json` in each run directory. The grading.json expectations array must use the fields `text`, `passed`, and `evidence` (not `name`/`met`/`details` or other variants) — the viewer depends on these exact field names. For assertions that can be checked programmatically, write and run a script rather than eyeballing it — scripts are faster, more reliable, and can be reused across iterations.
+
+2. **Aggregate into benchmark** — run the aggregation script from the skill-creator directory:
+ ```bash
+ python -m scripts.aggregate_benchmark /iteration-N --skill-name
+ ```
+ This produces `benchmark.json` and `benchmark.md` with pass_rate, time, and tokens for each configuration, with mean ± stddev and the delta. If generating benchmark.json manually, see `references/schemas.md` for the exact schema the viewer expects.
+Put each with_skill version before its baseline counterpart.
+
+3. **Do an analyst pass** — read the benchmark data and surface patterns the aggregate stats might hide. See `agents/analyzer.md` (the "Analyzing Benchmark Results" section) for what to look for — things like assertions that always pass regardless of skill (non-discriminating), high-variance evals (possibly flaky), and time/token tradeoffs.
+
+4. **Launch the viewer** with both qualitative outputs and quantitative data:
+ ```bash
+ nohup python /eval-viewer/generate_review.py \
+ /iteration-N \
+ --skill-name "my-skill" \
+ --benchmark /iteration-N/benchmark.json \
+ > /dev/null 2>&1 &
+ VIEWER_PID=$!
+ ```
+ For iteration 2+, also pass `--previous-workspace /iteration-`.
+
+ **Cowork / headless environments:** If `webbrowser.open()` is not available or the environment has no display, use `--static ` to write a standalone HTML file instead of starting a server. Feedback will be downloaded as a `feedback.json` file when the user clicks "Submit All Reviews". After download, copy `feedback.json` into the workspace directory for the next iteration to pick up.
+
+Note: please use generate_review.py to create the viewer; there's no need to write custom HTML.
+
+5. **Tell the user** something like: "I've opened the results in your browser. There are two tabs — 'Outputs' lets you click through each test case and leave feedback, 'Benchmark' shows the quantitative comparison. When you're done, come back here and let me know."
+
+### What the user sees in the viewer
+
+The "Outputs" tab shows one test case at a time:
+- **Prompt**: the task that was given
+- **Output**: the files the skill produced, rendered inline where possible
+- **Previous Output** (iteration 2+): collapsed section showing last iteration's output
+- **Formal Grades** (if grading was run): collapsed section showing assertion pass/fail
+- **Feedback**: a textbox that auto-saves as they type
+- **Previous Feedback** (iteration 2+): their comments from last time, shown below the textbox
+
+The "Benchmark" tab shows the stats summary: pass rates, timing, and token usage for each configuration, with per-eval breakdowns and analyst observations.
+
+Navigation is via prev/next buttons or arrow keys. When done, they click "Submit All Reviews" which saves all feedback to `feedback.json`.
+
+### Step 5: Read the feedback
+
+When the user tells you they're done, read `feedback.json`:
+
+```json
+{
+ "reviews": [
+ {"run_id": "eval-0-with_skill", "feedback": "the chart is missing axis labels", "timestamp": "..."},
+ {"run_id": "eval-1-with_skill", "feedback": "", "timestamp": "..."},
+ {"run_id": "eval-2-with_skill", "feedback": "perfect, love this", "timestamp": "..."}
+ ],
+ "status": "complete"
+}
+```
+
+Empty feedback means the user thought it was fine. Focus your improvements on the test cases where the user had specific complaints.
+
+Kill the viewer server when you're done with it:
+
+```bash
+kill $VIEWER_PID 2>/dev/null
+```
+
+---
+
🧩
Skill-Anpassung
Neu
skills/skill-creator/SKILL.md
## Report structure
Von Daniel • 2026-04-24 09:26:29.779816
Worum geht es?
Neuer Skill „skill-creator" wird angelegt
ALWAYS use this exact template:
Technischen Diff anzeigen
--- a/skills/skill-creator/SKILL.md
+++ b/skills/skill-creator/SKILL.md
@@ -0,0 +1,3 @@
+## Report structure
+ALWAYS use this exact template:
+# [Title]
🧩
Skill-Anpassung
Neu
skills/skill-creator/SKILL.md
## Reference files
Von Daniel • 2026-04-24 09:26:29.778986
Worum geht es?
Neuer Skill „skill-creator" wird angelegt
The agents/ directory contains instructions for specialized subagents. Read them when you need to spawn the relevant subagent.
Technischen Diff anzeigen
--- a/skills/skill-creator/SKILL.md
+++ b/skills/skill-creator/SKILL.md
@@ -0,0 +1,27 @@
+## Reference files
+
+The agents/ directory contains instructions for specialized subagents. Read them when you need to spawn the relevant subagent.
+
+- `agents/grader.md` — How to evaluate assertions against outputs
+- `agents/comparator.md` — How to do blind A/B comparison between two outputs
+- `agents/analyzer.md` — How to analyze why one version beat another
+
+The references/ directory has additional documentation:
+- `references/schemas.md` — JSON structures for evals.json, grading.json, etc.
+
+---
+
+Repeating one more time the core loop here for emphasis:
+
+- Figure out what the skill is about
+- Draft or edit the skill
+- Run claude-with-access-to-the-skill on test prompts
+- With the user, evaluate the outputs:
+ - Create benchmark.json and run `eval-viewer/generate_review.py` to help the user review them
+ - Run quantitative evals
+- Repeat until you and the user are satisfied
+- Package the final skill and return it to the user.
+
+Please add steps to your TodoList, if you have such a thing, to make sure you don't forget. If you're in Cowork, please specifically put "Create evals JSON and run `eval-viewer/generate_review.py` so human can review test cases" in your TodoList to make sure it happens.
+
+Good luck!
🧩
Skill-Anpassung
Neu
skills/skill-creator/SKILL.md
## Recommendations
Von Daniel • 2026-04-24 09:26:29.778183
Worum geht es?
Neuer Skill „skill-creator" wird angelegt
**Examples pattern** - It's useful to include examples. You can format them like this (but if "Input" and "Output" are in the examples you might want to deviate…
Technischen Diff anzeigen
--- a/skills/skill-creator/SKILL.md
+++ b/skills/skill-creator/SKILL.md
@@ -0,0 +1,5 @@
+## Recommendations
+```
+
+**Examples pattern** - It's useful to include examples. You can format them like this (but if "Input" and "Output" are in the examples you might want to deviate a little):
+```markdown
This is the heart of the loop. You've run the test cases, the user has reviewed the results, and now you need to make the skill better based on their feedback.
Technischen Diff anzeigen
--- a/skills/skill-creator/SKILL.md
+++ b/skills/skill-creator/SKILL.md
@@ -0,0 +1,33 @@
+## Improving the skill
+
+This is the heart of the loop. You've run the test cases, the user has reviewed the results, and now you need to make the skill better based on their feedback.
+
+### How to think about improvements
+
+1. **Generalize from the feedback.** The big picture thing that's happening here is that we're trying to create skills that can be used a million times (maybe literally, maybe even more who knows) across many different prompts. Here you and the user are iterating on only a few examples over and over again because it helps move faster. The user knows these examples in and out and it's quick for them to assess new outputs. But if the skill you and the user are codeveloping works only for those examples, it's useless. Rather than put in fiddly overfitty changes, or oppressively constrictive MUSTs, if there's some stubborn issue, you might try branching out and using different metaphors, or recommending different patterns of working. It's relatively cheap to try and maybe you'll land on something great.
+
+2. **Keep the prompt lean.** Remove things that aren't pulling their weight. Make sure to read the transcripts, not just the final outputs — if it looks like the skill is making the model waste a bunch of time doing things that are unproductive, you can try getting rid of the parts of the skill that are making it do that and seeing what happens.
+
+3. **Explain the why.** Try hard to explain the **why** behind everything you're asking the model to do. Today's LLMs are *smart*. They have good theory of mind and when given a good harness can go beyond rote instructions and really make things happen. Even if the feedback from the user is terse or frustrated, try to actually understand the task and why the user is writing what they wrote, and what they actually wrote, and then transmit this understanding into the instructions. If you find yourself writing ALWAYS or NEVER in all caps, or using super rigid structures, that's a yellow flag — if possible, reframe and explain the reasoning so that the model understands why the thing you're asking for is important. That's a more humane, powerful, and effective approach.
+
+4. **Look for repeated work across test cases.** Read the transcripts from the test runs and notice if the subagents all independently wrote similar helper scripts or took the same multi-step approach to something. If all 3 test cases resulted in the subagent writing a `create_docx.py` or a `build_chart.py`, that's a strong signal the skill should bundle that script. Write it once, put it in `scripts/`, and tell the skill to use it. This saves every future invocation from reinventing the wheel.
+
+This task is pretty important (we are trying to create billions a year in economic value here!) and your thinking time is not the blocker; take your time and really mull things over. I'd suggest writing a draft revision and then looking at it anew and making improvements. Really do your best to get into the head of the user and understand what they want and need.
+
+### The iteration loop
+
+After improving the skill:
+
+1. Apply your improvements to the skill
+2. Rerun all test cases into a new `iteration-/` directory, including baseline runs. If you're creating a new skill, the baseline is always `without_skill` (no skill) — that stays the same across iterations. If you're improving an existing skill, use your judgment on what makes sense as the baseline: the original version the user came in with, or the previous iteration.
+3. Launch the reviewer with `--previous-workspace` pointing at the previous iteration
+4. Wait for the user to review and tell you they're done
+5. Read the new feedback, improve again, repeat
+
+Keep going until:
+- The user says they're happy
+- The feedback is all empty (everything looks good)
+- You're not making meaningful progress
+
+---
+
The description field in SKILL.md frontmatter is the primary mechanism that determines whether Claude invokes a skill. After creating or improving a skill, offe…
Technischen Diff anzeigen
--- a/skills/skill-creator/SKILL.md
+++ b/skills/skill-creator/SKILL.md
@@ -0,0 +1,87 @@
+## Description Optimization
+
+The description field in SKILL.md frontmatter is the primary mechanism that determines whether Claude invokes a skill. After creating or improving a skill, offer to optimize the description for better triggering accuracy.
+
+### Step 1: Generate trigger eval queries
+
+Create 20 eval queries — a mix of should-trigger and should-not-trigger. Save as JSON:
+
+```json
+[
+ {"query": "the user prompt", "should_trigger": true},
+ {"query": "another prompt", "should_trigger": false}
+]
+```
+
+The queries must be realistic and something a Claude Code or Claude.ai user would actually type. Not abstract requests, but requests that are concrete and specific and have a good amount of detail. For instance, file paths, personal context about the user's job or situation, column names and values, company names, URLs. A little bit of backstory. Some might be in lowercase or contain abbreviations or typos or casual speech. Use a mix of different lengths, and focus on edge cases rather than making them clear-cut (the user will get a chance to sign off on them).
+
+Bad: `"Format this data"`, `"Extract text from PDF"`, `"Create a chart"`
+
+Good: `"ok so my boss just sent me this xlsx file (its in my downloads, called something like 'Q4 sales final FINAL v2.xlsx') and she wants me to add a column that shows the profit margin as a percentage. The revenue is in column C and costs are in column D i think"`
+
+For the **should-trigger** queries (8-10), think about coverage. You want different phrasings of the same intent — some formal, some casual. Include cases where the user doesn't explicitly name the skill or file type but clearly needs it. Throw in some uncommon use cases and cases where this skill competes with another but should win.
+
+For the **should-not-trigger** queries (8-10), the most valuable ones are the near-misses — queries that share keywords or concepts with the skill but actually need something different. Think adjacent domains, ambiguous phrasing where a naive keyword match would trigger but shouldn't, and cases where the query touches on something the skill does but in a context where another tool is more appropriate.
+
+The key thing to avoid: don't make should-not-trigger queries obviously irrelevant. "Write a fibonacci function" as a negative test for a PDF skill is too easy — it doesn't test anything. The negative cases should be genuinely tricky.
+
+### Step 2: Review with user
+
+Present the eval set to the user for review using the HTML template:
+
+1. Read the template from `assets/eval_review.html`
+2. Replace the placeholders:
+ - `__EVAL_DATA_PLACEHOLDER__` → the JSON array of eval items (no quotes around it — it's a JS variable assignment)
+ - `__SKILL_NAME_PLACEHOLDER__` → the skill's name
+ - `__SKILL_DESCRIPTION_PLACEHOLDER__` → the skill's current description
+3. Write to a temp file (e.g., `/tmp/eval_review_.html`) and open it: `open /tmp/eval_review_.html`
+4. The user can edit queries, toggle should-trigger, add/remove entries, then click "Export Eval Set"
+5. The file downloads to `~/Downloads/eval_set.json` — check the Downloads folder for the most recent version in case there are multiple (e.g., `eval_set (1).json`)
+
+This step matters — bad eval queries lead to bad descriptions.
+
+### Step 3: Run the optimization loop
+
+Tell the user: "This will take some time — I'll run the optimization loop in the background and check on it periodically."
+
+Save the eval set to the workspace, then run in the background:
+
+```bash
+python -m scripts.run_loop \
+ --eval-set \
+ --skill-path \
+ --model \
+ --max-iterations 5 \
+ --verbose
+```
+
+Use the model ID from your system prompt (the one powering the current session) so the triggering test matches what the user actually experiences.
+
+While it runs, periodically tail the output to give the user updates on which iteration it's on and what the scores look like.
+
+This handles the full optimization loop automatically. It splits the eval set into 60% train and 40% held-out test, evaluates the current description (running each query 3 times to get a reliable trigger rate), then calls Claude to propose improvements based on what failed. It re-evaluates each new description on both train and test, iterating up to 5 times. When it's done, it opens an HTML report in the browser showing the results per iteration and returns JSON with `best_description` — selected by test score rather than train score to avoid overfitting.
+
+### How skill triggering works
+
+Understanding the triggering mechanism helps design better eval queries. Skills appear in Claude's `available_skills` list with their name + description, and Claude decides whether to consult a skill based on that description. The important thing to know is that Claude only consults skills for tasks it can't easily handle on its own — simple, one-step queries like "read this PDF" may not trigger a skill even if the description matches perfectly, because Claude can handle them directly with basic tools. Complex, multi-step, or specialized queries reliably trigger skills when the description matches.
+
+This means your eval queries should be substantive enough that Claude would actually benefit from consulting a skill. Simple queries like "read file X" are poor test cases — they won't trigger skills regardless of description quality.
+
+### Step 4: Apply the result
+
+Take `best_description` from the JSON output and update the skill's SKILL.md frontmatter. Show the user before/after and report the scores.
+
+---
+
+### Package and Present (only if `present_files` tool is available)
+
+Check whether you have access to the `present_files` tool. If you don't, skip this step. If you do, package the skill and present the .skill file to the user:
+
+```bash
+python -m scripts.package_skill
+```
+
+After packaging, direct the user to the resulting `.skill` file path so they can install it.
+
+---
+
🧩
Skill-Anpassung
Neu
skills/skill-creator/SKILL.md
## Creating a skill
Von Daniel • 2026-04-24 09:26:29.774192
Worum geht es?
Neuer Skill „skill-creator" wird angelegt
Start by understanding the user's intent. The current conversation might already contain a workflow the user wants to capture (e.g., they say "turn this into a …
Technischen Diff anzeigen
--- a/skills/skill-creator/SKILL.md
+++ b/skills/skill-creator/SKILL.md
@@ -0,0 +1,76 @@
+## Creating a skill
+
+### Capture Intent
+
+Start by understanding the user's intent. The current conversation might already contain a workflow the user wants to capture (e.g., they say "turn this into a skill"). If so, extract answers from the conversation history first — the tools used, the sequence of steps, corrections the user made, input/output formats observed. The user may need to fill the gaps, and should confirm before proceeding to the next step.
+
+1. What should this skill enable Claude to do?
+2. When should this skill trigger? (what user phrases/contexts)
+3. What's the expected output format?
+4. Should we set up test cases to verify the skill works? Skills with objectively verifiable outputs (file transforms, data extraction, code generation, fixed workflow steps) benefit from test cases. Skills with subjective outputs (writing style, art) often don't need them. Suggest the appropriate default based on the skill type, but let the user decide.
+
+### Interview and Research
+
+Proactively ask questions about edge cases, input/output formats, example files, success criteria, and dependencies. Wait to write test prompts until you've got this part ironed out.
+
+Check available MCPs - if useful for research (searching docs, finding similar skills, looking up best practices), research in parallel via subagents if available, otherwise inline. Come prepared with context to reduce burden on the user.
+
+### Write the SKILL.md
+
+Based on the user interview, fill in these components:
+
+- **name**: Skill identifier
+- **description**: When to trigger, what it does. This is the primary triggering mechanism - include both what the skill does AND specific contexts for when to use it. All "when to use" info goes here, not in the body. Note: currently Claude has a tendency to "undertrigger" skills -- to not use them when they'd be useful. To combat this, please make the skill descriptions a little bit "pushy". So for instance, instead of "How to build a simple fast dashboard to display internal Anthropic data.", you might write "How to build a simple fast dashboard to display internal Anthropic data. Make sure to use this skill whenever the user mentions dashboards, data visualization, internal metrics, or wants to display any kind of company data, even if they don't explicitly ask for a 'dashboard.'"
+- **compatibility**: Required tools, dependencies (optional, rarely needed)
+- **the rest of the skill :)**
+
+### Skill Writing Guide
+
+#### Anatomy of a Skill
+
+```
+skill-name/
+├── SKILL.md (required)
+│ ├── YAML frontmatter (name, description required)
+│ └── Markdown instructions
+└── Bundled Resources (optional)
+ ├── scripts/ - Executable code for deterministic/repetitive tasks
+ ├── references/ - Docs loaded into context as needed
+ └── assets/ - Files used in output (templates, icons, fonts)
+```
+
+#### Progressive Disclosure
+
+Skills use a three-level loading system:
+1. **Metadata** (name + description) - Always in context (~100 words)
+2. **SKILL.md body** - In context whenever skill triggers (<500 lines ideal)
+3. **Bundled resources** - As needed (unlimited, scripts can execute without loading)
+
+These word counts are approximate and you can feel free to go longer if needed.
+
+**Key patterns:**
+- Keep SKILL.md under 500 lines; if you're approaching this limit, add an additional layer of hierarchy along with clear pointers about where the model using the skill should go next to follow up.
+- Reference files clearly from SKILL.md with guidance on when to read them
+- For large reference files (>300 lines), include a table of contents
+
+**Domain organization**: When a skill supports multiple domains/frameworks, organize by variant:
+```
+cloud-deploy/
+├── SKILL.md (workflow + selection)
+└── references/
+ ├── aws.md
+ ├── gcp.md
+ └── azure.md
+```
+Claude reads only the relevant reference file.
+
+#### Principle of Lack of Surprise
+
+This goes without saying, but skills must not contain malware, exploit code, or any content that could compromise system security. A skill's contents should not surprise the user in their intent if described. Don't go along with requests to create misleading skills or skills designed to facilitate unauthorized access, data exfiltration, or other malicious activities. Things like a "roleplay as an XYZ" are OK though.
+
+#### Writing Patterns
+
+Prefer using the imperative form in instructions.
+
+**Defining output formats** - You can do it like this:
+```markdown
🧩
Skill-Anpassung
Neu
skills/skill-creator/SKILL.md
## Cowork-Specific Instructions
Von Daniel • 2026-04-24 09:26:29.773403
Worum geht es?
Neuer Skill „skill-creator" wird angelegt
If you're in Cowork, the main things to know are:
Technischen Diff anzeigen
--- a/skills/skill-creator/SKILL.md
+++ b/skills/skill-creator/SKILL.md
@@ -0,0 +1,14 @@
+## Cowork-Specific Instructions
+
+If you're in Cowork, the main things to know are:
+
+- You have subagents, so the main workflow (spawn test cases in parallel, run baselines, grade, etc.) all works. (However, if you run into severe problems with timeouts, it's OK to run the test prompts in series rather than parallel.)
+- You don't have a browser or display, so when generating the eval viewer, use `--static ` to write a standalone HTML file instead of starting a server. Then proffer a link that the user can click to open the HTML in their browser.
+- For whatever reason, the Cowork setup seems to disincline Claude from generating the eval viewer after running the tests, so just to reiterate: whether you're in Cowork or in Claude Code, after running tests, you should always generate the eval viewer for the human to look at examples before revising the skill yourself and trying to make corrections, using `generate_review.py` (not writing your own boutique html code). Sorry in advance but I'm gonna go all caps here: GENERATE THE EVAL VIEWER *BEFORE* evaluating inputs yourself. You want to get them in front of the human ASAP!
+- Feedback works differently: since there's no running server, the viewer's "Submit All Reviews" button will download `feedback.json` as a file. You can then read it from there (you may have to request access first).
+- Packaging works — `package_skill.py` just needs Python and a filesystem.
+- Description optimization (`run_loop.py` / `run_eval.py`) should work in Cowork just fine since it uses `claude -p` via subprocess, not a browser, but please save it until you've fully finished making the skill and the user agrees it's in good shape.
+- **Updating an existing skill**: The user might be asking you to update an existing skill, not create a new one. Follow the update guidance in the claude.ai section above.
+
+---
+
🧩
Skill-Anpassung
Neu
skills/skill-creator/SKILL.md
## Communicating with the user
Von Daniel • 2026-04-24 09:26:29.772617
Worum geht es?
Neuer Skill „skill-creator" wird angelegt
The skill creator is liable to be used by people across a wide range of familiarity with coding jargon. If you haven't heard (and how could you, it's only very …
Technischen Diff anzeigen
--- a/skills/skill-creator/SKILL.md
+++ b/skills/skill-creator/SKILL.md
@@ -0,0 +1,13 @@
+## Communicating with the user
+
+The skill creator is liable to be used by people across a wide range of familiarity with coding jargon. If you haven't heard (and how could you, it's only very recently that it started), there's a trend now where the power of Claude is inspiring plumbers to open up their terminals, parents and grandparents to google "how to install npm". On the other hand, the bulk of users are probably fairly computer-literate.
+
+So please pay attention to context cues to understand how to phrase your communication! In the default case, just to give you some idea:
+
+- "evaluation" and "benchmark" are borderline, but OK
+- for "JSON" and "assertion" you want to see serious cues from the user that they know what those things are before using them without explaining them
+
+It's OK to briefly explain terms if you're in doubt, and feel free to clarify terms with a short definition if you're unsure if the user will get it.
+
+---
+
🧩
Skill-Anpassung
Neu
skills/skill-creator/SKILL.md
## Commit message format
Von Daniel • 2026-04-24 09:26:29.771811
Worum geht es?
Neuer Skill „skill-creator" wird angelegt
Input: Added user authentication with JWT tokens
Technischen Diff anzeigen
--- a/skills/skill-creator/SKILL.md
+++ b/skills/skill-creator/SKILL.md
@@ -0,0 +1,32 @@
+## Commit message format
+**Example 1:**
+Input: Added user authentication with JWT tokens
+Output: feat(auth): implement JWT-based authentication
+```
+
+### Writing Style
+
+Try to explain to the model why things are important in lieu of heavy-handed musty MUSTs. Use theory of mind and try to make the skill general and not super-narrow to specific examples. Start by writing a draft and then look at it with fresh eyes and improve it.
+
+### Test Cases
+
+After writing the skill draft, come up with 2-3 realistic test prompts — the kind of thing a real user would actually say. Share them with the user: [you don't have to use this exact language] "Here are a few test cases I'd like to try. Do these look right, or do you want to add more?" Then run them.
+
+Save test cases to `evals/evals.json`. Don't write assertions yet — just the prompts. You'll draft assertions in the next step while the runs are in progress.
+
+```json
+{
+ "skill_name": "example-skill",
+ "evals": [
+ {
+ "id": 1,
+ "prompt": "User's task prompt",
+ "expected_output": "Description of expected result",
+ "files": []
+ }
+ ]
+}
+```
+
+See `references/schemas.md` for the full schema (including the `assertions` field, which you'll add later).
+
🧩
Skill-Anpassung
Neu
skills/skill-creator/SKILL.md
## Claude.ai-specific instructions
Von Daniel • 2026-04-24 09:26:29.770993
Worum geht es?
Neuer Skill „skill-creator" wird angelegt
In Claude.ai, the core workflow is the same (draft → test → review → improve → repeat), but because Claude.ai doesn't have subagents, some mechanics change. Her…
Technischen Diff anzeigen
--- a/skills/skill-creator/SKILL.md
+++ b/skills/skill-creator/SKILL.md
@@ -0,0 +1,25 @@
+## Claude.ai-specific instructions
+
+In Claude.ai, the core workflow is the same (draft → test → review → improve → repeat), but because Claude.ai doesn't have subagents, some mechanics change. Here's what to adapt:
+
+**Running test cases**: No subagents means no parallel execution. For each test case, read the skill's SKILL.md, then follow its instructions to accomplish the test prompt yourself. Do them one at a time. This is less rigorous than independent subagents (you wrote the skill and you're also running it, so you have full context), but it's a useful sanity check — and the human review step compensates. Skip the baseline runs — just use the skill to complete the task as requested.
+
+**Reviewing results**: If you can't open a browser (e.g., Claude.ai's VM has no display, or you're on a remote server), skip the browser reviewer entirely. Instead, present results directly in the conversation. For each test case, show the prompt and the output. If the output is a file the user needs to see (like a .docx or .xlsx), save it to the filesystem and tell them where it is so they can download and inspect it. Ask for feedback inline: "How does this look? Anything you'd change?"
+
+**Benchmarking**: Skip the quantitative benchmarking — it relies on baseline comparisons which aren't meaningful without subagents. Focus on qualitative feedback from the user.
+
+**The iteration loop**: Same as before — improve the skill, rerun the test cases, ask for feedback — just without the browser reviewer in the middle. You can still organize results into iteration directories on the filesystem if you have one.
+
+**Description optimization**: This section requires the `claude` CLI tool (specifically `claude -p`) which is only available in Claude Code. Skip it if you're on Claude.ai.
+
+**Blind comparison**: Requires subagents. Skip it.
+
+**Packaging**: The `package_skill.py` script works anywhere with Python and a filesystem. On Claude.ai, you can run it and the user can download the resulting `.skill` file.
+
+**Updating an existing skill**: The user might be asking you to update an existing skill, not create a new one. In this case:
+- **Preserve the original name.** Note the skill's directory name and `name` frontmatter field -- use them unchanged. E.g., if the installed skill is `research-helper`, output `research-helper.skill` (not `research-helper-v2`).
+- **Copy to a writeable location before editing.** The installed skill path may be read-only. Copy to `/tmp/skill-name/`, edit there, and package from the copy.
+- **If packaging manually, stage in `/tmp/` first**, then copy to the output directory -- direct writes may fail due to permissions.
+
+---
+
🧩
Skill-Anpassung
Neu
skills/skill-creator/SKILL.md
## Advanced: Blind comparison
Von Daniel • 2026-04-24 09:26:29.770174
Worum geht es?
Neuer Skill „skill-creator" wird angelegt
For situations where you want a more rigorous comparison between two versions of a skill (e.g., the user asks "is the new version actually better?"), there's a …
Technischen Diff anzeigen
--- a/skills/skill-creator/SKILL.md
+++ b/skills/skill-creator/SKILL.md
@@ -0,0 +1,8 @@
+## Advanced: Blind comparison
+
+For situations where you want a more rigorous comparison between two versions of a skill (e.g., the user asks "is the new version actually better?"), there's a blind comparison system. Read `agents/comparator.md` and `agents/analyzer.md` for the details. The basic idea is: give two outputs to an independent agent without telling it which is which, and let it judge quality. Then analyze why the winner won.
+
+This is optional, requires subagents, and most users won't need it. The human review loop is usually sufficient.
+
+---
+
🧩
Skill-Anpassung
Neu
skills/skill-creator/LICENSE.txt
Von Daniel • 2026-04-24 09:26:29.769379
Worum geht es?
Neuer Skill „skill-creator" wird angelegt
Version 2.0, January 2004
Technischen Diff anzeigen
--- a/skills/skill-creator/LICENSE.txt
+++ b/skills/skill-creator/LICENSE.txt
@@ -0,0 +1,202 @@
+
+ Apache License
+ Version 2.0, January 2004
+ http://www.apache.org/licenses/
+
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+ 1. Definitions.
+
+ "License" shall mean the terms and conditions for use, reproduction,
+ and distribution as defined by Sections 1 through 9 of this document.
+
+ "Licensor" shall mean the copyright owner or entity authorized by
+ the copyright owner that is granting the License.
+
+ "Legal Entity" shall mean the union of the acting entity and all
+ other entities that control, are controlled by, or are under common
+ control with that entity. For the purposes of this definition,
+ "control" means (i) the power, direct or indirect, to cause the
+ direction or management of such entity, whether by contract or
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
+ outstanding shares, or (iii) beneficial ownership of such entity.
+
+ "You" (or "Your") shall mean an individual or Legal Entity
+ exercising permissions granted by this License.
+
+ "Source" form shall mean the preferred form for making modifications,
+ including but not limited to software source code, documentation
+ source, and configuration files.
+
+ "Object" form shall mean any form resulting from mechanical
+ transformation or translation of a Source form, including but
+ not limited to compiled object code, generated documentation,
+ and conversions to other media types.
+
+ "Work" shall mean the work of authorship, whether in Source or
+ Object form, made available under the License, as indicated by a
+ copyright notice that is included in or attached to the work
+ (an example is provided in the Appendix below).
+
+ "Derivative Works" shall mean any work, whether in Source or Object
+ form, that is based on (or derived from) the Work and for which the
+ editorial revisions, annotations, elaborations, or other modifications
+ represent, as a whole, an original work of authorship. For the purposes
+ of this License, Derivative Works shall not include works that remain
+ separable from, or merely link (or bind by name) to the interfaces of,
+ the Work and Derivative Works thereof.
+
+ "Contribution" shall mean any work of authorship, including
+ the original version of the Work and any modifications or additions
+ to that Work or Derivative Works thereof, that is intentionally
+ submitted to Licensor for inclusion in the Work by the copyright owner
+ or by an individual or Legal Entity authorized to submit on behalf of
+ the copyright owner. For the purposes of this definition, "submitted"
+ means any form of electronic, verbal, or written communication sent
+ to the Licensor or its representatives, including but not limited to
+ communication on electronic mailing lists, source code control systems,
+ and issue tracking systems that are managed by, or on behalf of, the
+ Licensor for the purpose of discussing and improving the Work, but
+ excluding communication that is conspicuously marked or otherwise
+ designated in writing by the copyright owner as "Not a Contribution."
+
+ "Contributor" shall mean Licensor and any individual or Legal Entity
+ on behalf of whom a Contribution has been received by Licensor and
+ subsequently incorporated within the Work.
+
+ 2. Grant of Copyright License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ copyright license to reproduce, prepare Derivative Works of,
+ publicly display, publicly perform, sublicense, and distribute the
+ Work and such Derivative Works in Source or Object form.
+
+ 3. Grant of Patent License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ (except as stated in this section) patent license to make, have made,
+ use, offer to sell, sell, import, and otherwise transfer the Work,
+ where such license applies only to those patent claims licensable
+ by such Contributor that are necessarily infringed by their
+ Contribution(s) alone or by combination of their Contribution(s)
+ with the Work to which such Contribution(s) was submitted. If You
+ institute patent litigation against any entity (including a
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
+ or a Contribution incorporated within the Work constitutes direct
+ or contributory patent infringement, then any patent licenses
+ granted to You under this License for that Work shall terminate
+ as of the date such litigation is filed.
+
+ 4. Redistribution. You may reproduce and distribute copies of the
+ Work or Derivative Works thereof in any medium, with or without
+ modifications, and in Source or Object form, provided that You
+ meet the following conditions:
+
+ (a) You must give any other recipients of the Work or
+ Derivative Works a copy of this License; and
+
+ (b) You must cause any modified files to carry prominent notices
+ stating that You changed the files; and
+
+ (c) You must retain, in the Source form of any Derivative Works
+ that You distribute, all copyright, patent, trademark, and
+ attribution notices from the Source form of the Work,
+ excluding those notices that do not pertain to any part of
+ the Derivative Works; and
+
+ (d) If the Work includes a "NOTICE" text file as part of its
+ distribution, then any Derivative Works that You distribute must
+ include a readable copy of the attribution notices contained
+ within such NOTICE file, excluding those notices that do not
+ pertain to any part of the Derivative Works, in at least one
+ of the following places: within a NOTICE text file distributed
+ as part of the Derivative Works; within the Source form or
+ documentation, if provided along with the Derivative Works; or,
+ within a display generated by the Derivative Works, if and
+ wherever such third-party notices normally appear. The contents
+ of the NOTICE file are for informational purposes only and
+ do not modify the License. You may add Your own attribution
+ notices within Derivative Works that You distribute, alongside
+ or as an addendum to the NOTICE text from the Work, provided
+ that such additional attribution notices cannot be construed
+ as modifying the License.
+
+ You may add Your own copyright statement to Your modifications and
+ may provide additional or different license terms and conditions
+ for use, reproduction, or distribution of Your modifications, or
+ for any such Derivative Works as a whole, provided Your use,
+ reproduction, and distribution of the Work otherwise complies with
+ the conditions stated in this License.
+
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
+ any Contribution intentionally submitted for inclusion in the Work
+ by You to the Licensor shall be under the terms and conditions of
+ this License, without any additional terms or conditions.
+ Notwithstanding the above, nothing herein shall supersede or modify
+ the terms of any separate license agreement you may have executed
+ with Licensor regarding such Contributions.
+
+ 6. Trademarks. This License does not grant permission to use the trade
+ names, trademarks, service marks, or product names of the Licensor,
+ except as required for reasonable and customary use in describing the
+ origin of the Work and reproducing the content of the NOTICE file.
+
+ 7. Disclaimer of Warranty. Unless required by applicable law or
+ agreed to in writing, Licensor provides the Work (and each
+ Contributor provides its Contributions) on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ implied, including, without limitation, any warranties or conditions
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+ PARTICULAR PURPOSE. You are solely responsible for determining the
+ appropriateness of using or redistributing the Work and assume any
+ risks associated with Your exercise of permissions under this License.
+
+ 8. Limitation of Liability. In no event and under no legal theory,
+ whether in tort (including negligence), contract, or otherwise,
+ unless required by applicable law (such as deliberate and grossly
+ negligent acts) or agreed to in writing, shall any Contributor be
+ liable to You for damages, including any direct, indirect, special,
+ incidental, or consequential damages of any character arising as a
+ result of this License or out of the use or inability to use the
+ Work (including but not limited to damages for loss of goodwill,
+ work stoppage, computer failure or malfunction, or any and all
+ other commercial damages or losses), even if such Contributor
+ has been advised of the possibility of such damages.
+
+ 9. Accepting Warranty or Additional Liability. While redistributing
+ the Work or Derivative Works thereof, You may choose to offer,
+ and charge a fee for, acceptance of support, warranty, indemnity,
+ or other liability obligations and/or rights consistent with this
+ License. However, in accepting such obligations, You may act only
+ on Your own behalf and on Your sole responsibility, not on behalf
+ of any other Contributor, and only if You agree to indemnify,
+ defend, and hold each Contributor harmless for any liability
+ incurred by, or claims asserted against, such Contributor by reason
+ of your accepting any such warranty or additional liability.
+
+ END OF TERMS AND CONDITIONS
+
+ APPENDIX: How to apply the Apache License to your work.
+
+ To apply the Apache License to your work, attach the following
+ boilerplate notice, with the fields enclosed by brackets "[]"
+ replaced with your own identifying information. (Don't include
+ the brackets!) The text should be enclosed in the appropriate
+ comment syntax for the file format. We also recommend that a
+ file or class name and description of purpose be included on the
+ same "printed page" as the copyright notice for easier
+ identification within third-party archives.
+
+ Copyright [yyyy] [name of copyright owner]
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
🧩
Skill-Anpassung
Neu
skills/setup-cowork/SKILL.md
__preamble__
Von Daniel • 2026-04-24 09:26:29.768599
Worum geht es?
Neuer Skill „setup-cowork" wird angelegt
Help the user get Cowork configured for their work. A few steps — role, plugin, try a skill, connectors.
Technischen Diff anzeigen
--- a/skills/setup-cowork/SKILL.md
+++ b/skills/setup-cowork/SKILL.md
@@ -0,0 +1,5 @@
+
+# Setup Cowork
+
+Help the user get Cowork configured for their work. A few steps — role, plugin, try a skill, connectors.
+
🧩
Skill-Anpassung
Neu
skills/setup-cowork/SKILL.md
__frontmatter__
Von Daniel • 2026-04-24 09:26:29.767799
Worum geht es?
Neuer Skill „setup-cowork" — Guided Cowork setup — install a matching plugin, try a skill, connect tools.
Once they've connected something, or waved it off: close short — "You're set. Start a new task from the sidebar anytime, or type `/` to see your skills."
Technischen Diff anzeigen
--- a/skills/setup-cowork/SKILL.md
+++ b/skills/setup-cowork/SKILL.md
@@ -0,0 +1,4 @@
+## Step 5 — Wrap
+
+Once they've connected something, or waved it off: close short — "You're set. Start a new task from the sidebar anytime, or type `/` to see your skills."
+
🧩
Skill-Anpassung
Neu
skills/setup-cowork/SKILL.md
## Step 4 — Connectors
Von Daniel • 2026-04-24 09:26:29.766121
Worum geht es?
Neuer Skill „setup-cowork" wird angelegt
Once they've tried a skill (or typed something to move on): explain connectors briefly — "Connectors plug in your actual tools so skills have real context — you…
Technischen Diff anzeigen
--- a/skills/setup-cowork/SKILL.md
+++ b/skills/setup-cowork/SKILL.md
@@ -0,0 +1,6 @@
+## Step 4 — Connectors
+
+Once they've tried a skill (or typed something to move on): explain connectors briefly — "Connectors plug in your actual tools so skills have real context — your email, calendar, docs."
+
+First, search the connector registry using their role as the keyword. Then render some connector suggestions with the top 2-3 UUIDs from the search results — pass the role as the keyword so the card header says "For your [role]".
+
🧩
Skill-Anpassung
Neu
skills/setup-cowork/SKILL.md
## Step 3 — Try a skill
Von Daniel • 2026-04-24 09:26:29.765291
Worum geht es?
Neuer Skill „setup-cowork" wird angelegt
After the plugin is suggested: explain what just happened. Something like: "That plugin bundles skills for [their role] work — reusable workflows you trigger wi…
Technischen Diff anzeigen
--- a/skills/setup-cowork/SKILL.md
+++ b/skills/setup-cowork/SKILL.md
@@ -0,0 +1,8 @@
+## Step 3 — Try a skill
+
+After the plugin is suggested: explain what just happened. Something like: "That plugin bundles skills for [their role] work — reusable workflows you trigger with `/name`."
+
+Wait for them to try one or type something.
+
+If they invoke a skill (you'll see a /name message), help them with it briefly — but remember you're still running setup-cowork. Once that's done or they pause, bring it back to setup: "Nice — that's how skills work. One more thing to set up: connectors.", and immediately start suggesting connectors, i.e. step 4.
+
🧩
Skill-Anpassung
Neu
skills/setup-cowork/SKILL.md
## Step 2 — Install a plugin
Von Daniel • 2026-04-24 09:26:29.764512
Worum geht es?
Neuer Skill „setup-cowork" wird angelegt
The role picker tool result will contain their selection. If it was dismissed, it means they didn't select a role: just suggest the productivity plugin and move…
Technischen Diff anzeigen
--- a/skills/setup-cowork/SKILL.md
+++ b/skills/setup-cowork/SKILL.md
@@ -0,0 +1,8 @@
+## Step 2 — Install a plugin
+
+The role picker tool result will contain their selection. If it was dismissed, it means they didn't select a role: just suggest the productivity plugin and move on.
+
+Search the plugin marketplace for their role — include already-installed plugins in the search so if they already have the right one, you showcase it rather than suggesting something worse. Pick the best match, then suggest that plugin to the user. End your turn here — they'll click Add and see its skills.
+
+If the search comes up empty, fall back to the productivity plugin.
+
🧩
Skill-Anpassung
Neu
skills/setup-cowork/SKILL.md
## Step 1 — Role
Von Daniel • 2026-04-24 09:26:29.763699
Worum geht es?
Neuer Skill „setup-cowork" wird angelegt
Your initial message should frame what Cowork is: it autonomously handles tasks like reading your email, searching your docs, drafting reports, etc. Educate the…
Technischen Diff anzeigen
--- a/skills/setup-cowork/SKILL.md
+++ b/skills/setup-cowork/SKILL.md
@@ -0,0 +1,6 @@
+## Step 1 — Role
+
+Your initial message should frame what Cowork is: it autonomously handles tasks like reading your email, searching your docs, drafting reports, etc. Educate the user on *Skills*, reusable workflows you run with `/name`; *Plugins* bundle skills for a domain / use case; *Connectors* wire in your tools." Two or three sentences. Hit the beats: multi-step and autonomous, uses your real tools, skills/plugins/connectors defined.
+
+Next, ask the user for their role. Something like: "Let's get you set up — takes a few minutes. What kind of work do you do?" Then call the tool to show the onboarding role picker, which will display some roles to the user: do not list the roles yourself.
+
🧩
Skill-Anpassung
Neu
skills/setup-cowork/SKILL.md
## Ground rules
Von Daniel • 2026-04-24 09:26:29.762868
Worum geht es?
Neuer Skill „setup-cowork" wird angelegt
- One step at a time.
Technischen Diff anzeigen
--- a/skills/setup-cowork/SKILL.md
+++ b/skills/setup-cowork/SKILL.md
@@ -0,0 +1,6 @@
+## Ground rules
+
+- One step at a time.
+- Skips are fine. If they pass on a step, move on.
+- Keep each message short. Two or three sentences plus the widget, not a wall.
+- The user trying a skill mid-flow is expected. Help with it, then return to where you left off. Don't let a skill invocation end the setup.
🧩
Skill-Anpassung
Neu
skills/seo-audit/SKILL.md
__preamble__
Von Daniel • 2026-04-24 09:26:29.761975
Worum geht es?
Neuer Skill „seo-audit" wird angelegt
> If you see unfamiliar placeholders or need to check which tools are connected, see [CONNECTORS.md](../../CONNECTORS.md).
Technischen Diff anzeigen
--- a/skills/seo-audit/SKILL.md
+++ b/skills/seo-audit/SKILL.md
@@ -0,0 +1,7 @@
+
+# /seo-audit
+
+> If you see unfamiliar placeholders or need to check which tools are connected, see [CONNECTORS.md](../../CONNECTORS.md).
+
+Audit a website's SEO health, research keyword opportunities, identify content gaps, and benchmark against competitors. Produces a prioritized action plan a marketer can execute immediately.
+
🧩
Skill-Anpassung
Neu
skills/seo-audit/SKILL.md
__frontmatter__
Von Daniel • 2026-04-24 09:26:29.761136
Worum geht es?
Neuer Skill „seo-audit" — Run a comprehensive SEO audit — keyword research, on-page analysis, content gaps, technical checks, and competitor comparison.
Technischen Diff anzeigen
--- a/skills/seo-audit/SKILL.md
+++ b/skills/seo-audit/SKILL.md
@@ -0,0 +1,5 @@
+---
+name: seo-audit
+description: Run a comprehensive SEO audit — keyword research, on-page analysis, content gaps, technical checks, and competitor comparison. Use when assessing a site's SEO health, when finding keyword opportunities and content gaps competitors own, or when you need a prioritized action plan split into quick wins and strategic investments.
+argument-hint: " [audit type]"
+---
🧩
Skill-Anpassung
Neu
skills/seo-audit/SKILL.md
## Trigger
Von Daniel • 2026-04-24 09:26:29.760325
Worum geht es?
Neuer Skill „seo-audit" wird angelegt
User runs `/seo-audit` or asks for an SEO audit, keyword research, content gap analysis, technical SEO check, or competitor SEO comparison.
Technischen Diff anzeigen
--- a/skills/seo-audit/SKILL.md
+++ b/skills/seo-audit/SKILL.md
@@ -0,0 +1,4 @@
+## Trigger
+
+User runs `/seo-audit` or asks for an SEO audit, keyword research, content gap analysis, technical SEO check, or competitor SEO comparison.
+
🧩
Skill-Anpassung
Neu
skills/seo-audit/SKILL.md
## Process
Von Daniel • 2026-04-24 09:26:29.759547
Worum geht es?
Neuer Skill „seo-audit" wird angelegt
Research keywords related to the user's domain, topic, or target keywords.
Technischen Diff anzeigen
--- a/skills/seo-audit/SKILL.md
+++ b/skills/seo-audit/SKILL.md
@@ -0,0 +1,75 @@
+## Process
+
+### 1. Keyword Research
+
+Research keywords related to the user's domain, topic, or target keywords.
+
+**If ~~SEO tools are connected:**
+- Pull keyword data, search volume, keyword difficulty scores, and ranking positions automatically
+- Identify keywords the site currently ranks for and where it's gaining or losing ground
+
+**If ~~product analytics are connected:**
+- Cross-reference keyword targets with actual organic traffic data to validate which keywords are driving visits and conversions
+
+**If tools are not connected:**
+- Use web search to research the keyword landscape
+- Note: "For more precise volume and difficulty data, connect an SEO tool like Ahrefs or Semrush via MCP. The audit will auto-populate with ranking data."
+
+For each keyword opportunity, assess:
+- **Primary keywords** — high-intent terms directly tied to the user's product or service
+- **Secondary keywords** — supporting terms and variations
+- **Search volume signals** — relative demand (high, medium, low) based on available data
+- **Keyword difficulty** — how competitive the term is (easy, moderate, hard)
+- **Long-tail opportunities** — specific, lower-competition phrases with clear intent
+- **Question-based keywords** — "how to", "what is", "why does" queries that mirror People Also Ask results
+- **Intent classification** — informational, navigational, commercial, or transactional
+
+### 2. On-Page SEO Audit
+
+For each key page (homepage, top landing pages, recent blog posts), evaluate:
+
+- **Title tags** — present, unique, within 50-60 characters, includes target keyword
+- **Meta descriptions** — present, compelling, within 150-160 characters, includes a call to action
+- **H1 tags** — exactly one per page, includes primary keyword
+- **H2/H3 structure** — logical hierarchy, uses secondary keywords where natural
+- **Keyword usage** — primary keyword appears in the first 100 words, used naturally throughout, not over-stuffed
+- **Internal linking** — pages link to related content, orphan pages identified, anchor text is descriptive
+- **Image alt text** — all images have descriptive alt attributes, keywords included where relevant
+- **URL structure** — clean, readable, includes keywords, no excessive parameters or depth
+
+### 3. Content Gap Analysis
+
+Identify what's missing from the user's content strategy:
+
+- **Competitor topic coverage** — topics and keywords competitors rank for that the user's site does not cover
+- **Content freshness** — pages that haven't been updated in 12+ months and may be losing rankings
+- **Thin content** — pages with insufficient depth to rank (under 300 words for informational queries, lacking substance)
+- **Missing content types** — formats competitors use that the user doesn't (guides, comparison pages, glossaries, tools, templates)
+- **Funnel gaps** — missing content at specific buyer journey stages (awareness, consideration, decision)
+- **Topic clusters** — opportunities to build pillar pages with supporting content
+
+### 4. Technical SEO Checklist
+
+Evaluate technical foundations that affect crawlability and rankings:
+
+- **Page speed** — identify slow-loading pages and likely causes (large images, render-blocking scripts, excessive redirects)
+- **Mobile-friendliness** — responsive design, tap targets, font sizes, viewport configuration
+- **Structured data** — opportunities for schema markup (FAQ, HowTo, Product, Article, Organization, Breadcrumb)
+- **Crawlability** — robots.txt configuration, XML sitemap presence and accuracy, canonical tags, noindex/nofollow usage
+- **Broken links** — internal and external 404s, redirect chains
+- **HTTPS** — secure connection, mixed content issues
+- **Core Web Vitals signals** — LCP, FID/INP, CLS indicators based on observable page behavior
+- **Indexation** — pages that should be indexed but may not be, duplicate content risks
+
+### 5. Competitor SEO Comparison
+
+For each competitor, compare:
+
+- **Keyword overlap** — keywords both sites rank for, and where each site ranks higher
+- **Keyword gaps** — terms the competitor ranks for that the user does not
+- **Domain authority signals** — relative site strength based on backlink profiles, referring domains, and content depth
+- **Content depth** — average content length, topic coverage breadth, publishing frequency
+- **Backlink profile observations** — types of sites linking to competitors, link-worthy content they've produced
+- **SERP feature ownership** — which competitor appears in featured snippets, People Also Ask, image packs, or knowledge panels
+- **Technical advantages** — site speed differences, mobile experience, structured data usage
+
🧩
Skill-Anpassung
Neu
skills/seo-audit/SKILL.md
## Output
Von Daniel • 2026-04-24 09:26:29.758738
Worum geht es?
Neuer Skill „seo-audit" wird angelegt
Open with a 3-5 sentence summary of overall SEO health. Highlight:
Technischen Diff anzeigen
--- a/skills/seo-audit/SKILL.md
+++ b/skills/seo-audit/SKILL.md
@@ -0,0 +1,70 @@
+## Output
+
+### Executive Summary
+
+Open with a 3-5 sentence summary of overall SEO health. Highlight:
+- The site's biggest strength
+- The top 3 priorities that will have the most impact
+- An overall assessment: strong foundation, needs work, or critical issues
+
+### Keyword Opportunity Table
+
+| Keyword | Est. Difficulty | Opportunity Score | Current Ranking | Intent | Recommended Content Type |
+|---------|----------------|-------------------|-----------------|--------|--------------------------|
+
+Opportunity score: high, medium, or low — based on the combination of search demand, difficulty, and relevance to the user's business.
+
+Include 15-25 keyword opportunities, sorted by opportunity score.
+
+### On-Page Issues Table
+
+| Page | Issue | Severity | Recommended Fix |
+|------|-------|----------|-----------------|
+
+Severity levels:
+- **Critical** — directly hurting rankings or preventing indexation
+- **High** — significant impact on SEO performance
+- **Medium** — best practice violation, moderate impact
+- **Low** — minor optimization opportunity
+
+### Content Gap Recommendations
+
+For each content gap identified, provide:
+- **Topic or keyword** to target
+- **Why it matters** — search demand, competitor coverage, funnel stage
+- **Recommended format** — blog post, landing page, guide, comparison page, etc.
+- **Priority** — high, medium, or low
+- **Estimated effort** — quick win (1-2 hours), moderate (half day), substantial (multi-day)
+
+### Technical SEO Checklist
+
+| Check | Status | Details |
+|-------|--------|---------|
+
+Status: Pass, Fail, or Warning.
+
+### Competitor Comparison Summary
+
+| Dimension | Your Site | Competitor A | Competitor B | Winner |
+|-----------|-----------|--------------|--------------|--------|
+
+Include rows for: keyword count, content depth, publishing frequency, backlink signals, technical score, SERP feature presence.
+
+### Prioritized Action Plan
+
+Split recommendations into two categories:
+
+**Quick Wins (do this week):**
+- Actions that take under 2 hours and have immediate impact
+- Examples: fix title tags, add meta descriptions, fix broken links, add alt text
+
+**Strategic Investments (plan for this quarter):**
+- Actions that require more effort but drive long-term growth
+- Examples: build a topic cluster, create a pillar page, launch a link-building campaign, overhaul site structure
+
+For each action item, include:
+- What to do (specific and concrete)
+- Expected impact (high, medium, low)
+- Effort estimate
+- Dependencies (if any)
+
🧩
Skill-Anpassung
Neu
skills/seo-audit/SKILL.md
## Inputs
Von Daniel • 2026-04-24 09:26:29.757883
Worum geht es?
Neuer Skill „seo-audit" wird angelegt
Gather the following from the user. If not provided, ask before proceeding:
Technischen Diff anzeigen
--- a/skills/seo-audit/SKILL.md
+++ b/skills/seo-audit/SKILL.md
@@ -0,0 +1,19 @@
+## Inputs
+
+Gather the following from the user. If not provided, ask before proceeding:
+
+1. **URL or domain** — the site to audit, or a topic/keyword if running in keyword research mode
+
+2. **Audit type** — one of:
+ - **Full site audit** — end-to-end SEO review covering all sections below
+ - **Keyword research** — identify keyword opportunities for a topic or domain
+ - **Content gap analysis** — find topics competitors rank for that you don't
+ - **Technical SEO check** — crawlability, speed, structured data, and infrastructure issues
+ - **Competitor SEO comparison** — head-to-head SEO benchmarking against specific competitors
+
+ If not specified, default to **full site audit**.
+
+3. **Target keywords or topics** (optional) — specific keywords the user is already targeting or wants to rank for
+
+4. **Competitors** (optional) — domains or companies to compare against. If not provided and the audit type requires competitor data, use web search to identify 2-3 likely competitors based on the user's domain and keyword space.
+
🧩
Skill-Anpassung
Neu
skills/seo-audit/SKILL.md
## Follow-Up
Von Daniel • 2026-04-24 09:26:29.757059
Worum geht es?
Neuer Skill „seo-audit" wird angelegt
After presenting the audit, ask:
Technischen Diff anzeigen
--- a/skills/seo-audit/SKILL.md
+++ b/skills/seo-audit/SKILL.md
@@ -0,0 +1,10 @@
+## Follow-Up
+
+After presenting the audit, ask:
+
+"Would you like me to:
+- Draft content briefs for the top keyword opportunities?
+- Create optimized title tags and meta descriptions for your key pages?
+- Build a content calendar based on the gap analysis?
+- Dive deeper into any specific section of the audit?
+- Run this same analysis for a different competitor or domain?"
🧩
Skill-Anpassung
Neu
skills/schedule/SKILL.md
__preamble__
Von Daniel • 2026-04-24 09:26:29.756239
Worum geht es?
Neuer Skill „schedule" wird angelegt
You are creating a reusable shortcut from the current session. Follow these steps:
Technischen Diff anzeigen
--- a/skills/schedule/SKILL.md
+++ b/skills/schedule/SKILL.md
@@ -0,0 +1,3 @@
+
+You are creating a reusable shortcut from the current session. Follow these steps:
+
🧩
Skill-Anpassung
Neu
skills/schedule/SKILL.md
__frontmatter__
Von Daniel • 2026-04-24 09:26:29.755403
Worum geht es?
Neuer Skill „schedule" — Create a scheduled task that can be run on demand or automatically on an interval.
Technischen Diff anzeigen
--- a/skills/schedule/SKILL.md
+++ b/skills/schedule/SKILL.md
@@ -0,0 +1,4 @@
+---
+name: schedule
+description: "Create a scheduled task that can be run on demand or automatically on an interval."
+---
🧩
Skill-Anpassung
Neu
skills/schedule/SKILL.md
## 4. Determine scheduling
Von Daniel • 2026-04-24 09:26:29.754598
Worum geht es?
Neuer Skill „schedule" wird angelegt
- **Recurring** ("every morning", "weekdays at 5pm", "hourly") → `cronExpression`
Technischen Diff anzeigen
--- a/skills/schedule/SKILL.md
+++ b/skills/schedule/SKILL.md
@@ -0,0 +1,13 @@
+## 4. Determine scheduling
+
+Pick one:
+- **Recurring** ("every morning", "weekdays at 5pm", "hourly") → `cronExpression`
+- **One-time with a specific moment** ("remind me in 5 minutes", "tomorrow at 3pm", "next Friday") → `fireAt` ISO timestamp
+- **Ad-hoc** (no automatic run; user will trigger manually) → omit both
+- **Ambiguous** → propose a schedule and ask the user to confirm before proceeding
+
+**cronExpression:** Evaluated in the user's LOCAL timezone, not UTC. Use local times directly — e.g. "8am every Friday" → `0 8 * * 5`.
+
+**fireAt:** Compute the exact moment and emit a full ISO 8601 string with timezone offset, e.g. `2026-03-05T14:30:00-08:00`. Never use cron for one-time tasks — cron has no one-shot semantics.
+
+Finally, call the "create_scheduled_task" tool.
🧩
Skill-Anpassung
Neu
skills/schedule/SKILL.md
## 3. Choose a taskName
Von Daniel • 2026-04-24 09:26:29.753766
Worum geht es?
Neuer Skill „schedule" wird angelegt
Pick a short, descriptive name in kebab-case (e.g. "daily-inbox-summary", "weekly-dep-audit", "format-pr-description").
Technischen Diff anzeigen
--- a/skills/schedule/SKILL.md
+++ b/skills/schedule/SKILL.md
@@ -0,0 +1,4 @@
+## 3. Choose a taskName
+
+Pick a short, descriptive name in kebab-case (e.g. "daily-inbox-summary", "weekly-dep-audit", "format-pr-description").
+
🧩
Skill-Anpassung
Neu
skills/schedule/SKILL.md
## 2. Draft a prompt
Von Daniel • 2026-04-24 09:26:29.752941
Worum geht es?
Neuer Skill „schedule" wird angelegt
The prompt will be used for future autonomous runs — it must be entirely self-contained. Future runs will NOT have access to this session, so never reference "t…
Technischen Diff anzeigen
--- a/skills/schedule/SKILL.md
+++ b/skills/schedule/SKILL.md
@@ -0,0 +1,13 @@
+## 2. Draft a prompt
+
+The prompt will be used for future autonomous runs — it must be entirely self-contained. Future runs will NOT have access to this session, so never reference "the current conversation," "the above," or any ephemeral context.
+
+Include in the description:
+- A clear objective statement (what to accomplish)
+- Specific steps to execute
+- Any relevant file paths, URLs, repositories, or tool names
+- Expected output or success criteria
+- Any constraints or preferences the user expressed
+
+Write the description in second-person imperative ("Check the inbox…", "Run the test suite…"). Keep it concise but complete enough that another Claude session could execute it cold.
+
🧩
Skill-Anpassung
Neu
skills/schedule/SKILL.md
## 1. Analyze the session
Von Daniel • 2026-04-24 09:26:29.752124
Worum geht es?
Neuer Skill „schedule" wird angelegt
Review the session history to identify the core task the user performed or requested. Distill it into a single, repeatable objective.
Technischen Diff anzeigen
--- a/skills/schedule/SKILL.md
+++ b/skills/schedule/SKILL.md
@@ -0,0 +1,4 @@
+## 1. Analyze the session
+
+Review the session history to identify the core task the user performed or requested. Distill it into a single, repeatable objective.
+
🧩
Skill-Anpassung
Neu
skills/pptx/scripts/thumbnail.py
Von Daniel • 2026-04-24 09:26:29.751310
Worum geht es?
Neuer Skill „pptx" wird angelegt
"""Create thumbnail grids from PowerPoint presentation slides.
--- a/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/xml.xsd
+++ b/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/xml.xsd
@@ -0,0 +1,116 @@
+
+
+
+
+
+ See http://www.w3.org/XML/1998/namespace.html and
+ http://www.w3.org/TR/REC-xml for information about this namespace.
+
+ This schema document describes the XML namespace, in a form
+ suitable for import by other schema documents.
+
+ Note that local names in this namespace are intended to be defined
+ only by the World Wide Web Consortium or its subgroups. The
+ following names are currently defined in this namespace and should
+ not be used with conflicting semantics by any Working Group,
+ specification, or document instance:
+
+ base (as an attribute name): denotes an attribute whose value
+ provides a URI to be used as the base for interpreting any
+ relative URIs in the scope of the element on which it
+ appears; its value is inherited. This name is reserved
+ by virtue of its definition in the XML Base specification.
+
+ lang (as an attribute name): denotes an attribute whose value
+ is a language code for the natural language of the content of
+ any element; its value is inherited. This name is reserved
+ by virtue of its definition in the XML specification.
+
+ space (as an attribute name): denotes an attribute whose
+ value is a keyword indicating what whitespace processing
+ discipline is intended for the content of the element; its
+ value is inherited. This name is reserved by virtue of its
+ definition in the XML specification.
+
+ Father (in any context at all): denotes Jon Bosak, the chair of
+ the original XML Working Group. This name is reserved by
+ the following decision of the W3C XML Plenary and
+ XML Coordination groups:
+
+ In appreciation for his vision, leadership and dedication
+ the W3C XML Plenary on this 10th day of February, 2000
+ reserves for Jon Bosak in perpetuity the XML name
+ xml:Father
+
+
+
+
+ This schema defines attributes and an attribute group
+ suitable for use by
+ schemas wishing to allow xml:base, xml:lang or xml:space attributes
+ on elements they define.
+
+ To enable this, such a schema must import this schema
+ for the XML namespace, e.g. as follows:
+ <schema . . .>
+ . . .
+ <import namespace="http://www.w3.org/XML/1998/namespace"
+ schemaLocation="http://www.w3.org/2001/03/xml.xsd"/>
+
+ Subsequently, qualified reference to any of the attributes
+ or the group defined below will have the desired effect, e.g.
+
+ <type . . .>
+ . . .
+ <attributeGroup ref="xml:specialAttrs"/>
+
+ will define a type which will schema-validate an instance
+ element with any of those attributes
+
+
+
+ In keeping with the XML Schema WG's standard versioning
+ policy, this schema document will persist at
+ http://www.w3.org/2001/03/xml.xsd.
+ At the date of issue it can also be found at
+ http://www.w3.org/2001/xml.xsd.
+ The schema document at that URI may however change in the future,
+ in order to remain compatible with the latest version of XML Schema
+ itself. In other words, if the XML Schema namespace changes, the version
+ of this document at
+ http://www.w3.org/2001/xml.xsd will change
+ accordingly; the version at
+ http://www.w3.org/2001/03/xml.xsd will not change.
+
+
+
+
+
+ In due course, we should install the relevant ISO 2- and 3-letter
+ codes as the enumerated possible values . . .
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ See http://www.w3.org/TR/xmlbase/ for
+ information about this attribute.
+
+
+
+
+
+
+
+
+
+
When using an existing presentation as a template:
Technischen Diff anzeigen
--- a/skills/pptx/editing.md
+++ b/skills/pptx/editing.md
@@ -0,0 +1,43 @@
+## Template-Based Workflow
+
+When using an existing presentation as a template:
+
+1. **Analyze existing slides**:
+ ```bash
+ python scripts/thumbnail.py template.pptx
+ python -m markitdown template.pptx
+ ```
+ Review `thumbnails.jpg` to see layouts, and markitdown output to see placeholder text.
+
+2. **Plan slide mapping**: For each content section, choose a template slide.
+
+ ⚠️ **USE VARIED LAYOUTS** — monotonous presentations are a common failure mode. Don't default to basic title + bullet slides. Actively seek out:
+ - Multi-column layouts (2-column, 3-column)
+ - Image + text combinations
+ - Full-bleed images with text overlay
+ - Quote or callout slides
+ - Section dividers
+ - Stat/number callouts
+ - Icon grids or icon + text rows
+
+ **Avoid:** Repeating the same text-heavy layout for every slide.
+
+ Match content type to layout style (e.g., key points → bullet slide, team info → multi-column, testimonials → quote slide).
+
+3. **Unpack**: `python scripts/office/unpack.py template.pptx unpacked/`
+
+4. **Build presentation** (do this yourself, not with subagents):
+ - Delete unwanted slides (remove from ``)
+ - Duplicate slides you want to reuse (`add_slide.py`)
+ - Reorder slides in ``
+ - **Complete all structural changes before step 5**
+
+5. **Edit content**: Update text in each `slide{N}.xml`.
+ **Use subagents here if available** — slides are separate XML files, so subagents can edit in parallel.
+
+6. **Clean**: `python scripts/clean.py unpacked/`
+
+7. **Pack**: `python scripts/office/pack.py unpacked/ output.pptx --original template.pptx`
+
+---
+
🧩
Skill-Anpassung
Neu
skills/pptx/editing.md
## Slide Operations
Von Daniel • 2026-04-24 09:26:29.689905
Worum geht es?
Neuer Skill „pptx" wird angelegt
Slide order is in `ppt/presentation.xml` → `<p:sldIdLst>`.
Technischen Diff anzeigen
--- a/skills/pptx/editing.md
+++ b/skills/pptx/editing.md
@@ -0,0 +1,12 @@
+## Slide Operations
+
+Slide order is in `ppt/presentation.xml` → ``.
+
+**Reorder**: Rearrange `` elements.
+
+**Delete**: Remove ``, then run `clean.py`.
+
+**Add**: Use `add_slide.py`. Never manually copy slide files—the script handles notes references, Content_Types.xml, and relationship IDs that manual copying misses.
+
+---
+
**Subagents:** If available, use them here (after completing step 4). Each slide is a separate XML file, so subagents can edit in parallel. In your prompt to su…
Technischen Diff anzeigen
--- a/skills/pptx/editing.md
+++ b/skills/pptx/editing.md
@@ -0,0 +1,25 @@
+## Editing Content
+
+**Subagents:** If available, use them here (after completing step 4). Each slide is a separate XML file, so subagents can edit in parallel. In your prompt to subagents, include:
+- The slide file path(s) to edit
+- **"Use the Edit tool for all changes"**
+- The formatting rules and common pitfalls below
+
+For each slide:
+1. Read the slide's XML
+2. Identify ALL placeholder content—text, images, charts, icons, captions
+3. Replace each placeholder with final content
+
+**Use the Edit tool, not sed or Python scripts.** The Edit tool forces specificity about what to replace and where, yielding better reliability.
+
+### Formatting Rules
+
+- **Bold all headers, subheadings, and inline labels**: Use `b="1"` on ``. This includes:
+ - Slide titles
+ - Section headers within a slide
+ - Inline labels like (e.g.: "Status:", "Description:") at the start of a line
+- **Never use unicode bullets (•)**: Use proper list formatting with `` or ``
+- **Bullet consistency**: Let bullets inherit from the layout. Only specify `` or ``.
+
+---
+
🧩
Skill-Anpassung
Neu
skills/pptx/editing.md
## Common Pitfalls
Von Daniel • 2026-04-24 09:26:29.687361
Worum geht es?
Neuer Skill „pptx" wird angelegt
When source content has fewer items than the template:
Technischen Diff anzeigen
--- a/skills/pptx/editing.md
+++ b/skills/pptx/editing.md
@@ -0,0 +1,68 @@
+## Common Pitfalls
+
+### Template Adaptation
+
+When source content has fewer items than the template:
+- **Remove excess elements entirely** (images, shapes, text boxes), don't just clear text
+- Check for orphaned visuals after clearing text content
+- Run visual QA to catch mismatched counts
+
+When replacing text with different length content:
+- **Shorter replacements**: Usually safe
+- **Longer replacements**: May overflow or wrap unexpectedly
+- Test with visual QA after text changes
+- Consider truncating or splitting content to fit the template's design constraints
+
+**Template slots ≠ Source items**: If template has 4 team members but source has 3 users, delete the 4th member's entire group (image + text boxes), not just the text.
+
+### Multi-Item Content
+
+If source has multiple items (numbered lists, multiple sections), create separate `` elements for each — **never concatenate into one string**.
+
+**❌ WRONG** — all items in one paragraph:
+```xml
+
+ Step 1: Do the first thing. Step 2: Do the second thing.
+
+```
+
+**✅ CORRECT** — separate paragraphs with bold headers:
+```xml
+
+
+ Step 1
+
+
+
+ Do the first thing.
+
+
+
+ Step 2
+
+
+```
+
+Copy `` from the original paragraph to preserve line spacing. Use `b="1"` on headers.
+
+### Smart Quotes
+
+Handled automatically by unpack/pack. But the Edit tool converts smart quotes to ASCII.
+
+**When adding new text with quotes, use XML entities:**
+
+```xml
+the “Agreement”
+```
+
+| Character | Name | Unicode | XML Entity |
+|-----------|------|---------|------------|
+| `“` | Left double quote | U+201C | `“` |
+| `”` | Right double quote | U+201D | `”` |
+| `‘` | Left single quote | U+2018 | `‘` |
+| `’` | Right single quote | U+2019 | `’` |
+
+### Other
+
+- **Whitespace**: Use `xml:space="preserve"` on `` with leading/trailing spaces
+- **XML parsing**: Use `defusedxml.minidom`, not `xml.etree.ElementTree` (corrupts namespaces)
Neuer Skill „pptx" — Use this skill any time a .pptx file is involved in any way — as input, output, or both.
Technischen Diff anzeigen
--- a/skills/pptx/SKILL.md
+++ b/skills/pptx/SKILL.md
@@ -0,0 +1,5 @@
+---
+name: pptx
+description: "Use this skill any time a .pptx file is involved in any way — as input, output, or both. This includes: creating slide decks, pitch decks, or presentations; reading, parsing, or extracting text from any .pptx file (even if the extracted content will be used elsewhere, like in an email or summary); editing, modifying, or updating existing presentations; combining or splitting slide files; working with templates, layouts, speaker notes, or comments. Trigger whenever the user mentions \"deck,\" \"slides,\" \"presentation,\" or references a .pptx filename, regardless of what they plan to do with the content afterward. If a .pptx file needs to be opened, created, or touched, use this skill."
+license: Proprietary. LICENSE.txt has complete terms
+---
**Assume there are problems. Your job is to find them.**
Technischen Diff anzeigen
--- a/skills/pptx/SKILL.md
+++ b/skills/pptx/SKILL.md
@@ -0,0 +1,67 @@
+## QA (Required)
+
+**Assume there are problems. Your job is to find them.**
+
+Your first render is almost never correct. Approach QA as a bug hunt, not a confirmation step. If you found zero issues on first inspection, you weren't looking hard enough.
+
+### Content QA
+
+```bash
+python -m markitdown output.pptx
+```
+
+Check for missing content, typos, wrong order.
+
+**When using templates, check for leftover placeholder text:**
+
+```bash
+python -m markitdown output.pptx | grep -iE "\bx{3,}\b|lorem|ipsum|\bTODO|\[insert|this.*(page|slide).*layout"
+```
+
+If grep returns results, fix them before declaring success.
+
+### Visual QA
+
+**⚠️ USE SUBAGENTS** — even for 2-3 slides. You've been staring at the code and will see what you expect, not what's there. Subagents have fresh eyes.
+
+Convert slides to images (see [Converting to Images](#converting-to-images)), then use this prompt:
+
+```
+Visually inspect these slides. Assume there are issues — find them.
+
+Look for:
+- Overlapping elements (text through shapes, lines through words, stacked elements)
+- Text overflow or cut off at edges/box boundaries
+- Decorative lines positioned for single-line text but title wrapped to two lines
+- Source citations or footers colliding with content above
+- Elements too close (< 0.3" gaps) or cards/sections nearly touching
+- Uneven gaps (large empty area in one place, cramped in another)
+- Insufficient margin from slide edges (< 0.5")
+- Columns or similar elements not aligned consistently
+- Low-contrast text (e.g., light gray text on cream-colored background)
+- Low-contrast icons (e.g., dark icons on dark backgrounds without a contrasting circle)
+- Text boxes too narrow causing excessive wrapping
+- Leftover placeholder content
+
+For each slide, list issues or areas of concern, even if minor.
+
+Read and analyze these images — run `ls -1 "$PWD"/slide-*.jpg` and use the exact absolute paths it prints:
+1. /slide-N.jpg — (Expected: [brief description])
+2. /slide-N.jpg — (Expected: [brief description])
+...
+
+Report ALL issues found, including minor ones.
+```
+
+### Verification Loop
+
+1. Generate slides → Convert to images → Inspect
+2. **List issues found** (if none found, look again more critically)
+3. Fix issues
+4. **Re-verify affected slides** — one fix often creates another problem
+5. Repeat until a full pass reveals no new issues
+
+**Do not declare success until you've completed at least one fix-and-verify cycle.**
+
+---
+
🧩
Skill-Anpassung
Neu
skills/pptx/SKILL.md
## Editing Workflow
Von Daniel • 2026-04-24 09:26:29.682563
Worum geht es?
Neuer Skill „pptx" wird angelegt
**Read [editing.md](editing.md) for full details.**
**Don't create boring slides.** Plain bullets on a white background won't impress anyone. Consider ideas from this list for each slide.
Technischen Diff anzeigen
--- a/skills/pptx/SKILL.md
+++ b/skills/pptx/SKILL.md
@@ -0,0 +1,90 @@
+## Design Ideas
+
+**Don't create boring slides.** Plain bullets on a white background won't impress anyone. Consider ideas from this list for each slide.
+
+### Before Starting
+
+- **Pick a bold, content-informed color palette**: The palette should feel designed for THIS topic. If swapping your colors into a completely different presentation would still "work," you haven't made specific enough choices.
+- **Dominance over equality**: One color should dominate (60-70% visual weight), with 1-2 supporting tones and one sharp accent. Never give all colors equal weight.
+- **Dark/light contrast**: Dark backgrounds for title + conclusion slides, light for content ("sandwich" structure). Or commit to dark throughout for a premium feel.
+- **Commit to a visual motif**: Pick ONE distinctive element and repeat it — rounded image frames, icons in colored circles, thick single-side borders. Carry it across every slide.
+
+### Color Palettes
+
+Choose colors that match your topic — don't default to generic blue. Use these palettes as inspiration:
+
+| Theme | Primary | Secondary | Accent |
+|-------|---------|-----------|--------|
+| **Midnight Executive** | `1E2761` (navy) | `CADCFC` (ice blue) | `FFFFFF` (white) |
+| **Forest & Moss** | `2C5F2D` (forest) | `97BC62` (moss) | `F5F5F5` (cream) |
+| **Coral Energy** | `F96167` (coral) | `F9E795` (gold) | `2F3C7E` (navy) |
+| **Warm Terracotta** | `B85042` (terracotta) | `E7E8D1` (sand) | `A7BEAE` (sage) |
+| **Ocean Gradient** | `065A82` (deep blue) | `1C7293` (teal) | `21295C` (midnight) |
+| **Charcoal Minimal** | `36454F` (charcoal) | `F2F2F2` (off-white) | `212121` (black) |
+| **Teal Trust** | `028090` (teal) | `00A896` (seafoam) | `02C39A` (mint) |
+| **Berry & Cream** | `6D2E46` (berry) | `A26769` (dusty rose) | `ECE2D0` (cream) |
+| **Sage Calm** | `84B59F` (sage) | `69A297` (eucalyptus) | `50808E` (slate) |
+| **Cherry Bold** | `990011` (cherry) | `FCF6F5` (off-white) | `2F3C7E` (navy) |
+
+### For Each Slide
+
+**Every slide needs a visual element** — image, chart, icon, or shape. Text-only slides are forgettable.
+
+**Layout options:**
+- Two-column (text left, illustration on right)
+- Icon + text rows (icon in colored circle, bold header, description below)
+- 2x2 or 2x3 grid (image on one side, grid of content blocks on other)
+- Half-bleed image (full left or right side) with content overlay
+
+**Data display:**
+- Large stat callouts (big numbers 60-72pt with small labels below)
+- Comparison columns (before/after, pros/cons, side-by-side options)
+- Timeline or process flow (numbered steps, arrows)
+
+**Visual polish:**
+- Icons in small colored circles next to section headers
+- Italic accent text for key stats or taglines
+
+### Typography
+
+**Choose an interesting font pairing** — don't default to Arial. Pick a header font with personality and pair it with a clean body font.
+
+| Header Font | Body Font |
+|-------------|-----------|
+| Georgia | Calibri |
+| Arial Black | Arial |
+| Calibri | Calibri Light |
+| Cambria | Calibri |
+| Trebuchet MS | Calibri |
+| Impact | Arial |
+| Palatino | Garamond |
+| Consolas | Calibri |
+
+| Element | Size |
+|---------|------|
+| Slide title | 36-44pt bold |
+| Section header | 20-24pt bold |
+| Body text | 14-16pt |
+| Captions | 10-12pt muted |
+
+### Spacing
+
+- 0.5" minimum margins
+- 0.3-0.5" between content blocks
+- Leave breathing room—don't fill every inch
+
+### Avoid (Common Mistakes)
+
+- **Don't repeat the same layout** — vary columns, cards, and callouts across slides
+- **Don't center body text** — left-align paragraphs and lists; center only titles
+- **Don't skimp on size contrast** — titles need 36pt+ to stand out from 14-16pt body
+- **Don't default to blue** — pick colors that reflect the specific topic
+- **Don't mix spacing randomly** — choose 0.3" or 0.5" gaps and use consistently
+- **Don't style one slide and leave the rest plain** — commit fully or keep it simple throughout
+- **Don't create text-only slides** — add images, icons, charts, or visual elements; avoid plain title + bullets
+- **Don't forget text box padding** — when aligning lines or shapes with text edges, set `margin: 0` on the text box or offset the shape to account for padding
+- **Don't use low-contrast elements** — icons AND text need strong contrast against the background; avoid light text on light backgrounds or dark text on dark backgrounds
+- **NEVER use accent lines under titles** — these are a hallmark of AI-generated slides; use whitespace or background color instead
+
+---
+
🧩
Skill-Anpassung
Neu
skills/pptx/SKILL.md
## Dependencies
Von Daniel • 2026-04-24 09:26:29.680873
Worum geht es?
Neuer Skill „pptx" wird angelegt
- `pip install "markitdown[pptx]"` - text extraction
Technischen Diff anzeigen
--- a/skills/pptx/SKILL.md
+++ b/skills/pptx/SKILL.md
@@ -0,0 +1,7 @@
+## Dependencies
+
+- `pip install "markitdown[pptx]"` - text extraction
+- `pip install Pillow` - thumbnail grids
+- `npm install -g pptxgenjs` - creating from scratch
+- LibreOffice (`soffice`) - PDF conversion (auto-configured for sandboxed environments via `scripts/office/soffice.py`)
+- Poppler (`pdftoppm`) - PDF to images
🧩
Skill-Anpassung
Neu
skills/pptx/SKILL.md
## Creating from Scratch
Von Daniel • 2026-04-24 09:26:29.680044
Worum geht es?
Neuer Skill „pptx" wird angelegt
**Read [pptxgenjs.md](pptxgenjs.md) for full details.**
Technischen Diff anzeigen
--- a/skills/pptx/SKILL.md
+++ b/skills/pptx/SKILL.md
@@ -0,0 +1,8 @@
+## Creating from Scratch
+
+**Read [pptxgenjs.md](pptxgenjs.md) for full details.**
+
+Use when no template or reference presentation is available.
+
+---
+
🧩
Skill-Anpassung
Neu
skills/pptx/SKILL.md
## Converting to Images
Von Daniel • 2026-04-24 09:26:29.679017
Worum geht es?
Neuer Skill „pptx" wird angelegt
Convert presentations to individual slide images for visual inspection:
Technischen Diff anzeigen
--- a/skills/pptx/SKILL.md
+++ b/skills/pptx/SKILL.md
@@ -0,0 +1,17 @@
+## Converting to Images
+
+Convert presentations to individual slide images for visual inspection:
+
+```bash
+python scripts/office/soffice.py --headless --convert-to pdf output.pptx
+rm -f slide-*.jpg
+pdftoppm -jpeg -r 150 output.pdf slide
+ls -1 "$PWD"/slide-*.jpg
+```
+
+**Pass the absolute paths printed above directly to the view tool.** The `rm` clears stale images from prior runs. `pdftoppm` zero-pads based on page count: `slide-1.jpg` for decks under 10 pages, `slide-01.jpg` for 10-99, `slide-001.jpg` for 100+.
+
+**After fixes, rerun all four commands above** — the PDF must be regenerated from the edited `.pptx` before `pdftoppm` can reflect your changes.
+
+---
+
Neuer Skill „phone-lookup" — Automatische Identifikation deutscher Telefonnummern.
Technischen Diff anzeigen
--- a/skills/phone-lookup/SKILL.md
+++ b/skills/phone-lookup/SKILL.md
@@ -0,0 +1,10 @@
+---
+name: phone-lookup
+description: >
+ Automatische Identifikation deutscher Telefonnummern. Verwende diesen Skill IMMER,
+ sobald der Nutzer eine deutsche Rufnummer in den Chat einfuegt oder eine Nummer zur
+ Identifikation anfragt — auch ohne explizite Aufforderung. Trigger-Formate:
+ +49..., 0049..., 0... (Ortsvorwahl), oder Nummern ohne Laenderkennung, die nach
+ einer deutschen Rufnummer aussehen. Identifiziert Unternehmen, Behoerden,
+ Privatanschluesse oder Ortsnetz anhand progressiver Kuerzungslogik.
+---
🧩
Skill-Anpassung
Neu
skills/phone-lookup/SKILL.md
## Ziel
Von Daniel • 2026-04-24 09:26:29.675796
Worum geht es?
Neuer Skill „phone-lookup" wird angelegt
So schnell wie moeglich eine zuverlaessige Zuordnung liefern:
Technischen Diff anzeigen
--- a/skills/phone-lookup/SKILL.md
+++ b/skills/phone-lookup/SKILL.md
@@ -0,0 +1,8 @@
+## Ziel
+
+So schnell wie moeglich eine zuverlaessige Zuordnung liefern:
+- „wahrscheinlich Unternehmenshotline von …"
+- „sieht nach Privatanschluss im Ortsnetz … aus"
+- „moeglicherweise Behoerde / Service-Hotline von …"
+- „keine verlaessliche Zuordnung moeglich, nur Ortsnetz: …"
+
🧩
Skill-Anpassung
Neu
skills/phone-lookup/SKILL.md
## Wann wird dieser Skill verwendet?
Von Daniel • 2026-04-24 09:26:29.674898
Worum geht es?
Neuer Skill „phone-lookup" wird angelegt
Immer wenn eine deutsche Telefonnummer im Chat erscheint — eingefuegt vom Nutzer,
Technischen Diff anzeigen
--- a/skills/phone-lookup/SKILL.md
+++ b/skills/phone-lookup/SKILL.md
@@ -0,0 +1,6 @@
+## Wann wird dieser Skill verwendet?
+
+Immer wenn eine deutsche Telefonnummer im Chat erscheint — eingefuegt vom Nutzer,
+aus einem Dokument, oder als Rueckfrage — soll dieser Skill **automatisch und ohne
+extra Aufforderung** ausgeloest werden.
+
🧩
Skill-Anpassung
Neu
skills/phone-lookup/SKILL.md
## Tonalitaet
Von Daniel • 2026-04-24 09:26:29.674005
Worum geht es?
Neuer Skill „phone-lookup" wird angelegt
- Keine langen Erklaerungen zum Prozess
Technischen Diff anzeigen
--- a/skills/phone-lookup/SKILL.md
+++ b/skills/phone-lookup/SKILL.md
@@ -0,0 +1,6 @@
+## Tonalitaet
+
+- Keine langen Erklaerungen zum Prozess
+- Direkt zum Ergebnis
+- Unsicherheit klar signalisieren (z.B. „wahrscheinlich", „moeglicherweise")
+- Bei mehreren moeglichen Treffern: kurz auflisten, wahrscheinlichsten zuerst
--- a/skills/phone-lookup/SKILL.md
+++ b/skills/phone-lookup/SKILL.md
@@ -0,0 +1,36 @@
+## Schritt-fuer-Schritt-Ablauf
+
+### 1. Normalisierung
+- Leerzeichen, Bindestriche, Klammern entfernen
+- `+49` → `0`, `0049` → `0` (fuehrende Null wiederherstellen)
+- Ergebnis: nationale Schreibweise, z.B. `069123456789`
+
+### 2. Direktsuche (vollstaendige Nummer)
+- Web-Suche: `"[vollstaendige Nummer]" Unternehmen OR Firma OR Behoerde OR Hotline`
+- Auch bekannte Dienste pruefen: Telekom, Vodafone, O2-Kundenservice,
+ Behoerden-Hotlines (110, 112, 115, 116...), Sonderrufnummern (0800, 0900, etc.)
+
+### 3. Progressive Kuerzung (wenn Direktsuche kein klares Ergebnis liefert)
+- Rechts eine Stelle entfernen → erneut suchen
+- Zusaetzlich: gekuerzte Nummer + „0" anhaengen (= moegliche Zentrale) → ebenfalls suchen
+- Wiederhole bis mind. Ortsvorwahl identifiziert ist
+- Abbruch, sobald ein verlaesslicher Treffer gefunden wurde
+
+### 4. Vorwahl-Fallback
+- Wenn keine spezifische Zuordnung moeglich: Ortsvorwahl aus bekannter BNetzA-Liste
+ identifizieren und Ortsnetz benennen
+- Liste der haeufigsten Vorwahlen ist im Modell bekannt; bei unbekannter Vorwahl
+ kurz suchen
+
+### 5. Ausgabe
+
+Kurz und direkt, z.B.:
+
+> **069 123456** → wahrscheinlich Unternehmenshotline von **Muster GmbH** (Frankfurt)
+> *(gefunden ueber Kuerzung auf 06912345 + Anhaengen der 0)*
+
+oder:
+
+> **030 9876543** → keine eindeutige Zuordnung. Ortsnetz: **Berlin (030)**. Klingt nach
+> gewerblichem Anschluss (Durchwahl-Muster).
+
🧩
Skill-Anpassung
Neu
skills/performance-report/SKILL.md
__preamble__
Von Daniel • 2026-04-24 09:26:29.670915
Worum geht es?
Neuer Skill „performance-report" wird angelegt
> If you see unfamiliar placeholders or need to check which tools are connected, see [CONNECTORS.md](../../CONNECTORS.md).
Technischen Diff anzeigen
--- a/skills/performance-report/SKILL.md
+++ b/skills/performance-report/SKILL.md
@@ -0,0 +1,7 @@
+
+# Performance Report
+
+> If you see unfamiliar placeholders or need to check which tools are connected, see [CONNECTORS.md](../../CONNECTORS.md).
+
+Generate a marketing performance report with key metrics, trend analysis, insights, and optimization recommendations.
+
🧩
Skill-Anpassung
Neu
skills/performance-report/SKILL.md
__frontmatter__
Von Daniel • 2026-04-24 09:26:29.670077
Worum geht es?
Neuer Skill „performance-report" — Build a marketing performance report with key metrics, trend analysis, wins and misses, and prioritized optimization recommendations.
Technischen Diff anzeigen
--- a/skills/performance-report/SKILL.md
+++ b/skills/performance-report/SKILL.md
@@ -0,0 +1,5 @@
+---
+name: performance-report
+description: Build a marketing performance report with key metrics, trend analysis, wins and misses, and prioritized optimization recommendations. Use when wrapping a campaign, when preparing weekly, monthly, or quarterly channel summaries for stakeholders, or when you need data translated into an executive summary with next-period priorities.
+argument-hint: "
🧩
Skill-Anpassung
Neu
skills/performance-report/SKILL.md
## Trigger
Von Daniel • 2026-04-24 09:26:29.669216
Worum geht es?
Neuer Skill „performance-report" wird angelegt
User runs `/performance-report` or asks for a marketing report, performance analysis, campaign results, or metrics summary.
Technischen Diff anzeigen
--- a/skills/performance-report/SKILL.md
+++ b/skills/performance-report/SKILL.md
@@ -0,0 +1,4 @@
+## Trigger
+
+User runs `/performance-report` or asks for a marketing report, performance analysis, campaign results, or metrics summary.
+
🧩
Skill-Anpassung
Neu
skills/performance-report/SKILL.md
## Trend Analysis and Forecasting
Von Daniel • 2026-04-24 09:26:29.668419
Worum geht es?
Neuer Skill „performance-report" wird angelegt
When analyzing performance data, look for:
Technischen Diff anzeigen
--- a/skills/performance-report/SKILL.md
+++ b/skills/performance-report/SKILL.md
@@ -0,0 +1,33 @@
+## Trend Analysis and Forecasting
+
+### Trend Identification
+When analyzing performance data, look for:
+
+1. **Directional trends**: is the metric consistently going up, down, or flat over 4+ periods?
+2. **Inflection points**: where did performance change direction and what happened then?
+3. **Seasonality**: are there predictable patterns by day of week, month, or quarter?
+4. **Anomalies**: one-time spikes or drops — what caused them and are they repeatable?
+5. **Leading indicators**: which metrics change first and predict future outcomes?
+
+### Trend Analysis Process
+1. Chart the metric over time (at least 8-12 data points for meaningful trends)
+2. Identify the overall direction (upward, downward, flat, cyclical)
+3. Calculate the rate of change (is it accelerating or decelerating?)
+4. Overlay key events (campaigns launched, product changes, market events)
+5. Compare to benchmarks or targets
+6. Identify correlations with other metrics
+7. Form hypotheses about causation (and plan tests to validate)
+
+### Simple Forecasting Approaches
+- **Linear projection**: extend the current trend line forward (useful for stable metrics)
+- **Moving average**: smooth out noise by averaging the last 3-6 periods
+- **Year-over-year comparison**: use last year's pattern as a baseline, adjusted for growth rate
+- **Funnel math**: forecast outputs from inputs (e.g., if we generate X leads at Y conversion rate, we will get Z customers)
+- **Scenario modeling**: create best case, expected case, and worst case projections
+
+### Forecasting Caveats
+- Short-term forecasts (1-3 months) are more reliable than long-term
+- Forecasts based on fewer than 12 data points should be flagged as low confidence
+- External factors (market shifts, competitive moves, economic changes) can invalidate trend-based forecasts
+- Always present forecasts as ranges, not exact numbers
+
🧩
Skill-Anpassung
Neu
skills/performance-report/SKILL.md
## Reporting Templates by Cadence
Von Daniel • 2026-04-24 09:26:29.667634
Worum geht es?
Neuer Skill „performance-report" wird angelegt
Quick-scan format for team standups:
Technischen Diff anzeigen
--- a/skills/performance-report/SKILL.md
+++ b/skills/performance-report/SKILL.md
@@ -0,0 +1,39 @@
+## Reporting Templates by Cadence
+
+### Weekly Marketing Report
+Quick-scan format for team standups:
+- **Top 3 metrics** with week-over-week change
+- **What worked** this week (1-2 bullet points with data)
+- **What needs attention** (1-2 bullet points with data)
+- **This week's priorities** (3-5 action items)
+
+### Monthly Marketing Report
+Standard stakeholder report:
+1. Executive summary (3-5 sentences)
+2. Key metrics dashboard (table with MoM and target comparison)
+3. Channel-by-channel performance summary
+4. Campaign highlights and results
+5. What worked and what did not (with hypotheses)
+6. Recommendations and next month priorities
+7. Budget spend vs. plan
+
+### Quarterly Business Review (QBR)
+Strategic review for leadership:
+1. Quarter performance vs. goals
+2. Year-to-date trajectory
+3. Channel ROI analysis
+4. Campaign performance summary
+5. Competitive and market observations
+6. Strategic recommendations for next quarter
+7. Budget request and allocation plan
+8. Key experiments and learnings
+
+### Dashboard Design Principles
+- Lead with the metrics that map to business objectives (not vanity metrics)
+- Show trends over time, not just point-in-time snapshots
+- Include comparison context: prior period, target, benchmark
+- Use consistent color coding: green (on track), yellow (at risk), red (off track)
+- Group metrics by funnel stage or business question
+- Keep dashboards to one page/screen — detail goes in appendix
+- Update cadence should match decision cadence (real-time for paid, weekly for content)
+
🧩
Skill-Anpassung
Neu
skills/performance-report/SKILL.md
## Report Structure
Von Daniel • 2026-04-24 09:26:29.666830
Worum geht es?
Neuer Skill „performance-report" wird angelegt
- 2-3 sentence overview of performance in the period
Technischen Diff anzeigen
--- a/skills/performance-report/SKILL.md
+++ b/skills/performance-report/SKILL.md
@@ -0,0 +1,115 @@
+## Report Structure
+
+### 1. Executive Summary
+- 2-3 sentence overview of performance in the period
+- Headline metric with trend direction (up/down/flat vs. prior period)
+- One key win and one area of concern
+
+### 2. Key Metrics Dashboard
+
+Present core metrics in a summary table:
+
+| Metric | This Period | Prior Period | Change | Target | Status |
+|--------|------------|--------------|--------|--------|--------|
+
+Status indicators:
+- On track (meeting or exceeding target)
+- At risk (below target but within acceptable range)
+- Off track (significantly below target)
+
+#### Metrics by Report Type
+
+**Campaign Report:**
+- Impressions and reach
+- Click-through rate (CTR)
+- Conversion rate
+- Cost per acquisition (CPA)
+- Return on ad spend (ROAS) or ROI
+- Total conversions/signups/leads
+
+**Channel Report (Email):**
+- Emails sent, delivered, bounced
+- Open rate
+- Click-through rate
+- Unsubscribe rate
+- Conversion rate
+
+**Channel Report (Social):**
+- Impressions and reach
+- Engagement rate (likes, comments, shares)
+- Follower growth
+- Click-through rate
+- Top-performing posts
+
+**Channel Report (Paid):**
+- Spend
+- Impressions and clicks
+- CTR
+- CPC and CPM
+- Conversions and CPA
+- ROAS
+
+**Channel Report (SEO/Organic):**
+- Organic sessions
+- Keyword rankings (movement)
+- Pages indexed
+- Backlinks acquired
+- Top-performing pages
+
+**Content Performance:**
+- Pageviews and unique visitors
+- Time on page
+- Bounce rate
+- Social shares
+- Conversions attributed to content
+- Top and bottom performers
+
+**Overall Marketing Report:**
+- Total leads generated
+- Marketing qualified leads (MQLs)
+- Pipeline contribution
+- Customer acquisition cost (CAC)
+- Channel-by-channel summary
+
+### 3. Trend Analysis
+- Performance trend over the period (week-over-week or month-over-month)
+- Notable inflection points and what caused them
+- Seasonal or cyclical patterns observed
+- Comparison to benchmarks or targets
+
+### 4. What Worked
+- Top 3-5 wins with specific data
+- Why these performed well (hypothesis)
+- How to replicate or scale
+
+### 5. What Needs Improvement
+- Bottom 3-5 performers with specific data
+- Hypotheses for underperformance
+- Recommended fixes
+
+### 6. Insights and Observations
+- Patterns in the data that are not obvious from the metrics alone
+- Audience behavior insights
+- Content or creative themes that resonated
+- External factors that may have influenced performance (seasonality, news, competitive moves)
+
+### 7. Recommendations
+For each recommendation:
+- What to do
+- Why (linked to a specific insight from the data)
+- Expected impact (high, medium, low)
+- Effort to implement (high, medium, low)
+- Priority (immediate, next sprint, next quarter)
+
+Prioritize recommendations in a 2x2 matrix format:
+
+| | Low Effort | High Effort |
+|---|---|---|
+| **High Impact** | Do first | Plan for next sprint |
+| **Low Impact** | Do if time allows | Deprioritize |
+
+### 8. Next Period Focus
+- Top 3 priorities for the upcoming period
+- Tests or experiments to run
+- Targets for key metrics
+
🧩
Skill-Anpassung
Neu
skills/performance-report/SKILL.md
## Output Formatting
Von Daniel • 2026-04-24 09:26:29.666016
Worum geht es?
Neuer Skill „performance-report" wird angelegt
- Use tables for data presentation
Technischen Diff anzeigen
--- a/skills/performance-report/SKILL.md
+++ b/skills/performance-report/SKILL.md
@@ -0,0 +1,7 @@
+## Output Formatting
+
+- Use tables for data presentation
+- Bold key numbers and trends
+- Keep the executive summary concise (suitable for forwarding to leadership)
+- Include a "detailed appendix" section for granular data if the user provided a lot of metrics
+
🧩
Skill-Anpassung
Neu
skills/performance-report/SKILL.md
## Optimization Recommendations Framework
Von Daniel • 2026-04-24 09:26:29.665201
Worum geht es?
Neuer Skill „performance-report" wird angelegt
1. **Identify**: which metrics are underperforming vs. target or benchmark?
Technischen Diff anzeigen
--- a/skills/performance-report/SKILL.md
+++ b/skills/performance-report/SKILL.md
@@ -0,0 +1,37 @@
+## Optimization Recommendations Framework
+
+### Optimization Process
+1. **Identify**: which metrics are underperforming vs. target or benchmark?
+2. **Diagnose**: where in the funnel is the problem? (impressions, clicks, conversions, retention)
+3. **Hypothesize**: what is causing the underperformance? (audience, message, creative, offer, timing, technical)
+4. **Prioritize**: which fixes will have the biggest impact with the least effort?
+5. **Test**: design an experiment to validate the hypothesis
+6. **Measure**: did the change improve the metric?
+7. **Scale or iterate**: roll out wins broadly; iterate on inconclusive or failed tests
+
+### Optimization Levers by Funnel Stage
+
+| Funnel Stage | Problem Signal | Optimization Levers |
+|-------------|---------------|---------------------|
+| Awareness | Low impressions, low reach | Budget, targeting, channel mix, creative format |
+| Interest | Low CTR, low engagement | Ad creative, headlines, content hooks, audience targeting |
+| Consideration | High bounce rate, low time on page | Landing page content, page speed, content relevance, UX |
+| Conversion | Low conversion rate | Offer, CTA, form length, trust signals, page layout |
+| Retention | High churn, low repeat engagement | Onboarding, email nurture, product experience, support |
+
+### Testing Best Practices
+- Test one variable at a time for clean results
+- Define the success metric before launching the test
+- Calculate required sample size before starting (do not end tests early)
+- Run tests for a minimum of one full business cycle (typically one week for B2B)
+- Document all tests and results, regardless of outcome
+- Share learnings across the team — failed tests are valuable information
+- A test that confirms the status quo is not a failure — it builds confidence in your current approach
+
+### Continuous Optimization Cadence
+- **Daily**: monitor paid campaigns for budget pacing, anomalies, and disapproved ads
+- **Weekly**: review channel performance, pause underperformers, scale winners
+- **Bi-weekly**: refresh ad creative and test new variants
+- **Monthly**: full performance review, identify new optimization opportunities, update forecasts
+- **Quarterly**: strategic review of channel mix, budget allocation, and targeting strategy
+
🧩
Skill-Anpassung
Neu
skills/performance-report/SKILL.md
## Metric Definitions and Benchmarks
Von Daniel • 2026-04-24 09:26:29.664382
Worum geht es?
Neuer Skill „performance-report" wird angelegt
| Metric | Definition | Benchmark Range | What It Tells You |
Technischen Diff anzeigen
--- a/skills/performance-report/SKILL.md
+++ b/skills/performance-report/SKILL.md
@@ -0,0 +1,87 @@
+## Metric Definitions and Benchmarks
+
+### Email Marketing
+
+| Metric | Definition | Benchmark Range | What It Tells You |
+|--------|-----------|----------------|-------------------|
+| Delivery rate | Emails delivered / emails sent | 95-99% | List health and sender reputation |
+| Open rate | Unique opens / emails delivered | 15-30% | Subject line and sender effectiveness |
+| Click-through rate (CTR) | Unique clicks / emails delivered | 2-5% | Content relevance and CTA effectiveness |
+| Click-to-open rate (CTOR) | Unique clicks / unique opens | 10-20% | Email content quality (for those who opened) |
+| Unsubscribe rate | Unsubscribes / emails delivered | <0.5% | Content-audience fit and frequency tolerance |
+| Bounce rate | Bounces / emails sent | <2% | List quality and data hygiene |
+| Conversion rate | Conversions / emails delivered | 1-5% | End-to-end email effectiveness |
+| Revenue per email | Total revenue / emails sent | Varies | Direct revenue attribution |
+| List growth rate | (New subscribers - unsubscribes) / total list | 2-5% monthly | Audience building health |
+
+### Social Media
+
+| Metric | Definition | What It Tells You |
+|--------|-----------|-------------------|
+| Impressions | Number of times content was displayed | Content distribution and reach |
+| Reach | Number of unique users who saw content | Audience breadth |
+| Engagement rate | (Likes + comments + shares) / reach | Content resonance |
+| Click-through rate | Link clicks / impressions | Traffic driving effectiveness |
+| Follower growth rate | Net new followers / total followers per period | Audience building |
+| Share/Repost rate | Shares / reach | Content virality and advocacy |
+| Video view rate | Views / impressions | Video content hook effectiveness |
+| Video completion rate | Completed views / total views | Video content quality and length fit |
+| Social share of voice | Your mentions / total category mentions | Brand visibility vs. competitors |
+
+### Paid Advertising (Search and Social)
+
+| Metric | Definition | What It Tells You |
+|--------|-----------|-------------------|
+| Impressions | Times ad was shown | Budget utilization and targeting breadth |
+| Click-through rate (CTR) | Clicks / impressions | Ad creative and targeting relevance |
+| Cost per click (CPC) | Total spend / clicks | Cost efficiency of traffic generation |
+| Cost per mille (CPM) | Cost per 1,000 impressions | Awareness cost efficiency |
+| Conversion rate | Conversions / clicks | Landing page and offer effectiveness |
+| Cost per acquisition (CPA) | Total spend / conversions | Full-funnel cost efficiency |
+| Return on ad spend (ROAS) | Revenue / ad spend | Revenue generation efficiency |
+| Quality Score (search) | Google's relevance rating (1-10) | Ad-keyword-landing page alignment |
+| Frequency | Average times a user sees the ad | Ad fatigue risk |
+| View-through conversions | Conversions from users who saw but did not click | Display/awareness campaign influence |
+
+### SEO / Organic Search
+
+| Metric | Definition | What It Tells You |
+|--------|-----------|-------------------|
+| Organic sessions | Visits from organic search | SEO effectiveness and content reach |
+| Keyword rankings | Position for target keywords | Search visibility |
+| Organic CTR | Clicks / impressions in search results | Title and meta description effectiveness |
+| Pages indexed | Number of pages in search index | Crawlability and site health |
+| Domain authority | Third-party authority score | Overall site strength |
+| Backlinks | Number of external sites linking to you | Content authority and off-page SEO |
+| Page load speed | Time to interactive | User experience and ranking factor |
+| Organic conversion rate | Organic conversions / organic sessions | Content quality and intent alignment |
+| Top entry pages | Most-visited pages from organic search | Content driving the most organic traffic |
+
+### Content Marketing
+
+| Metric | Definition | What It Tells You |
+|--------|-----------|-------------------|
+| Pageviews | Total views of content pages | Content reach and distribution |
+| Unique visitors | Distinct users viewing content | Audience size |
+| Average time on page | Time spent on content pages | Content engagement and depth |
+| Bounce rate | Single-page sessions / total sessions | Content-audience fit and UX |
+| Scroll depth | How far users scroll on a page | Content engagement through the piece |
+| Social shares | Times content was shared on social | Content resonance and virality |
+| Backlinks earned | External links to content | Content authority and SEO value |
+| Lead generation | Leads attributed to content | Content conversion effectiveness |
+| Content ROI | Revenue attributed / content production cost | Overall content investment return |
+
+### Overall Marketing / Pipeline
+
+| Metric | Definition | What It Tells You |
+|--------|-----------|-------------------|
+| Marketing qualified leads (MQLs) | Leads meeting marketing qualification criteria | Top-of-funnel effectiveness |
+| Sales qualified leads (SQLs) | MQLs accepted by sales | Lead quality |
+| MQL to SQL conversion rate | SQLs / MQLs | Marketing-sales alignment and lead quality |
+| Pipeline generated | Dollar value of opportunities created | Marketing impact on revenue |
+| Pipeline velocity | How fast deals move through pipeline | Campaign urgency and quality |
+| Customer acquisition cost (CAC) | Total marketing + sales cost / new customers | Efficiency of customer acquisition |
+| CAC payback period | Months to recover CAC from revenue | Unit economics health |
+| Marketing-sourced revenue | Revenue from marketing-originated deals | Direct marketing contribution |
+| Marketing-influenced revenue | Revenue from deals where marketing touched | Broader marketing impact |
+
🧩
Skill-Anpassung
Neu
skills/performance-report/SKILL.md
## Inputs
Von Daniel • 2026-04-24 09:26:29.663585
Worum geht es?
Neuer Skill „performance-report" wird angelegt
1. **Report type** — determine which type of report the user needs:
Technischen Diff anzeigen
--- a/skills/performance-report/SKILL.md
+++ b/skills/performance-report/SKILL.md
@@ -0,0 +1,20 @@
+## Inputs
+
+1. **Report type** — determine which type of report the user needs:
+ - **Campaign report** — performance of a specific campaign
+ - **Channel report** — performance across a specific channel (email, social, paid, SEO, etc.)
+ - **Content performance** — how content pieces are performing
+ - **Overall marketing report** — cross-channel summary (weekly, monthly, quarterly)
+ - **Custom** — user-defined scope
+
+2. **Time period** — the reporting window (last week, last month, last quarter, custom date range)
+
+3. **Data source**:
+ - If ~~marketing analytics is connected, discover what accounts and platforms are available, then pull performance data automatically
+ - If ~~product analytics is connected: pull performance data automatically
+ - If not connected: ask the user to provide metrics. Prompt with: "Please paste or share your performance data. I can work with spreadsheets, CSV data, dashboard screenshots described in text, or just the key numbers."
+
+4. **Comparison period** (optional) — prior period or year-over-year for trend context
+
+5. **Stakeholder audience** (optional) — who will read this report (executive summary style vs. detailed analyst view)
+
🧩
Skill-Anpassung
Neu
skills/performance-report/SKILL.md
## Attribution Modeling Basics
Von Daniel • 2026-04-24 09:26:29.662761
Worum geht es?
Neuer Skill „performance-report" wird angelegt
Attribution determines which marketing touchpoints get credit for a conversion. This matters because buyers typically interact with multiple channels before con…
Technischen Diff anzeigen
--- a/skills/performance-report/SKILL.md
+++ b/skills/performance-report/SKILL.md
@@ -0,0 +1,31 @@
+## Attribution Modeling Basics
+
+### What Is Attribution?
+Attribution determines which marketing touchpoints get credit for a conversion. This matters because buyers typically interact with multiple channels before converting.
+
+### Common Attribution Models
+
+| Model | How It Works | Best For | Limitation |
+|-------|-------------|----------|------------|
+| Last touch | 100% credit to last interaction before conversion | Understanding final conversion triggers | Ignores awareness and nurture |
+| First touch | 100% credit to first interaction | Understanding top-of-funnel effectiveness | Ignores nurture and conversion drivers |
+| Linear | Equal credit to all touchpoints | Fair representation of all channels | Does not reflect relative impact |
+| Time decay | More credit to touchpoints closer to conversion | Balanced view favoring recent interactions | May undervalue awareness |
+| Position-based (U-shaped) | 40% first, 40% last, 20% split among middle | Valuing both discovery and conversion | Somewhat arbitrary weighting |
+| Data-driven | Algorithmic credit based on conversion patterns | Most accurate representation | Requires significant data volume |
+
+### Attribution Practical Guidance
+- Start with last-touch attribution if you have no model in place — it is the simplest and most actionable
+- Compare first-touch and last-touch to understand which channels drive awareness vs. conversion
+- Use position-based (U-shaped) as a reasonable middle ground for most B2B companies
+- Data-driven attribution requires high conversion volume to be statistically meaningful
+- No model is perfect — use attribution directionally, not as absolute truth
+- Multi-touch attribution is better than single-touch, but any model is better than none
+
+### Attribution Pitfalls
+- Do not optimize one channel in isolation based on single-touch attribution
+- Awareness channels (display, social, PR) will always look bad in last-touch models
+- Conversion channels (search, retargeting) will always look bad in first-touch models
+- Self-reported attribution ("how did you hear about us?") provides useful qualitative color but is unreliable as quantitative data
+- Cross-device and cross-channel tracking gaps mean attribution data is always incomplete
+
🧩
Skill-Anpassung
Neu
skills/performance-report/SKILL.md
## After the Report
Von Daniel • 2026-04-24 09:26:29.661940
Worum geht es?
Neuer Skill „performance-report" wird angelegt
Ask: "Would you like me to:
Technischen Diff anzeigen
--- a/skills/performance-report/SKILL.md
+++ b/skills/performance-report/SKILL.md
@@ -0,0 +1,7 @@
+## After the Report
+
+Ask: "Would you like me to:
+- Create a slide-ready summary of these results?
+- Draft a stakeholder email with the key takeaways?
+- Dive deeper into any specific metric or channel?
+- Set up a reporting template you can reuse next period?"
--- a/skills/pdf/scripts/check_fillable_fields.py
+++ b/skills/pdf/scripts/check_fillable_fields.py
@@ -0,0 +1,11 @@
+import sys
+from pypdf import PdfReader
+
+
+
+
+reader = PdfReader(sys.argv[1])
+if (reader.get_fields()):
+ print("This PDF has fillable form fields")
+else:
+ print("This PDF does not have fillable form fields; you will need to visually determine where to enter data")
🧩
Skill-Anpassung
Neu
skills/pdf/scripts/check_bounding_boxes.py
Von Daniel • 2026-04-24 09:26:29.655383
Worum geht es?
Neuer Skill „pdf" wird angelegt
from dataclasses import dataclass
Technischen Diff anzeigen
--- a/skills/pdf/scripts/check_bounding_boxes.py
+++ b/skills/pdf/scripts/check_bounding_boxes.py
@@ -0,0 +1,65 @@
+from dataclasses import dataclass
+import json
+import sys
+
+
+
+
+@dataclass
+class RectAndField:
+ rect: list[float]
+ rect_type: str
+ field: dict
+
+
+def get_bounding_box_messages(fields_json_stream) -> list[str]:
+ messages = []
+ fields = json.load(fields_json_stream)
+ messages.append(f"Read {len(fields['form_fields'])} fields")
+
+ def rects_intersect(r1, r2):
+ disjoint_horizontal = r1[0] >= r2[2] or r1[2] <= r2[0]
+ disjoint_vertical = r1[1] >= r2[3] or r1[3] <= r2[1]
+ return not (disjoint_horizontal or disjoint_vertical)
+
+ rects_and_fields = []
+ for f in fields["form_fields"]:
+ rects_and_fields.append(RectAndField(f["label_bounding_box"], "label", f))
+ rects_and_fields.append(RectAndField(f["entry_bounding_box"], "entry", f))
+
+ has_error = False
+ for i, ri in enumerate(rects_and_fields):
+ for j in range(i + 1, len(rects_and_fields)):
+ rj = rects_and_fields[j]
+ if ri.field["page_number"] == rj.field["page_number"] and rects_intersect(ri.rect, rj.rect):
+ has_error = True
+ if ri.field is rj.field:
+ messages.append(f"FAILURE: intersection between label and entry bounding boxes for `{ri.field['description']}` ({ri.rect}, {rj.rect})")
+ else:
+ messages.append(f"FAILURE: intersection between {ri.rect_type} bounding box for `{ri.field['description']}` ({ri.rect}) and {rj.rect_type} bounding box for `{rj.field['description']}` ({rj.rect})")
+ if len(messages) >= 20:
+ messages.append("Aborting further checks; fix bounding boxes and try again")
+ return messages
+ if ri.rect_type == "entry":
+ if "entry_text" in ri.field:
+ font_size = ri.field["entry_text"].get("font_size", 14)
+ entry_height = ri.rect[3] - ri.rect[1]
+ if entry_height < font_size:
+ has_error = True
+ messages.append(f"FAILURE: entry bounding box height ({entry_height}) for `{ri.field['description']}` is too short for the text content (font size: {font_size}). Increase the box height or decrease the font size.")
+ if len(messages) >= 20:
+ messages.append("Aborting further checks; fix bounding boxes and try again")
+ return messages
+
+ if not has_error:
+ messages.append("SUCCESS: All bounding boxes are valid")
+ return messages
+
+if __name__ == "__main__":
+ if len(sys.argv) != 2:
+ print("Usage: check_bounding_boxes.py [fields.json]")
+ sys.exit(1)
+ with open(sys.argv[1]) as f:
+ messages = get_bounding_box_messages(f)
+ for msg in messages:
+ print(msg)
Neuer Skill „pdf" — Use this skill whenever the user wants to do anything with PDF files.
Technischen Diff anzeigen
--- a/skills/pdf/SKILL.md
+++ b/skills/pdf/SKILL.md
@@ -0,0 +1,5 @@
+---
+name: pdf
+description: Use this skill whenever the user wants to do anything with PDF files. This includes reading or extracting text/tables from PDFs, combining or merging multiple PDFs into one, splitting PDFs apart, rotating pages, adding watermarks, creating new PDFs, filling PDF forms, encrypting/decrypting PDFs, extracting images, and OCR on scanned PDFs to make them searchable. If the user mentions a .pdf file or asks to produce one, use this skill.
+license: Proprietary. LICENSE.txt has complete terms
+---
🧩
Skill-Anpassung
Neu
skills/pdf/SKILL.md
## Quick Start
Von Daniel • 2026-04-24 09:26:29.652930
Worum geht es?
Neuer Skill „pdf" wird angelegt
from pypdf import PdfReader, PdfWriter
Technischen Diff anzeigen
--- a/skills/pdf/SKILL.md
+++ b/skills/pdf/SKILL.md
@@ -0,0 +1,15 @@
+## Quick Start
+
+```python
+from pypdf import PdfReader, PdfWriter
+
+# Read a PDF
+reader = PdfReader("document.pdf")
+print(f"Pages: {len(reader.pages)}")
+
+# Extract text
+text = ""
+for page in reader.pages:
+ text += page.extract_text()
+```
+
🧩
Skill-Anpassung
Neu
skills/pdf/SKILL.md
## Quick Reference
Von Daniel • 2026-04-24 09:26:29.652114
Worum geht es?
Neuer Skill „pdf" wird angelegt
| Task | Best Tool | Command/Code |
Technischen Diff anzeigen
--- a/skills/pdf/SKILL.md
+++ b/skills/pdf/SKILL.md
@@ -0,0 +1,13 @@
+## Quick Reference
+
+| Task | Best Tool | Command/Code |
+|------|-----------|--------------|
+| Merge PDFs | pypdf | `writer.add_page(page)` |
+| Split PDFs | pypdf | One page per file |
+| Extract text | pdfplumber | `page.extract_text()` |
+| Extract tables | pdfplumber | `page.extract_tables()` |
+| Create PDFs | reportlab | Canvas or Platypus |
+| Command line merge | qpdf | `qpdf --empty --pages ...` |
+| OCR scanned PDFs | pytesseract | Convert to image first |
+| Fill PDF forms | pdf-lib or pypdf (see FORMS.md) | See FORMS.md |
+
🧩
Skill-Anpassung
Neu
skills/pdf/SKILL.md
## Python Libraries
Von Daniel • 2026-04-24 09:26:29.651299
Worum geht es?
Neuer Skill „pdf" wird angelegt
from pypdf import PdfWriter, PdfReader
Technischen Diff anzeigen
--- a/skills/pdf/SKILL.md
+++ b/skills/pdf/SKILL.md
@@ -0,0 +1,161 @@
+## Python Libraries
+
+### pypdf - Basic Operations
+
+#### Merge PDFs
+```python
+from pypdf import PdfWriter, PdfReader
+
+writer = PdfWriter()
+for pdf_file in ["doc1.pdf", "doc2.pdf", "doc3.pdf"]:
+ reader = PdfReader(pdf_file)
+ for page in reader.pages:
+ writer.add_page(page)
+
+with open("merged.pdf", "wb") as output:
+ writer.write(output)
+```
+
+#### Split PDF
+```python
+reader = PdfReader("input.pdf")
+for i, page in enumerate(reader.pages):
+ writer = PdfWriter()
+ writer.add_page(page)
+ with open(f"page_{i+1}.pdf", "wb") as output:
+ writer.write(output)
+```
+
+#### Extract Metadata
+```python
+reader = PdfReader("document.pdf")
+meta = reader.metadata
+print(f"Title: {meta.title}")
+print(f"Author: {meta.author}")
+print(f"Subject: {meta.subject}")
+print(f"Creator: {meta.creator}")
+```
+
+#### Rotate Pages
+```python
+reader = PdfReader("input.pdf")
+writer = PdfWriter()
+
+page = reader.pages[0]
+page.rotate(90) # Rotate 90 degrees clockwise
+writer.add_page(page)
+
+with open("rotated.pdf", "wb") as output:
+ writer.write(output)
+```
+
+### pdfplumber - Text and Table Extraction
+
+#### Extract Text with Layout
+```python
+import pdfplumber
+
+with pdfplumber.open("document.pdf") as pdf:
+ for page in pdf.pages:
+ text = page.extract_text()
+ print(text)
+```
+
+#### Extract Tables
+```python
+with pdfplumber.open("document.pdf") as pdf:
+ for i, page in enumerate(pdf.pages):
+ tables = page.extract_tables()
+ for j, table in enumerate(tables):
+ print(f"Table {j+1} on page {i+1}:")
+ for row in table:
+ print(row)
+```
+
+#### Advanced Table Extraction
+```python
+import pandas as pd
+
+with pdfplumber.open("document.pdf") as pdf:
+ all_tables = []
+ for page in pdf.pages:
+ tables = page.extract_tables()
+ for table in tables:
+ if table: # Check if table is not empty
+ df = pd.DataFrame(table[1:], columns=table[0])
+ all_tables.append(df)
+
+# Combine all tables
+if all_tables:
+ combined_df = pd.concat(all_tables, ignore_index=True)
+ combined_df.to_excel("extracted_tables.xlsx", index=False)
+```
+
+### reportlab - Create PDFs
+
+#### Basic PDF Creation
+```python
+from reportlab.lib.pagesizes import letter
+from reportlab.pdfgen import canvas
+
+c = canvas.Canvas("hello.pdf", pagesize=letter)
+width, height = letter
+
+# Add text
+c.drawString(100, height - 100, "Hello World!")
+c.drawString(100, height - 120, "This is a PDF created with reportlab")
+
+# Add a line
+c.line(100, height - 140, 400, height - 140)
+
+# Save
+c.save()
+```
+
+#### Create PDF with Multiple Pages
+```python
+from reportlab.lib.pagesizes import letter
+from reportlab.platypus import SimpleDocTemplate, Paragraph, Spacer, PageBreak
+from reportlab.lib.styles import getSampleStyleSheet
+
+doc = SimpleDocTemplate("report.pdf", pagesize=letter)
+styles = getSampleStyleSheet()
+story = []
+
+# Add content
+title = Paragraph("Report Title", styles['Title'])
+story.append(title)
+story.append(Spacer(1, 12))
+
+body = Paragraph("This is the body of the report. " * 20, styles['Normal'])
+story.append(body)
+story.append(PageBreak())
+
+# Page 2
+story.append(Paragraph("Page 2", styles['Heading1']))
+story.append(Paragraph("Content for page 2", styles['Normal']))
+
+# Build PDF
+doc.build(story)
+```
+
+#### Subscripts and Superscripts
+
+**IMPORTANT**: Never use Unicode subscript/superscript characters (₀₁₂₃₄₅₆₇₈₉, ⁰¹²³⁴⁵⁶⁷⁸⁹) in ReportLab PDFs. The built-in fonts do not include these glyphs, causing them to render as solid black boxes.
+
+Instead, use ReportLab's XML markup tags in Paragraph objects:
+```python
+from reportlab.platypus import Paragraph
+from reportlab.lib.styles import getSampleStyleSheet
+
+styles = getSampleStyleSheet()
+
+# Subscripts: use tag
+chemical = Paragraph("H2O", styles['Normal'])
+
+# Superscripts: use tag
+squared = Paragraph("x2 + y2", styles['Normal'])
+```
+
+For canvas-drawn text (not Paragraph objects), manually adjust font the size and position rather than using Unicode subscripts/superscripts.
+
🧩
Skill-Anpassung
Neu
skills/pdf/SKILL.md
## Overview
Von Daniel • 2026-04-24 09:26:29.650504
Worum geht es?
Neuer Skill „pdf" wird angelegt
This guide covers essential PDF processing operations using Python libraries and command-line tools. For advanced features, JavaScript libraries, and detailed e…
Technischen Diff anzeigen
--- a/skills/pdf/SKILL.md
+++ b/skills/pdf/SKILL.md
@@ -0,0 +1,4 @@
+## Overview
+
+This guide covers essential PDF processing operations using Python libraries and command-line tools. For advanced features, JavaScript libraries, and detailed examples, see REFERENCE.md. If you need to fill out a PDF form, read FORMS.md and follow its instructions.
+
🧩
Skill-Anpassung
Neu
skills/pdf/SKILL.md
## Next Steps
Von Daniel • 2026-04-24 09:26:29.649702
Worum geht es?
Neuer Skill „pdf" wird angelegt
- For advanced pypdfium2 usage, see REFERENCE.md
Technischen Diff anzeigen
--- a/skills/pdf/SKILL.md
+++ b/skills/pdf/SKILL.md
@@ -0,0 +1,6 @@
+## Next Steps
+
+- For advanced pypdfium2 usage, see REFERENCE.md
+- For JavaScript libraries (pdf-lib), see REFERENCE.md
+- If you need to fill out a PDF form, follow the instructions in FORMS.md
+- For troubleshooting guides, see REFERENCE.md
🧩
Skill-Anpassung
Neu
skills/pdf/SKILL.md
## Common Tasks
Von Daniel • 2026-04-24 09:26:29.648885
Worum geht es?
Neuer Skill „pdf" wird angelegt
import pytesseract
Technischen Diff anzeigen
--- a/skills/pdf/SKILL.md
+++ b/skills/pdf/SKILL.md
@@ -0,0 +1,65 @@
+## Common Tasks
+
+### Extract Text from Scanned PDFs
+```python
+# Requires: pip install pytesseract pdf2image
+import pytesseract
+from pdf2image import convert_from_path
+
+# Convert PDF to images
+images = convert_from_path('scanned.pdf')
+
+# OCR each page
+text = ""
+for i, image in enumerate(images):
+ text += f"Page {i+1}:\n"
+ text += pytesseract.image_to_string(image)
+ text += "\n\n"
+
+print(text)
+```
+
+### Add Watermark
+```python
+from pypdf import PdfReader, PdfWriter
+
+# Create watermark (or load existing)
+watermark = PdfReader("watermark.pdf").pages[0]
+
+# Apply to all pages
+reader = PdfReader("document.pdf")
+writer = PdfWriter()
+
+for page in reader.pages:
+ page.merge_page(watermark)
+ writer.add_page(page)
+
+with open("watermarked.pdf", "wb") as output:
+ writer.write(output)
+```
+
+### Extract Images
+```bash
+# Using pdfimages (poppler-utils)
+pdfimages -j input.pdf output_prefix
+
+# This extracts all images as output_prefix-000.jpg, output_prefix-001.jpg, etc.
+```
+
+### Password Protection
+```python
+from pypdf import PdfReader, PdfWriter
+
+reader = PdfReader("input.pdf")
+writer = PdfWriter()
+
+for page in reader.pages:
+ writer.add_page(page)
+
+# Add password
+writer.encrypt("userpassword", "ownerpassword")
+
+with open("encrypted.pdf", "wb") as output:
+ writer.write(output)
+```
+
This document contains advanced PDF processing features, detailed examples, and additional libraries not covered in the main skill instructions.
Technischen Diff anzeigen
--- a/skills/pdf/REFERENCE.md
+++ b/skills/pdf/REFERENCE.md
@@ -0,0 +1,4 @@
+# PDF Processing Advanced Reference
+
+This document contains advanced PDF processing features, detailed examples, and additional libraries not covered in the main skill instructions.
+
🧩
Skill-Anpassung
Neu
skills/pdf/REFERENCE.md
## pypdfium2 Library (Apache/BSD License)
Von Daniel • 2026-04-24 09:26:29.646470
Worum geht es?
Neuer Skill „pdf" wird angelegt
pypdfium2 is a Python binding for PDFium (Chromium's PDF library). It's excellent for fast PDF rendering, image generation, and serves as a PyMuPDF replacement.
Technischen Diff anzeigen
--- a/skills/pdf/REFERENCE.md
+++ b/skills/pdf/REFERENCE.md
@@ -0,0 +1,41 @@
+## pypdfium2 Library (Apache/BSD License)
+
+### Overview
+pypdfium2 is a Python binding for PDFium (Chromium's PDF library). It's excellent for fast PDF rendering, image generation, and serves as a PyMuPDF replacement.
+
+### Render PDF to Images
+```python
+import pypdfium2 as pdfium
+from PIL import Image
+
+# Load PDF
+pdf = pdfium.PdfDocument("document.pdf")
+
+# Render page to image
+page = pdf[0] # First page
+bitmap = page.render(
+ scale=2.0, # Higher resolution
+ rotation=0 # No rotation
+)
+
+# Convert to PIL Image
+img = bitmap.to_pil()
+img.save("page_1.png", "PNG")
+
+# Process multiple pages
+for i, page in enumerate(pdf):
+ bitmap = page.render(scale=1.5)
+ img = bitmap.to_pil()
+ img.save(f"page_{i+1}.jpg", "JPEG", quality=90)
+```
+
+### Extract Text with pypdfium2
+```python
+import pypdfium2 as pdfium
+
+pdf = pdfium.PdfDocument("document.pdf")
+for i, page in enumerate(pdf):
+ text = page.get_text()
+ print(f"Page {i+1} text length: {len(text)} chars")
+```
+
🧩
Skill-Anpassung
Neu
skills/pdf/REFERENCE.md
## Troubleshooting Common Issues
Von Daniel • 2026-04-24 09:26:29.645665
Worum geht es?
Neuer Skill „pdf" wird angelegt
from pypdf import PdfReader
Technischen Diff anzeigen
--- a/skills/pdf/REFERENCE.md
+++ b/skills/pdf/REFERENCE.md
@@ -0,0 +1,36 @@
+## Troubleshooting Common Issues
+
+### Encrypted PDFs
+```python
+# Handle password-protected PDFs
+from pypdf import PdfReader
+
+try:
+ reader = PdfReader("encrypted.pdf")
+ if reader.is_encrypted:
+ reader.decrypt("password")
+except Exception as e:
+ print(f"Failed to decrypt: {e}")
+```
+
+### Corrupted PDFs
+```bash
+# Use qpdf to repair
+qpdf --check corrupted.pdf
+qpdf --replace-input corrupted.pdf
+```
+
+### Text Extraction Issues
+```python
+# Fallback to OCR for scanned PDFs
+import pytesseract
+from pdf2image import convert_from_path
+
+def extract_text_with_ocr(pdf_path):
+ images = convert_from_path(pdf_path)
+ text = ""
+ for i, image in enumerate(images):
+ text += pytesseract.image_to_string(image)
+ return text
+```
+
🧩
Skill-Anpassung
Neu
skills/pdf/REFERENCE.md
## Performance Optimization Tips
Von Daniel • 2026-04-24 09:26:29.644868
Worum geht es?
Neuer Skill „pdf" wird angelegt
- Use streaming approaches instead of loading entire PDF in memory
Technischen Diff anzeigen
--- a/skills/pdf/REFERENCE.md
+++ b/skills/pdf/REFERENCE.md
@@ -0,0 +1,39 @@
+## Performance Optimization Tips
+
+### 1. For Large PDFs
+- Use streaming approaches instead of loading entire PDF in memory
+- Use `qpdf --split-pages` for splitting large files
+- Process pages individually with pypdfium2
+
+### 2. For Text Extraction
+- `pdftotext -bbox-layout` is fastest for plain text extraction
+- Use pdfplumber for structured data and tables
+- Avoid `pypdf.extract_text()` for very large documents
+
+### 3. For Image Extraction
+- `pdfimages` is much faster than rendering pages
+- Use low resolution for previews, high resolution for final output
+
+### 4. For Form Filling
+- pdf-lib maintains form structure better than most alternatives
+- Pre-validate form fields before processing
+
+### 5. Memory Management
+```python
+# Process PDFs in chunks
+def process_large_pdf(pdf_path, chunk_size=10):
+ reader = PdfReader(pdf_path)
+ total_pages = len(reader.pages)
+
+ for start_idx in range(0, total_pages, chunk_size):
+ end_idx = min(start_idx + chunk_size, total_pages)
+ writer = PdfWriter()
+
+ for i in range(start_idx, end_idx):
+ writer.add_page(reader.pages[i])
+
+ # Process chunk
+ with open(f"chunk_{start_idx//chunk_size}.pdf", "wb") as output:
+ writer.write(output)
+```
+
**CRITICAL: You MUST complete these steps in order. Do not skip ahead to writing code.**
Technischen Diff anzeigen
--- a/skills/pdf/FORMS.md
+++ b/skills/pdf/FORMS.md
@@ -0,0 +1,80 @@
+**CRITICAL: You MUST complete these steps in order. Do not skip ahead to writing code.**
+
+If you need to fill out a PDF form, first check to see if the PDF has fillable form fields. Run this script from this file's directory:
+ `python scripts/check_fillable_fields `, and depending on the result go to either the "Fillable fields" or "Non-fillable fields" and follow those instructions.
+
+# Fillable fields
+If the PDF has fillable form fields:
+- Run this script from this file's directory: `python scripts/extract_form_field_info.py `. It will create a JSON file with a list of fields in this format:
+```
+[
+ {
+ "field_id": (unique ID for the field),
+ "page": (page number, 1-based),
+ "rect": ([left, bottom, right, top] bounding box in PDF coordinates, y=0 is the bottom of the page),
+ "type": ("text", "checkbox", "radio_group", or "choice"),
+ },
+ // Checkboxes have "checked_value" and "unchecked_value" properties:
+ {
+ "field_id": (unique ID for the field),
+ "page": (page number, 1-based),
+ "type": "checkbox",
+ "checked_value": (Set the field to this value to check the checkbox),
+ "unchecked_value": (Set the field to this value to uncheck the checkbox),
+ },
+ // Radio groups have a "radio_options" list with the possible choices.
+ {
+ "field_id": (unique ID for the field),
+ "page": (page number, 1-based),
+ "type": "radio_group",
+ "radio_options": [
+ {
+ "value": (set the field to this value to select this radio option),
+ "rect": (bounding box for the radio button for this option)
+ },
+ // Other radio options
+ ]
+ },
+ // Multiple choice fields have a "choice_options" list with the possible choices:
+ {
+ "field_id": (unique ID for the field),
+ "page": (page number, 1-based),
+ "type": "choice",
+ "choice_options": [
+ {
+ "value": (set the field to this value to select this option),
+ "text": (display text of the option)
+ },
+ // Other choice options
+ ],
+ }
+]
+```
+- Convert the PDF to PNGs (one image for each page) with this script (run from this file's directory):
+`python scripts/convert_pdf_to_images.py `
+Then analyze the images to determine the purpose of each form field (make sure to convert the bounding box PDF coordinates to image coordinates).
+- Create a `field_values.json` file in this format with the values to be entered for each field:
+```
+[
+ {
+ "field_id": "last_name", // Must match the field_id from `extract_form_field_info.py`
+ "description": "The user's last name",
+ "page": 1, // Must match the "page" value in field_info.json
+ "value": "Simpson"
+ },
+ {
+ "field_id": "Checkbox12",
+ "description": "Checkbox to be checked if the user is 18 or over",
+ "page": 1,
+ "value": "/On" // If this is a checkbox, use its "checked_value" value to check it. If it's a radio button group, use one of the "value" values in "radio_options".
+ },
+ // more fields
+]
+```
+- Run the `fill_fillable_fields.py` script from this file's directory to create a filled-in PDF:
+`python scripts/fill_fillable_fields.py
🧩
Skill-Anpassung
Neu
skills/pdf/FORMS.md
## Step 4: Verify Output
Von Daniel • 2026-04-24 09:26:29.638172
Worum geht es?
Neuer Skill „pdf" wird angelegt
Convert the filled PDF to images and verify text placement:
Technischen Diff anzeigen
--- a/skills/pdf/FORMS.md
+++ b/skills/pdf/FORMS.md
@@ -0,0 +1,9 @@
+## Step 4: Verify Output
+
+Convert the filled PDF to images and verify text placement:
+`python scripts/convert_pdf_to_images.py `
+
+If text is mispositioned:
+- **Approach A**: Check that you're using PDF coordinates from form_structure.json with `pdf_width`/`pdf_height`
+- **Approach B**: Check that image dimensions match and coordinates are accurate pixels
+- **Hybrid**: Ensure coordinate conversions are correct for visually-estimated fields
🧩
Skill-Anpassung
Neu
skills/pdf/FORMS.md
## Step 3: Fill the Form
Von Daniel • 2026-04-24 09:26:29.637387
Worum geht es?
Neuer Skill „pdf" wird angelegt
The fill script auto-detects the coordinate system and handles conversion:
Technischen Diff anzeigen
--- a/skills/pdf/FORMS.md
+++ b/skills/pdf/FORMS.md
@@ -0,0 +1,5 @@
+## Step 3: Fill the Form
+
+The fill script auto-detects the coordinate system and handles conversion:
+`python scripts/fill_pdf_form_with_annotations.py fields.json `
+
🧩
Skill-Anpassung
Neu
skills/pdf/FORMS.md
## Step 2: Validate Before Filling
Von Daniel • 2026-04-24 09:26:29.636593
Worum geht es?
Neuer Skill „pdf" wird angelegt
**Always validate bounding boxes before filling:**
Technischen Diff anzeigen
--- a/skills/pdf/FORMS.md
+++ b/skills/pdf/FORMS.md
@@ -0,0 +1,11 @@
+## Step 2: Validate Before Filling
+
+**Always validate bounding boxes before filling:**
+`python scripts/check_bounding_boxes.py fields.json`
+
+This checks for:
+- Intersecting bounding boxes (which would cause overlapping text)
+- Entry boxes that are too small for the specified font size
+
+Fix any reported errors in fields.json before proceeding.
+
🧩
Skill-Anpassung
Neu
skills/pdf/FORMS.md
## Step 1: Try Structure Extraction First
Von Daniel • 2026-04-24 09:26:29.635793
Worum geht es?
Neuer Skill „pdf" wird angelegt
Run this script to extract text labels, lines, and checkboxes with their exact PDF coordinates:
Technischen Diff anzeigen
--- a/skills/pdf/FORMS.md
+++ b/skills/pdf/FORMS.md
@@ -0,0 +1,15 @@
+## Step 1: Try Structure Extraction First
+
+Run this script to extract text labels, lines, and checkboxes with their exact PDF coordinates:
+`python scripts/extract_form_structure.py form_structure.json`
+
+This creates a JSON file containing:
+- **labels**: Every text element with exact coordinates (x0, top, x1, bottom in PDF points)
+- **lines**: Horizontal lines that define row boundaries
+- **checkboxes**: Small square rectangles that are checkboxes (with center coordinates)
+- **row_boundaries**: Row top/bottom positions calculated from horizontal lines
+
+**Check the results**: If `form_structure.json` has meaningful labels (text elements that correspond to form fields), use **Approach A: Structure-Based Coordinates**. If the PDF is scanned/image-based and has few or no labels, use **Approach B: Visual Estimation**.
+
+---
+
🧩
Skill-Anpassung
Neu
skills/pdf/FORMS.md
## Hybrid Approach: Structure + Visual
Von Daniel • 2026-04-24 09:26:29.634985
Worum geht es?
Neuer Skill „pdf" wird angelegt
Use this when structure extraction works for most fields but misses some elements (e.g., circular checkboxes, unusual form controls).
Technischen Diff anzeigen
--- a/skills/pdf/FORMS.md
+++ b/skills/pdf/FORMS.md
@@ -0,0 +1,14 @@
+## Hybrid Approach: Structure + Visual
+
+Use this when structure extraction works for most fields but misses some elements (e.g., circular checkboxes, unusual form controls).
+
+1. **Use Approach A** for fields that were detected in form_structure.json
+2. **Convert PDF to images** for visual analysis of missing fields
+3. **Use zoom refinement** (from Approach B) for the missing fields
+4. **Combine coordinates**: For fields from structure extraction, use `pdf_width`/`pdf_height`. For visually-estimated fields, you must convert image coordinates to PDF coordinates:
+ - pdf_x = image_x * (pdf_width / image_width)
+ - pdf_y = image_y * (pdf_height / image_height)
+5. **Use a single coordinate system** in fields.json - convert all to PDF coordinates with `pdf_width`/`pdf_height`
+
+---
+
🧩
Skill-Anpassung
Neu
skills/pdf/FORMS.md
## Approach B: Visual Estimation (Fallback)
Von Daniel • 2026-04-24 09:26:29.634176
Worum geht es?
Neuer Skill „pdf" wird angelegt
Use this when the PDF is scanned/image-based and structure extraction found no usable text labels (e.g., all text shows as "(cid:X)" patterns).
Technischen Diff anzeigen
--- a/skills/pdf/FORMS.md
+++ b/skills/pdf/FORMS.md
@@ -0,0 +1,84 @@
+## Approach B: Visual Estimation (Fallback)
+
+Use this when the PDF is scanned/image-based and structure extraction found no usable text labels (e.g., all text shows as "(cid:X)" patterns).
+
+### B.1: Convert PDF to Images
+
+`python scripts/convert_pdf_to_images.py `
+
+### B.2: Initial Field Identification
+
+Examine each page image to identify form sections and get **rough estimates** of field locations:
+- Form field labels and their approximate positions
+- Entry areas (lines, boxes, or blank spaces for text input)
+- Checkboxes and their approximate locations
+
+For each field, note approximate pixel coordinates (they don't need to be precise yet).
+
+### B.3: Zoom Refinement (CRITICAL for accuracy)
+
+For each field, crop a region around the estimated position to refine coordinates precisely.
+
+**Create a zoomed crop using ImageMagick:**
+```bash
+magick -crop x++ +repage
+```
+
+Where:
+- `, ` = top-left corner of crop region (use your rough estimate minus padding)
+- `, ` = size of crop region (field area plus ~50px padding on each side)
+
+**Example:** To refine a "Name" field estimated around (100, 150):
+```bash
+magick images_dir/page_1.png -crop 300x80+50+120 +repage crops/name_field.png
+```
+
+(Note: if the `magick` command isn't available, try `convert` with the same arguments).
+
+**Examine the cropped image** to determine precise coordinates:
+1. Identify the exact pixel where the entry area begins (after the label)
+2. Identify where the entry area ends (before next field or edge)
+3. Identify the top and bottom of the entry line/box
+
+**Convert crop coordinates back to full image coordinates:**
+- full_x = crop_x + crop_offset_x
+- full_y = crop_y + crop_offset_y
+
+Example: If the crop started at (50, 120) and the entry box starts at (52, 18) within the crop:
+- entry_x0 = 52 + 50 = 102
+- entry_top = 18 + 120 = 138
+
+**Repeat for each field**, grouping nearby fields into single crops when possible.
+
+### B.4: Create fields.json with Refined Coordinates
+
+Create fields.json using `image_width` and `image_height` (signals image coordinates):
+```json
+{
+ "pages": [
+ {"page_number": 1, "image_width": 1700, "image_height": 2200}
+ ],
+ "form_fields": [
+ {
+ "page_number": 1,
+ "description": "Last name entry field",
+ "field_label": "Last Name",
+ "label_bounding_box": [120, 175, 242, 198],
+ "entry_bounding_box": [255, 175, 720, 218],
+ "entry_text": {"text": "Smith", "font_size": 10}
+ }
+ ]
+}
+```
+
+**Important**: Use `image_width`/`image_height` and the refined pixel coordinates from the zoom analysis.
+
+### B.5: Validate Bounding Boxes
+
+Before filling, check your bounding boxes for errors:
+`python scripts/check_bounding_boxes.py fields.json`
+
+This checks for intersecting bounding boxes and entry boxes that are too small for the font size. Fix any reported errors before filling.
+
+---
+
Use this when `extract_form_structure.py` found text labels in the PDF.
Technischen Diff anzeigen
--- a/skills/pdf/FORMS.md
+++ b/skills/pdf/FORMS.md
@@ -0,0 +1,76 @@
+## Approach A: Structure-Based Coordinates (Preferred)
+
+Use this when `extract_form_structure.py` found text labels in the PDF.
+
+### A.1: Analyze the Structure
+
+Read form_structure.json and identify:
+
+1. **Label groups**: Adjacent text elements that form a single label (e.g., "Last" + "Name")
+2. **Row structure**: Labels with similar `top` values are in the same row
+3. **Field columns**: Entry areas start after label ends (x0 = label.x1 + gap)
+4. **Checkboxes**: Use the checkbox coordinates directly from the structure
+
+**Coordinate system**: PDF coordinates where y=0 is at TOP of page, y increases downward.
+
+### A.2: Check for Missing Elements
+
+The structure extraction may not detect all form elements. Common cases:
+- **Circular checkboxes**: Only square rectangles are detected as checkboxes
+- **Complex graphics**: Decorative elements or non-standard form controls
+- **Faded or light-colored elements**: May not be extracted
+
+If you see form fields in the PDF images that aren't in form_structure.json, you'll need to use **visual analysis** for those specific fields (see "Hybrid Approach" below).
+
+### A.3: Create fields.json with PDF Coordinates
+
+For each field, calculate entry coordinates from the extracted structure:
+
+**Text fields:**
+- entry x0 = label x1 + 5 (small gap after label)
+- entry x1 = next label's x0, or row boundary
+- entry top = same as label top
+- entry bottom = row boundary line below, or label bottom + row_height
+
+**Checkboxes:**
+- Use the checkbox rectangle coordinates directly from form_structure.json
+- entry_bounding_box = [checkbox.x0, checkbox.top, checkbox.x1, checkbox.bottom]
+
+Create fields.json using `pdf_width` and `pdf_height` (signals PDF coordinates):
+```json
+{
+ "pages": [
+ {"page_number": 1, "pdf_width": 612, "pdf_height": 792}
+ ],
+ "form_fields": [
+ {
+ "page_number": 1,
+ "description": "Last name entry field",
+ "field_label": "Last Name",
+ "label_bounding_box": [43, 63, 87, 73],
+ "entry_bounding_box": [92, 63, 260, 79],
+ "entry_text": {"text": "Smith", "font_size": 10}
+ },
+ {
+ "page_number": 1,
+ "description": "US Citizen Yes checkbox",
+ "field_label": "Yes",
+ "label_bounding_box": [260, 200, 280, 210],
+ "entry_bounding_box": [285, 197, 292, 205],
+ "entry_text": {"text": "X"}
+ }
+ ]
+}
+```
+
+**Important**: Use `pdf_width`/`pdf_height` and coordinates directly from form_structure.json.
+
+### A.4: Validate Bounding Boxes
+
+Before filling, check your bounding boxes for errors:
+`python scripts/check_bounding_boxes.py fields.json`
+
+This checks for intersecting bounding boxes and entry boxes that are too small for the font size. Fix any reported errors before filling.
+
+---
+
🧩
Skill-Anpassung
Neu
skills/ovatics-troubleshooting/SKILL.md
__preamble__
Von Daniel • 2026-04-24 09:26:29.632571
Worum geht es?
Neuer Skill „ovatics-troubleshooting" wird angelegt
Verwende diesen Skill bei Fehlern, Ausfaellen, rotem/orangem Status auf infra.ovatics.de, Container-Problemen oder jeder Art von Stoerungsanalyse.
Technischen Diff anzeigen
--- a/skills/ovatics-troubleshooting/SKILL.md
+++ b/skills/ovatics-troubleshooting/SKILL.md
@@ -0,0 +1,5 @@
+
+# Ovatics Troubleshooting
+
+Verwende diesen Skill bei Fehlern, Ausfaellen, rotem/orangem Status auf infra.ovatics.de, Container-Problemen oder jeder Art von Stoerungsanalyse.
+
🧩
Skill-Anpassung
Neu
skills/ovatics-troubleshooting/SKILL.md
__frontmatter__
Von Daniel • 2026-04-24 09:26:29.631748
Worum geht es?
Neuer Skill „ovatics-troubleshooting" — Verwende diesen Skill bei Fehlern, Ausfaellen, rotem/orangem Status auf infra.ovatics.de, Container-Problemen oder jeder Art von Stoerungsanalyse. Erzwingt Root-Cause-Analyse vor Massnahmen.
Technischen Diff anzeigen
--- a/skills/ovatics-troubleshooting/SKILL.md
+++ b/skills/ovatics-troubleshooting/SKILL.md
@@ -0,0 +1,4 @@
+---
+name: ovatics-troubleshooting
+description: Verwende diesen Skill bei Fehlern, Ausfaellen, rotem/orangem Status auf infra.ovatics.de, Container-Problemen oder jeder Art von Stoerungsanalyse. Erzwingt Root-Cause-Analyse vor Massnahmen.
+---
🧩
Skill-Anpassung
Neu
skills/ovatics-troubleshooting/SKILL.md
## Troubleshooting-Flow (PFLICHT)
Von Daniel • 2026-04-24 09:26:29.630897
Worum geht es?
Neuer Skill „ovatics-troubleshooting" wird angelegt
Bei jedem Problem diesen Ablauf einhalten:
Technischen Diff anzeigen
--- a/skills/ovatics-troubleshooting/SKILL.md
+++ b/skills/ovatics-troubleshooting/SKILL.md
@@ -0,0 +1,14 @@
+## Troubleshooting-Flow (PFLICHT)
+
+Bei jedem Problem diesen Ablauf einhalten:
+
+```
+1. Problem identifizieren (Was genau ist der Fehler?)
+2. Logs analysieren (docker logs, Systemlogs)
+3. Root Cause bestimmen (WARUM ist es passiert?)
+4. Loesungsvorschlaege praesentieren (mit Annehmen/Ablehnen)
+5. Erst nach Bestaetigung: Fix ausfuehren
+```
+
+**WICHTIG:** NIE einfach einen Container neustarten und hoffen, dass es hilft. Immer zuerst verstehen, dann handeln.
+
🧩
Skill-Anpassung
Neu
skills/ovatics-troubleshooting/SKILL.md
## Monitoring-Endpunkte
Von Daniel • 2026-04-24 09:26:29.630093
Worum geht es?
Neuer Skill „ovatics-troubleshooting" wird angelegt
Neuer Skill „ovatics-troubleshooting" wird angelegt
Wenn ein Problem erkannt wird (z.B. orange/roter Status auf infra), folgendes Format verwenden:
Technischen Diff anzeigen
--- a/skills/ovatics-troubleshooting/SKILL.md
+++ b/skills/ovatics-troubleshooting/SKILL.md
@@ -0,0 +1,16 @@
+## Anzeige bei Problemen
+
+Wenn ein Problem erkannt wird (z.B. orange/roter Status auf infra), folgendes Format verwenden:
+
+```
+PROBLEM: [Kurzbeschreibung]
+URSACHE: [Root Cause Analyse]
+AUSWIRKUNG: [Was ist betroffen?]
+
+LOESUNGSVORSCHLAEGE:
+1. [Loesung A] - [Vor-/Nachteile]
+2. [Loesung B] - [Vor-/Nachteile]
+
+Welchen Ansatz soll ich verfolgen, oder hast du eine andere Idee?
+```
+
🧩
Skill-Anpassung
Neu
skills/ovatics-service-blueprint/SKILL.md
__preamble__
Von Daniel • 2026-04-24 09:26:29.624520
Worum geht es?
Neuer Skill „ovatics-service-blueprint" wird angelegt
Verwende diesen Skill, wenn ein neuer Microservice, eine neue API oder ein neues Backend-Modul fuer Ovatics gebaut wird.
Technischen Diff anzeigen
--- a/skills/ovatics-service-blueprint/SKILL.md
+++ b/skills/ovatics-service-blueprint/SKILL.md
@@ -0,0 +1,5 @@
+
+# Ovatics Service Blueprint
+
+Verwende diesen Skill, wenn ein neuer Microservice, eine neue API oder ein neues Backend-Modul fuer Ovatics gebaut wird.
+
🧩
Skill-Anpassung
Neu
skills/ovatics-service-blueprint/SKILL.md
__frontmatter__
Von Daniel • 2026-04-24 09:26:29.623702
Worum geht es?
Neuer Skill „ovatics-service-blueprint" — Verwende diesen Skill, wenn ein neuer Microservice, eine neue API oder ein neues Backend-Modul fuer Ovatics gebaut wird. Liefert komplettes Template mit Code-Patterns, Dockerfile, Ports und Checkliste.
Technischen Diff anzeigen
--- a/skills/ovatics-service-blueprint/SKILL.md
+++ b/skills/ovatics-service-blueprint/SKILL.md
@@ -0,0 +1,4 @@
+---
+name: ovatics-service-blueprint
+description: Verwende diesen Skill, wenn ein neuer Microservice, eine neue API oder ein neues Backend-Modul fuer Ovatics gebaut wird. Liefert komplettes Template mit Code-Patterns, Dockerfile, Ports und Checkliste.
+---
🧩
Skill-Anpassung
Neu
skills/ovatics-service-blueprint/SKILL.md
## docker-compose.yml Standard
Von Daniel • 2026-04-24 09:26:29.622870
Worum geht es?
Neuer Skill „ovatics-service-blueprint" wird angelegt
Neuer Skill „ovatics-kundenkommunikation" wird angelegt
Verwende diesen Skill bei allem, was Kundenkommunikation, Nachrichten an Kaeufer, Marktplatz-Messaging oder Greyhound-Archivierung betrifft.
Technischen Diff anzeigen
--- a/skills/ovatics-kundenkommunikation/SKILL.md
+++ b/skills/ovatics-kundenkommunikation/SKILL.md
@@ -0,0 +1,5 @@
+
+# Ovatics Kundenkommunikation
+
+Verwende diesen Skill bei allem, was Kundenkommunikation, Nachrichten an Kaeufer, Marktplatz-Messaging oder Greyhound-Archivierung betrifft.
+
🧩
Skill-Anpassung
Neu
skills/ovatics-kundenkommunikation/SKILL.md
__frontmatter__
Von Daniel • 2026-04-24 09:26:29.612014
Worum geht es?
Neuer Skill „ovatics-kundenkommunikation" — Verwende diesen Skill bei Kundenkommunikation, Nachrichten an Kaeufer, Marktplatz-Messaging oder Greyhound-Archivierung. Enthaelt Kanalregeln, Archivierungs-Ablauf, Messaging-Proxy API und Tonalitaet.
Technischen Diff anzeigen
--- a/skills/ovatics-kundenkommunikation/SKILL.md
+++ b/skills/ovatics-kundenkommunikation/SKILL.md
@@ -0,0 +1,4 @@
+---
+name: ovatics-kundenkommunikation
+description: Verwende diesen Skill bei Kundenkommunikation, Nachrichten an Kaeufer, Marktplatz-Messaging oder Greyhound-Archivierung. Enthaelt Kanalregeln, Archivierungs-Ablauf, Messaging-Proxy API und Tonalitaet.
+---
🧩
Skill-Anpassung
Neu
skills/ovatics-kundenkommunikation/SKILL.md
## Versandprotokoll
Von Daniel • 2026-04-24 09:26:29.611203
Worum geht es?
Neuer Skill „ovatics-kundenkommunikation" wird angelegt
Alle gesendeten Nachrichten werden in der SQLite-Datenbank des Messaging Proxy protokolliert:
Technischen Diff anzeigen
--- a/skills/ovatics-kundenkommunikation/SKILL.md
+++ b/skills/ovatics-kundenkommunikation/SKILL.md
@@ -0,0 +1,9 @@
+## Versandprotokoll
+
+Alle gesendeten Nachrichten werden in der SQLite-Datenbank des Messaging Proxy protokolliert:
+
+```
+GET https://messaging.ovatics.de/log?channel=amazon&status=sent
+```
+
+Filter: `channel`, `status` (sent/partial/failed)
🧩
Skill-Anpassung
Neu
skills/ovatics-kundenkommunikation/SKILL.md
## Versandmethoden pro Kanal
Von Daniel • 2026-04-24 09:26:29.610389
Worum geht es?
Neuer Skill „ovatics-kundenkommunikation" wird angelegt
| Kanal | Primaere Methode | Fallback | Status |
Technischen Diff anzeigen
--- a/skills/ovatics-kundenkommunikation/SKILL.md
+++ b/skills/ovatics-kundenkommunikation/SKILL.md
@@ -0,0 +1,12 @@
+## Versandmethoden pro Kanal
+
+| Kanal | Primaere Methode | Fallback | Status |
+|---|---|---|---|
+| Shop (plentyShop) | E-Mail direkt | - | Aktiv |
+| Amazon | SP-API (legalDisclosure) | - | Aktiv |
+| eBay | E-Mail | Trading API (Phase 2) | E-Mail aktiv |
+| Otto | E-Mail | Keine native API | E-Mail aktiv |
+| Kaufland | E-Mail | Ticket-API (nur bestehende) | E-Mail aktiv |
+| Shop Apotheke | E-Mail | API-Research offen | E-Mail aktiv |
+| Temu | E-Mail | API-Research offen | E-Mail aktiv |
+
🧩
Skill-Anpassung
Neu
skills/ovatics-kundenkommunikation/SKILL.md
## Tonalitaet und Sprache
Von Daniel • 2026-04-24 09:26:29.609433
Worum geht es?
Neuer Skill „ovatics-kundenkommunikation" wird angelegt
- Kundenkommunikation immer auf **Deutsch**
Technischen Diff anzeigen
--- a/skills/ovatics-kundenkommunikation/SKILL.md
+++ b/skills/ovatics-kundenkommunikation/SKILL.md
@@ -0,0 +1,9 @@
+## Tonalitaet und Sprache
+
+- Kundenkommunikation immer auf **Deutsch**
+- Hoefliche, professionelle Ansprache
+- "Sie"-Form (nicht "Du")
+- Firmenname: **Ovatics** (nicht "ovatics" oder "OVATICS")
+- Bei Problemen: Loesung anbieten, nicht nur Problem beschreiben
+- Bestellnummer immer mit angeben
+
🧩
Skill-Anpassung
Neu
skills/ovatics-kundenkommunikation/SKILL.md
## Messaging Proxy API
Von Daniel • 2026-04-24 09:26:29.608642
Worum geht es?
Neuer Skill „ovatics-kundenkommunikation" wird angelegt
Dieser Skill enthält alle Informationen, die du brauchst, um auf den Hetzner Linux Server und die Synology NAS-Systeme von Ovatics zuzugreifen. Die Infos hier s…
Technischen Diff anzeigen
--- a/skills/ovatics-infrastruktur/SKILL.md
+++ b/skills/ovatics-infrastruktur/SKILL.md
@@ -0,0 +1,7 @@
+
+# Ovatics Infrastruktur — Server & NAS Zugriff
+
+Dieser Skill enthält alle Informationen, die du brauchst, um auf den Hetzner Linux Server und die Synology NAS-Systeme von Ovatics zuzugreifen. Die Infos hier sind dein Nachschlagewerk — lies sie, bevor du Befehle ausführst oder Infrastruktur-Fragen beantwortest.
+
+---
+
🧩
Skill-Anpassung
Neu
skills/ovatics-infrastruktur/SKILL.md
__frontmatter__
Von Daniel • 2026-04-24 09:26:29.603599
Worum geht es?
Neuer Skill „ovatics-infrastruktur" — Stellt Zugangs- und Infrastrukturinformationen für den Hetzner Linux Server (ovatics-data) und die Synology DiskStations (NAS 1 & NAS 2) bereit.
Technischen Diff anzeigen
--- a/skills/ovatics-infrastruktur/SKILL.md
+++ b/skills/ovatics-infrastruktur/SKILL.md
@@ -0,0 +1,17 @@
+---
+name: ovatics-infrastruktur
+description: >
+ Stellt Zugangs- und Infrastrukturinformationen für den Hetzner Linux Server
+ (ovatics-data) und die Synology DiskStations (NAS 1 & NAS 2) bereit. Verwende
+ diesen Skill bei JEDER Aufgabe, die Server, Docker, SSH, die Remote API, n8n,
+ Logs, Dateizugriff, NAS, Netzwerk, VPN oder Systemadministration betrifft.
+ Trigger-Phrasen: „schau auf dem Server nach", „führe einen Befehl aus",
+ „Docker-Status", „Server-Logs", „NAS-Zugriff", „Remote API", „n8n",
+ „WireGuard", „VPN", „SSH", „Hetzner", „Synology", „DiskStation", „ovatics-data",
+ „was läuft auf dem Server", „Server neustarten", „Dateien auf dem Server",
+ „Backup", „MariaDB", „Datenbank", „Container", „Caddy", „Deployment",
+ „Port". Auch bei indirekten Hinweisen triggern,
+ z.B. „kannst du mal auf dem Server prüfen ob..." oder „ich brauche Daten aus
+ der Datenbank". Wenn unklar ist, ob der Hetzner-Server oder ein anderes System
+ gemeint ist, diesen Skill trotzdem laden — besser einmal zu viel als zu wenig.
+---
🧩
Skill-Anpassung
Neu
skills/ovatics-infrastruktur/SKILL.md
## GOLDENE REGELN
Von Daniel • 2026-04-24 09:26:29.602613
Worum geht es?
Neuer Skill „ovatics-infrastruktur" wird angelegt
1. **NIE blind Container neustarten** → Immer Root Cause zuerst analysieren
Technischen Diff anzeigen
--- a/skills/ovatics-infrastruktur/SKILL.md
+++ b/skills/ovatics-infrastruktur/SKILL.md
@@ -0,0 +1,9 @@
+## GOLDENE REGELN
+
+1. **NIE blind Container neustarten** → Immer Root Cause zuerst analysieren
+2. **NIE Produktivdaten löschen** ohne explizite Bestätigung
+3. **Immer Logs prüfen** bevor Maßnahmen ergriffen werden
+4. **n8n**: IMMER n8n.ovatics.de (Container: ovatics-n8n) verwenden — nie n8n-daniel, n8n-nils oder n8n-ops
+
+---
+
🧩
Skill-Anpassung
Neu
skills/ovatics-infrastruktur/SKILL.md
## 4. Wichtige Hinweise & Troubleshooting
Von Daniel • 2026-04-24 09:26:29.598757
Worum geht es?
Neuer Skill „ovatics-infrastruktur" wird angelegt
- SSH zum Hetzner-Server ist aus dem öffentlichen Internet **gesperrt** (Hetzner Cloud Firewall)
Technischen Diff anzeigen
--- a/skills/ovatics-infrastruktur/SKILL.md
+++ b/skills/ovatics-infrastruktur/SKILL.md
@@ -0,0 +1,22 @@
+## 4. Wichtige Hinweise & Troubleshooting
+
+### Sicherheit
+
+- SSH zum Hetzner-Server ist aus dem öffentlichen Internet **gesperrt** (Hetzner Cloud Firewall)
+- Zugang nur über die Remote API oder im Notfall über die **Hetzner Cloud Console** (browserbasiert)
+- Alle externen Dienste sind durch Authelia geschützt
+
+### WireGuard-VPN Stabilität
+
+- Bei einem DSL-Reconnect kann der WireGuard-Tunnel **bis zu 5 Minuten unterbrochen** sein
+- Ein Cronjob löst DynDNS alle 5 Minuten neu auf und stellt den Tunnel wieder her
+- Wenn die NAS-Systeme kurzzeitig nicht erreichbar sind, 5 Minuten warten und erneut versuchen
+
+### Veraltete Einträge (nicht mehr gültig)
+
+| Was | Status |
+|---|---|
+| IP 192.168.10.206 | Existiert nicht mehr |
+| DNS `nas.ovatics.de` | Existiert nicht mehr |
+
+Falls du auf diese alten Referenzen in Dokumentationen stößt, weise Daniel darauf hin, damit sie korrigiert werden können.
🧩
Skill-Anpassung
Neu
skills/ovatics-infrastruktur/SKILL.md
## 3. Synology DiskStations (NAS)
Von Daniel • 2026-04-24 09:26:29.597957
Worum geht es?
Neuer Skill „ovatics-infrastruktur" wird angelegt
| NAS | Lokale IP | Externe URL | Schutz |
Technischen Diff anzeigen
--- a/skills/ovatics-infrastruktur/SKILL.md
+++ b/skills/ovatics-infrastruktur/SKILL.md
@@ -0,0 +1,24 @@
+## 3. Synology DiskStations (NAS)
+
+### Übersicht
+
+| NAS | Lokale IP | Externe URL | Schutz |
+|---|---|---|---|
+| NAS 1 | 192.168.10.60 | `https://nas1.ovatics.de` | Authelia |
+| NAS 2 | 192.168.10.61 | `https://nas2.ovatics.de` | Authelia |
+
+### Netzwerk-Architektur
+
+Die DiskStations sind **nicht direkt aus dem Internet erreichbar**. Der Zugang funktioniert so:
+
+1. Der Hetzner-Server hat einen WireGuard-VPN-Tunnel ins lokale Netzwerk (192.168.10.0/24)
+2. Caddy auf dem Hetzner-Server agiert als Reverse Proxy → leitet `nas1.ovatics.de` / `nas2.ovatics.de` an die lokalen IPs weiter
+3. Caddy verbindet auf Port 5001 (DSM HTTPS) mit `tls_insecure_skip_verify`
+4. Authelia schützt den Zugang mit Zwei-Faktor-Authentifizierung
+
+### Dateizugriff vom Server aus
+
+Über die Remote API kannst du Shell-Befehle ausführen, die auf die NAS-Systeme zugreifen — z.B. per SMB-Mount oder direktem Netzwerkzugriff auf 192.168.10.60 bzw. 192.168.10.61.
+
+---
+
🧩
Skill-Anpassung
Neu
skills/ovatics-infrastruktur/SKILL.md
## 2. Docker-Standards
Von Daniel • 2026-04-24 09:26:29.597151
Worum geht es?
Neuer Skill „ovatics-infrastruktur" wird angelegt
ovatics-{service-name}
Technischen Diff anzeigen
--- a/skills/ovatics-infrastruktur/SKILL.md
+++ b/skills/ovatics-infrastruktur/SKILL.md
@@ -0,0 +1,39 @@
+## 2. Docker-Standards
+
+### Container-Naming
+
+```
+ovatics-{service-name}
+```
+
+Beispiele: ovatics-cockpit, ovatics-messaging-proxy, ovatics-infra-api
+
+### Port-Zuordnung
+
+Ports binden an `127.0.0.1` (nur Caddy exponiert nach außen).
+Format: `127.0.0.1:{HOST_PORT}:8000`
+
+| Port | Service | Domain |
+|---|---|---|
+| 8091 | Cockpit/Dashboard | ovatics.ovatics.de |
+| 8092 | Infra Status API | remote-api.ovatics.de |
+| 8093 | Messaging Proxy | messaging.ovatics.de |
+| 3742 | KI Validation Proxy | ki-proxy.ovatics.de |
+| 8094 | Kundenportal | lieferanschrift.ovatics.eu |
+
+Neuer Service: nächsten freien Port ab **8095** verwenden.
+
+### Caddy-Konfiguration
+
+Reverse Proxy auf dem Server unter `/etc/caddy/Caddyfile`:
+
+```
+service.ovatics.de {
+ reverse_proxy localhost:PORT
+}
+```
+
+Caddy übernimmt automatisch TLS-Zertifikate (Let's Encrypt).
+
+---
+
🧩
Skill-Anpassung
Neu
skills/ovatics-infrastruktur/SKILL.md
## 1. Hetzner Linux Server (ovatics-data)
Von Daniel • 2026-04-24 09:26:29.596360
Worum geht es?
Neuer Skill „ovatics-infrastruktur" wird angelegt
| Eigenschaft | Wert |
Technischen Diff anzeigen
--- a/skills/ovatics-infrastruktur/SKILL.md
+++ b/skills/ovatics-infrastruktur/SKILL.md
@@ -0,0 +1,65 @@
+## 1. Hetzner Linux Server (ovatics-data)
+
+### Server-Steckbrief
+
+| Eigenschaft | Wert |
+|---|---|
+| Hostname | ovatics-data |
+| IP | 204.168.134.218 |
+| Standort | Helsinki (hel1-dc2) |
+| OS | Ubuntu 24.04 LTS |
+| SSH | Port 22, User `root` — nur über WireGuard-VPN (192.168.10.0/24) |
+
+### Remote API (Claude-Zugriff)
+
+Der Server ist nicht direkt per SSH erreichbar (Hetzner Cloud Firewall blockiert Port 22 aus dem Internet). Stattdessen nutzt du die Remote API:
+
+| Parameter | Wert |
+|---|---|
+| URL | `https://remote-api.ovatics.de` |
+| Auth | Bearer Token |
+| Token-Quelle | ClickUp-Doku: „Linux Server - Server-Steckbrief & Zugaenge" (Operations KB → Datenquellen & Systeme) |
+| Funktionen | Shell-Exec (Root), File R/W, Docker-Status, System-Info |
+
+Beispiel für einen Shell-Befehl über die API:
+
+```bash
+curl -X POST https://remote-api.ovatics.de/exec \
+ -H "Authorization: Bearer " \
+ -H "Content-Type: application/json" \
+ -d '{"command": "ls /opt"}'
+```
+
+Bevor du den Token verwendest, schlage ihn in der ClickUp-Doku nach. Der Token steht dort als Bitwarden-Referenz — nie im Klartext.
+
+### Wichtige Verzeichnisse
+
+| Pfad | Inhalt |
+|---|---|
+| `/opt/ovatics-stack/` | Docker-Stack: Caddy, MariaDB, n8n, GLS-Webhook, Authelia u.a. |
+| `/opt/plenty_scripts/` | Daten-Scripts (PlentyONE-Synchronisation) |
+| `/opt/plenty-sync/` | Daten-Scripts (PlentyONE-Synchronisation) |
+| `/var/log/ovatics/` | Anwendungslogs |
+
+### Datenbank-Passwörter
+
+Die MariaDB-Zugangsdaten liegen im Bitwarden-Vault unter diesen Codes:
+
+| Bitwarden-Code | Zweck |
+|---|---|
+| `[OV-536828]` | DB-Passwort 1 |
+| `[OV-540439]` | DB-Passwort 2 |
+| `[OV-118663]` | DB-Passwort 3 |
+
+Nie Passwörter im Klartext verwenden — immer nur den `[OV-XXXXXX]`-Code referenzieren.
+
+### Zugehörige ClickUp-Dokumentation
+
+Alle Details, Änderungen und erweiterte Informationen findest du in der Operations Knowledge Base unter Datenquellen & Systeme:
+
+- „Linux Server - Server-Steckbrief & Zugaenge" — Vollständiger Steckbrief mit allen Zugangsdaten
+- „Linux Server - Änderungsprotokoll" — Chronologie aller Server-Änderungen
+- „WireGuard VPN & SSH-Firewall - Hetzner Linux Server" — VPN-Konfiguration und Firewall-Regeln
+
+---
+
🧩
Skill-Anpassung
Neu
skills/ovatics-corporate-design/SKILL.md
__preamble__
Von Daniel • 2026-04-24 09:26:29.595573
Worum geht es?
Neuer Skill „ovatics-corporate-design" wird angelegt
Neuer Skill „ovatics-corporate-design" — Wendet die offiziellen Firmen-Brand-Guidelines auf alle erstellten Dokumente an.
Technischen Diff anzeigen
--- a/skills/ovatics-corporate-design/SKILL.md
+++ b/skills/ovatics-corporate-design/SKILL.md
@@ -0,0 +1,9 @@
+---
+name: ovatics-corporate-design
+description: |
+ Wendet die offiziellen Firmen-Brand-Guidelines auf alle erstellten Dokumente an.
+ Nutze diesen Skill bei: Briefen, Anschreiben, E-Mails, Präsentationen, Berichten
+ oder anderen Dokumenten die im Corporate Design erstellt werden sollen. Auch bei:
+ "Schreib einen Brief", "Erstelle ein Anschreiben", "Mach das im Firmen-Design",
+ "Nutze unsere Farben/unser Logo", "Briefkopf verwenden".
+---
🧩
Skill-Anpassung
Neu
skills/ovatics-corporate-design/SKILL.md
## Übersicht
Von Daniel • 2026-04-24 09:26:29.593940
Worum geht es?
Neuer Skill „ovatics-corporate-design" wird angelegt
Dieser Skill enthält das komplette Corporate Design der Ovatics GmbH. Wende diese Richtlinien auf ALLE Dokumente an, die du erstellst.
Technischen Diff anzeigen
--- a/skills/ovatics-corporate-design/SKILL.md
+++ b/skills/ovatics-corporate-design/SKILL.md
@@ -0,0 +1,6 @@
+## Übersicht
+
+Dieser Skill enthält das komplette Corporate Design der Ovatics GmbH. Wende diese Richtlinien auf ALLE Dokumente an, die du erstellst.
+
+**Keywords**: Branding, Corporate Design, Briefkopf, Firmenfarben, Logo, Anschreiben, Brief, Formatierung
+
🧩
Skill-Anpassung
Neu
skills/ovatics-corporate-design/SKILL.md
## Verfügbare Assets
Von Daniel • 2026-04-24 09:26:29.592944
Worum geht es?
Neuer Skill „ovatics-corporate-design" wird angelegt
| Datei | Pfad | Verwendung |
Technischen Diff anzeigen
--- a/skills/ovatics-corporate-design/SKILL.md
+++ b/skills/ovatics-corporate-design/SKILL.md
@@ -0,0 +1,7 @@
+## Verfügbare Assets
+
+| Datei | Pfad | Verwendung |
+|-------|------|------------|
+| **Firmenlogo** | `assets/Everyday Elements_Logo_by Ovatics_farbig auf weiss.png` | Auf allen Dokumenten oben links |
+| **Design-Informationen** | `assets/Everyday Elements_Corporate Identity_1.png` | Basis für alle Briefe und Anschreiben |
+
🧩
Skill-Anpassung
Neu
skills/ovatics-corporate-design/SKILL.md
## Typografie
Von Daniel • 2026-04-24 09:26:29.592137
Worum geht es?
Neuer Skill „ovatics-corporate-design" wird angelegt
- **Headlines**: Montserrat (Bold) — Fallback: Arial Black
Neuer Skill „ovatics-corporate-design" wird angelegt
- Professionell aber zugänglich
Technischen Diff anzeigen
--- a/skills/ovatics-corporate-design/SKILL.md
+++ b/skills/ovatics-corporate-design/SKILL.md
@@ -0,0 +1,8 @@
+## Tonalität
+
+- Professionell aber zugänglich
+- Du-Form für externe Kommunikation mit Teilnehmern
+- Sie-Form für formelle Geschäftskorrespondenz
+- Aktive Sprache, keine Passivkonstruktionen
+- Konkret statt abstrakt
+
🧩
Skill-Anpassung
Neu
skills/ovatics-corporate-design/SKILL.md
## Regeln für Dokumente
Von Daniel • 2026-04-24 09:26:29.590519
Worum geht es?
Neuer Skill „ovatics-corporate-design" wird angelegt
1. Verwende IMMER für einen Brief die Design-Informationen aus `assets/Everyday Elements_Corporate Identity_1.png`
Technischen Diff anzeigen
--- a/skills/ovatics-corporate-design/SKILL.md
+++ b/skills/ovatics-corporate-design/SKILL.md
@@ -0,0 +1,22 @@
+## Regeln für Dokumente
+
+### Briefe und Anschreiben
+1. Verwende IMMER für einen Brief die Design-Informationen aus `assets/Everyday Elements_Corporate Identity_1.png`
+2. Logo oben links, darunter eine graze Trennlinie (#737473)
+3. Absender-Block unter dem Logo: Firmenname, Adresse, Kontakt in Slate Gray (9pt)
+4. Empfänger linksbündig, Datum rechtsbündig
+5. Betreff fett, Fließtext in Montserrat 11pt
+6. Grußformel: "Mit freundlichen Grüßen"
+
+### Allgemeine Dokumente
+1. Logo auf Seite 1 oben links
+2. Headlines in dunkelgrün (#3C5CSE), Montserrat
+3. Fließtext in dunkelgrau (#737473), Montserrat
+4. Akzente sparsam: Farbe 3 (#F4A261) für Linien und Hervorhebungen
+5. Max. 2 Akzentfarben pro Seite
+
+### E-Mails
+1. Kein Logo nötig
+2. Signatur: Name, Position, Ovatics, Website
+3. Tonalität: professionell, Du-Form
+
🧩
Skill-Anpassung
Neu
skills/ovatics-corporate-design/SKILL.md
## Firmeninformationen
Von Daniel • 2026-04-24 09:26:29.589716
Worum geht es?
Neuer Skill „ovatics-corporate-design" wird angelegt
Verwende diesen Skill bei jeder Interaktion mit externen oder internen APIs. Hier sind alle verfuegbaren Systeme, Auth-Methoden und Endpunkte dokumentiert.
Technischen Diff anzeigen
--- a/skills/ovatics-api-landscape/SKILL.md
+++ b/skills/ovatics-api-landscape/SKILL.md
@@ -0,0 +1,5 @@
+
+# Ovatics API Landscape
+
+Verwende diesen Skill bei jeder Interaktion mit externen oder internen APIs. Hier sind alle verfuegbaren Systeme, Auth-Methoden und Endpunkte dokumentiert.
+
🧩
Skill-Anpassung
Neu
skills/ovatics-api-landscape/SKILL.md
__frontmatter__
Von Daniel • 2026-04-24 09:26:29.584250
Worum geht es?
Neuer Skill „ovatics-api-landscape" — Verwende diesen Skill bei jeder Interaktion mit externen oder internen APIs. Dokumentiert alle verfuegbaren Systeme, Auth-Methoden und Endpunkte (PlentyONE, Greyhound, Amazon SP-API, GLS, ClickUp, interne Services).
Technischen Diff anzeigen
--- a/skills/ovatics-api-landscape/SKILL.md
+++ b/skills/ovatics-api-landscape/SKILL.md
@@ -0,0 +1,4 @@
+---
+name: ovatics-api-landscape
+description: Verwende diesen Skill bei jeder Interaktion mit externen oder internen APIs. Dokumentiert alle verfuegbaren Systeme, Auth-Methoden und Endpunkte (PlentyONE, Greyhound, Amazon SP-API, GLS, ClickUp, interne Services).
+---
Neuer Skill „google-chat-notify" — Use this skill whenever the user wants to inform their team via Google Chat about the current conversation, project, or topic being discussed.
Technischen Diff anzeigen
--- a/skills/google-chat-notify/SKILL.md
+++ b/skills/google-chat-notify/SKILL.md
@@ -0,0 +1,17 @@
+
+---
+name: google-chat-notify
+description: >
+ Use this skill whenever the user wants to inform their team via Google Chat about the current conversation, project, or topic being discussed. Trigger on phrases like "Team per Google Chat informieren", "Google Chat Nachricht schreiben", "Team updaten", "Team benachrichtigen", "schreib eine Nachricht an das Team", "informiere das Team", or any similar request to notify colleagues about the current topic. Always use this skill when Google Chat and team notification are mentioned together — even if phrased casually or indirectly.
+---
+
+# Google Chat Team Notification Skill
+
+Dieses Skill sendet drei Nachrichten nacheinander an einen Google Chat Kanal via Webhook:
+
+1. **Headline** – 1 Satz, benennt das Thema
+2. **Kurze Zusammenfassung** – 3–5 Sätze Fließtext
+3. **Strukturierte Details** – mit Abschnitten und Absätzen
+
+---
+
🧩
Skill-Anpassung
Neu
skills/google-chat-notify/SKILL.md
__frontmatter__
Von Daniel • 2026-04-24 09:26:29.570700
Worum geht es?
Neuer Skill „google-chat-notify" — Use this skill whenever the user wants to inform their team via Google Chat about the current conversation, project, or topic being discussed.
Technischen Diff anzeigen
--- a/skills/google-chat-notify/SKILL.md
+++ b/skills/google-chat-notify/SKILL.md
@@ -0,0 +1,4 @@
+---
+name: google-chat-notify
+description: "Use this skill whenever the user wants to inform their team via Google Chat about the current conversation, project, or topic being discussed. Trigger on phrases like \"Team per Google Chat informieren\", \"Google Chat Nachricht schreiben\", \"Team updaten\", \"Team benachrichtigen\", \"schreib eine Nachricht an das Team\", \"informiere das Team\", or any similar request to notify colleagues about the current topic. Always use this skill when Google Chat and team notification are mentioned together — even if phrased casually or indirectly."
+---
🧩
Skill-Anpassung
Neu
skills/google-chat-notify/SKILL.md
## Workflow
Von Daniel • 2026-04-24 09:26:29.569898
Worum geht es?
Neuer Skill „google-chat-notify" wird angelegt
1. Prüfe, ob der Nutzer einen Raumnamen genannt hat (z. B. „schick das an Daniels Notizen").
Technischen Diff anzeigen
--- a/skills/google-chat-notify/SKILL.md
+++ b/skills/google-chat-notify/SKILL.md
@@ -0,0 +1,77 @@
+## Workflow
+
+### Schritt 1: Zielraum bestimmen
+
+1. Prüfe, ob der Nutzer einen Raumnamen genannt hat (z. B. „schick das an Daniels Notizen").
+2. Schlage den Raumnamen in der Tabelle **Bekannte Google Chat Räume** oben nach und verwende die hinterlegte Webhook-URL.
+3. Falls der Raumname nicht in der Tabelle steht, frage den Nutzer:
+ > „Diesen Raum kenne ich noch nicht. Bitte teile mir die Webhook-URL mit, damit ich die Nachricht senden kann. Ich trage sie danach gerne in den Skill ein."
+4. Falls kein Raumname genannt wurde und nur ein Raum bekannt ist, verwende diesen automatisch und weise den Nutzer kurz darauf hin.
+
+---
+
+### Schritt 2: Inhalte aus dem Gespräch ableiten
+
+
+
+Analysiere das aktuelle Gespräch / Projekt und leite folgende drei Inhalte ab:
+
+**Nachricht 1 – Headline** (max. 1 Satz, sachlich):
+Das Thema in einem prägnanten Satz. Kein Emoji, kein Ausrufezeichen.
+Beispiel: `Update: Neue Automatisierung für den Rechnungsversand wurde konzipiert.`
+
+**Nachricht 2 – Kurze Zusammenfassung** (3–5 Sätze, Fließtext):
+Was war das Thema, was wurde erarbeitet, was ist das Ergebnis. Formell, ohne Emojis, ohne Aufzählungspunkte.
+
+**Nachricht 3 – Strukturierte Details** (mit Abschnitten):
+Formatiert mit fetten Überschriften und Zeilenumbrüchen. Empfohlene Abschnitte:
+- `*Thema / Hintergrund:*`
+- `*Was wurde erarbeitet:*`
+- `*Ergebnis / Output:*`
+- `*Nächste Schritte:*` (nur wenn vorhanden)
+
+---
+
+### Schritt 3: Alle drei Nachrichten senden
+
+Sende die Nachrichten nacheinander mit je 1 Sekunde Pause dazwischen.
+
+```javascript
+// Webhook-URL aus dem Verzeichnis oben anhand des genannten Raumnamens auswählen
+const webhookUrl = "";
+
+const messages = [
+ // Nachricht 1: Headline
+ { text: "Update: ." },
+
+ // Nachricht 2: Kurze Zusammenfassung
+ { text: "<3–5 Sätze Fließtext mit Thema, Vorgehen und Ergebnis.>" },
+
+ // Nachricht 3: Strukturierte Details
+ {
+ text: `*Thema / Hintergrund:*\n\n\n*Was wurde erarbeitet:*\n\n\n*Ergebnis / Output:*\n\n\n*Nächste Schritte:*\n`
+ }
+];
+
+for (const payload of messages) {
+ await fetch(webhookUrl, {
+ method: "POST",
+ headers: { "Content-Type": "application/json" },
+ body: JSON.stringify(payload)
+ });
+ await new Promise(resolve => setTimeout(resolve, 1000));
+}
+```
+
+> **Hinweis zu Threading:** Google Chat Webhooks unterstützen kein natives Threading ohne die Chat API mit OAuth. Die drei Nachrichten erscheinen deshalb als separate aufeinanderfolgende Nachrichten im Kanal. Der Nutzer kann im Chat bei Bedarf manuell in einem Thread antworten.
+
+---
+
+### Schritt 4: Bestätigung an den Nutzer
+
+Nach erfolgreichem Versand teile dem Nutzer mit:
+- Dass alle 3 Nachrichten gesendet wurden
+- Zeige eine kompakte Vorschau aller drei Inhalte im Chat
+
+---
+
🧩
Skill-Anpassung
Neu
skills/google-chat-notify/SKILL.md
## Wichtige Hinweise
Von Daniel • 2026-04-24 09:26:29.569089
Worum geht es?
Neuer Skill „google-chat-notify" wird angelegt
- Kein Emoji in den Nachrichten (außer der Nutzer wünscht es explizit)
Technischen Diff anzeigen
--- a/skills/google-chat-notify/SKILL.md
+++ b/skills/google-chat-notify/SKILL.md
@@ -0,0 +1,6 @@
+## Wichtige Hinweise
+
+- Kein Emoji in den Nachrichten (außer der Nutzer wünscht es explizit)
+- Sprache der Nachrichten: immer dieselbe Sprache wie das aktuelle Gespräch (Deutsch wenn auf Deutsch, Englisch wenn auf Englisch)
+- Inhalte immer aus dem tatsächlichen Gesprächsverlauf ableiten — nichts erfinden
+- Falls kein klares Ergebnis vorliegt, diesen Abschnitt weglassen oder als "in Bearbeitung" kennzeichnen
🧩
Skill-Anpassung
Neu
skills/google-chat-notify/SKILL.md
## Bekannte Google Chat Räume (Webhook-Verzeichnis)
Von Daniel • 2026-04-24 09:26:29.568275
Worum geht es?
Neuer Skill „google-chat-notify" wird angelegt
| Raumname | Webhook-URL |
Technischen Diff anzeigen
--- a/skills/google-chat-notify/SKILL.md
+++ b/skills/google-chat-notify/SKILL.md
@@ -0,0 +1,10 @@
+## Bekannte Google Chat Räume (Webhook-Verzeichnis)
+
+| Raumname | Webhook-URL |
+|------------------|-------------|
+| Daniels Notizen | https://chat.googleapis.com/v1/spaces/AAQAG1MwJ5U/messages?key=AIzaSyDdI0hCZtE6vySjMm-WEfRq3CPzqKqqsHI&token=LrjLoLsIDH8h7rFqay510wBHaLy-R_AX-6INiXyaF_E |
+
+> Neue Räume hier eintragen: Raumname + Webhook-URL als neue Zeile ergänzen.
+
+---
+
🧩
Skill-Anpassung
Neu
skills/google-chat-notify/SKILL.md
## Beispiel-Output (Vorschau vor dem Senden)
Von Daniel • 2026-04-24 09:26:29.567471
Worum geht es?
Neuer Skill „google-chat-notify" wird angelegt
Folgende 3 Nachrichten werden an Google Chat gesendet:
Technischen Diff anzeigen
--- a/skills/google-chat-notify/SKILL.md
+++ b/skills/google-chat-notify/SKILL.md
@@ -0,0 +1,25 @@
+## Beispiel-Output (Vorschau vor dem Senden)
+
+```
+Folgende 3 Nachrichten werden an Google Chat gesendet:
+
+[1] Update: Neues Onboarding-Konzept für das Vertriebsteam wurde erarbeitet.
+
+[2] Im heutigen Gespräch wurde das Onboarding-Konzept für neue Vertriebsmitarbeitende überarbeitet. Ausgangspunkt war die bisherige manuelle Einarbeitung ohne strukturierten Leitfaden. Es wurde ein mehrstufiger Plan entwickelt, der Zuständigkeiten, Zeitrahmen und Lernziele definiert. Das Konzept liegt als Entwurf vor und wird in der nächsten Teamrunde besprochen.
+
+[3]
+*Thema / Hintergrund:*
+Überarbeitung des Onboarding-Prozesses für neue Vertriebsmitarbeitende.
+
+*Was wurde erarbeitet:*
+Entwicklung eines strukturierten Einarbeitungsplans mit klaren Phasen, Verantwortlichkeiten und Meilensteinen.
+
+*Ergebnis / Output:*
+Entwurf eines Onboarding-Leitfadens liegt vor.
+
+*Nächste Schritte:*
+Freigabe durch Teamleitung, anschließend Piloteinsatz mit neuem Mitarbeitenden im April.
+```
+
+---
+
🧩
Skill-Anpassung
Neu
skills/frontend-design/SKILL.md
__preamble__
Von Daniel • 2026-04-24 09:26:29.566634
Worum geht es?
Neuer Skill „frontend-design" wird angelegt
This skill guides creation of distinctive, production-grade frontend interfaces that avoid generic "AI slop" aesthetics. Implement real working code with except…
Technischen Diff anzeigen
--- a/skills/frontend-design/SKILL.md
+++ b/skills/frontend-design/SKILL.md
@@ -0,0 +1,5 @@
+
+This skill guides creation of distinctive, production-grade frontend interfaces that avoid generic "AI slop" aesthetics. Implement real working code with exceptional attention to aesthetic details and creative choices.
+
+The user provides frontend requirements: a component, page, application, or interface to build. They may include context about the purpose, audience, or technical constraints.
+
🧩
Skill-Anpassung
Neu
skills/frontend-design/SKILL.md
__frontmatter__
Von Daniel • 2026-04-24 09:26:29.565739
Worum geht es?
Neuer Skill „frontend-design" — Create distinctive, production-grade frontend interfaces with high design quality.
Technischen Diff anzeigen
--- a/skills/frontend-design/SKILL.md
+++ b/skills/frontend-design/SKILL.md
@@ -0,0 +1,5 @@
+---
+name: frontend-design
+description: Create distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, artifacts, posters, or applications (examples include websites, landing pages, dashboards, React components, HTML/CSS layouts, or when styling/beautifying any web UI). Generates creative, polished code and UI design that avoids generic AI aesthetics.
+license: Complete terms in LICENSE.txt
+---
🧩
Skill-Anpassung
Neu
skills/frontend-design/SKILL.md
## Frontend Aesthetics Guidelines
Von Daniel • 2026-04-24 09:26:29.564925
Worum geht es?
Neuer Skill „frontend-design" wird angelegt
- **Typography**: Choose fonts that are beautiful, unique, and interesting. Avoid generic fonts like Arial and Inter; opt instead for distinctive choices that e…
Technischen Diff anzeigen
--- a/skills/frontend-design/SKILL.md
+++ b/skills/frontend-design/SKILL.md
@@ -0,0 +1,16 @@
+## Frontend Aesthetics Guidelines
+
+Focus on:
+- **Typography**: Choose fonts that are beautiful, unique, and interesting. Avoid generic fonts like Arial and Inter; opt instead for distinctive choices that elevate the frontend's aesthetics; unexpected, characterful font choices. Pair a distinctive display font with a refined body font.
+- **Color & Theme**: Commit to a cohesive aesthetic. Use CSS variables for consistency. Dominant colors with sharp accents outperform timid, evenly-distributed palettes.
+- **Motion**: Use animations for effects and micro-interactions. Prioritize CSS-only solutions for HTML. Use Motion library for React when available. Focus on high-impact moments: one well-orchestrated page load with staggered reveals (animation-delay) creates more delight than scattered micro-interactions. Use scroll-triggering and hover states that surprise.
+- **Spatial Composition**: Unexpected layouts. Asymmetry. Overlap. Diagonal flow. Grid-breaking elements. Generous negative space OR controlled density.
+- **Backgrounds & Visual Details**: Create atmosphere and depth rather than defaulting to solid colors. Add contextual effects and textures that match the overall aesthetic. Apply creative forms like gradient meshes, noise textures, geometric patterns, layered transparencies, dramatic shadows, decorative borders, custom cursors, and grain overlays.
+
+NEVER use generic AI-generated aesthetics like overused font families (Inter, Roboto, Arial, system fonts), cliched color schemes (particularly purple gradients on white backgrounds), predictable layouts and component patterns, and cookie-cutter design that lacks context-specific character.
+
+Interpret creatively and make unexpected choices that feel genuinely designed for the context. No design should be the same. Vary between light and dark themes, different fonts, different aesthetics. NEVER converge on common choices (Space Grotesk, for example) across generations.
+
+**IMPORTANT**: Match implementation complexity to the aesthetic vision. Maximalist designs need elaborate code with extensive animations and effects. Minimalist or refined designs need restraint, precision, and careful attention to spacing, typography, and subtle details. Elegance comes from executing the vision well.
+
+Remember: Claude is capable of extraordinary creative work. Don't hold back, show what can truly be created when thinking outside the box and committing fully to a distinctive vision.
🧩
Skill-Anpassung
Neu
skills/frontend-design/SKILL.md
## Design Thinking
Von Daniel • 2026-04-24 09:26:29.564099
Worum geht es?
Neuer Skill „frontend-design" wird angelegt
Before coding, understand the context and commit to a BOLD aesthetic direction:
Technischen Diff anzeigen
--- a/skills/frontend-design/SKILL.md
+++ b/skills/frontend-design/SKILL.md
@@ -0,0 +1,16 @@
+## Design Thinking
+
+Before coding, understand the context and commit to a BOLD aesthetic direction:
+- **Purpose**: What problem does this interface solve? Who uses it?
+- **Tone**: Pick an extreme: brutally minimal, maximalist chaos, retro-futuristic, organic/natural, luxury/refined, playful/toy-like, editorial/magazine, brutalist/raw, art deco/geometric, soft/pastel, industrial/utilitarian, etc. There are so many flavors to choose from. Use these for inspiration but design one that is true to the aesthetic direction.
+- **Constraints**: Technical requirements (framework, performance, accessibility).
+- **Differentiation**: What makes this UNFORGETTABLE? What's the one thing someone will remember?
+
+**CRITICAL**: Choose a clear conceptual direction and execute it with precision. Bold maximalism and refined minimalism both work - the key is intentionality, not intensity.
+
+Then implement working code (HTML/CSS/JS, React, Vue, etc.) that is:
+- Production-grade and functional
+- Visually striking and memorable
+- Cohesive with a clear aesthetic point-of-view
+- Meticulously refined in every detail
+
🧩
Skill-Anpassung
Neu
skills/frontend-design/LICENSE.txt
Von Daniel • 2026-04-24 09:26:29.563263
Worum geht es?
Neuer Skill „frontend-design" wird angelegt
Version 2.0, January 2004
Technischen Diff anzeigen
--- a/skills/frontend-design/LICENSE.txt
+++ b/skills/frontend-design/LICENSE.txt
@@ -0,0 +1,177 @@
+
+ Apache License
+ Version 2.0, January 2004
+ http://www.apache.org/licenses/
+
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+ 1. Definitions.
+
+ "License" shall mean the terms and conditions for use, reproduction,
+ and distribution as defined by Sections 1 through 9 of this document.
+
+ "Licensor" shall mean the copyright owner or entity authorized by
+ the copyright owner that is granting the License.
+
+ "Legal Entity" shall mean the union of the acting entity and all
+ other entities that control, are controlled by, or are under common
+ control with that entity. For the purposes of this definition,
+ "control" means (i) the power, direct or indirect, to cause the
+ direction or management of such entity, whether by contract or
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
+ outstanding shares, or (iii) beneficial ownership of such entity.
+
+ "You" (or "Your") shall mean an individual or Legal Entity
+ exercising permissions granted by this License.
+
+ "Source" form shall mean the preferred form for making modifications,
+ including but not limited to software source code, documentation
+ source, and configuration files.
+
+ "Object" form shall mean any form resulting from mechanical
+ transformation or translation of a Source form, including but
+ not limited to compiled object code, generated documentation,
+ and conversions to other media types.
+
+ "Work" shall mean the work of authorship, whether in Source or
+ Object form, made available under the License, as indicated by a
+ copyright notice that is included in or attached to the work
+ (an example is provided in the Appendix below).
+
+ "Derivative Works" shall mean any work, whether in Source or Object
+ form, that is based on (or derived from) the Work and for which the
+ editorial revisions, annotations, elaborations, or other modifications
+ represent, as a whole, an original work of authorship. For the purposes
+ of this License, Derivative Works shall not include works that remain
+ separable from, or merely link (or bind by name) to the interfaces of,
+ the Work and Derivative Works thereof.
+
+ "Contribution" shall mean any work of authorship, including
+ the original version of the Work and any modifications or additions
+ to that Work or Derivative Works thereof, that is intentionally
+ submitted to Licensor for inclusion in the Work by the copyright owner
+ or by an individual or Legal Entity authorized to submit on behalf of
+ the copyright owner. For the purposes of this definition, "submitted"
+ means any form of electronic, verbal, or written communication sent
+ to the Licensor or its representatives, including but not limited to
+ communication on electronic mailing lists, source code control systems,
+ and issue tracking systems that are managed by, or on behalf of, the
+ Licensor for the purpose of discussing and improving the Work, but
+ excluding communication that is conspicuously marked or otherwise
+ designated in writing by the copyright owner as "Not a Contribution."
+
+ "Contributor" shall mean Licensor and any individual or Legal Entity
+ on behalf of whom a Contribution has been received by Licensor and
+ subsequently incorporated within the Work.
+
+ 2. Grant of Copyright License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ copyright license to reproduce, prepare Derivative Works of,
+ publicly display, publicly perform, sublicense, and distribute the
+ Work and such Derivative Works in Source or Object form.
+
+ 3. Grant of Patent License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ (except as stated in this section) patent license to make, have made,
+ use, offer to sell, sell, import, and otherwise transfer the Work,
+ where such license applies only to those patent claims licensable
+ by such Contributor that are necessarily infringed by their
+ Contribution(s) alone or by combination of their Contribution(s)
+ with the Work to which such Contribution(s) was submitted. If You
+ institute patent litigation against any entity (including a
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
+ or a Contribution incorporated within the Work constitutes direct
+ or contributory patent infringement, then any patent licenses
+ granted to You under this License for that Work shall terminate
+ as of the date such litigation is filed.
+
+ 4. Redistribution. You may reproduce and distribute copies of the
+ Work or Derivative Works thereof in any medium, with or without
+ modifications, and in Source or Object form, provided that You
+ meet the following conditions:
+
+ (a) You must give any other recipients of the Work or
+ Derivative Works a copy of this License; and
+
+ (b) You must cause any modified files to carry prominent notices
+ stating that You changed the files; and
+
+ (c) You must retain, in the Source form of any Derivative Works
+ that You distribute, all copyright, patent, trademark, and
+ attribution notices from the Source form of the Work,
+ excluding those notices that do not pertain to any part of
+ the Derivative Works; and
+
+ (d) If the Work includes a "NOTICE" text file as part of its
+ distribution, then any Derivative Works that You distribute must
+ include a readable copy of the attribution notices contained
+ within such NOTICE file, excluding those notices that do not
+ pertain to any part of the Derivative Works, in at least one
+ of the following places: within a NOTICE text file distributed
+ as part of the Derivative Works; within the Source form or
+ documentation, if provided along with the Derivative Works; or,
+ within a display generated by the Derivative Works, if and
+ wherever such third-party notices normally appear. The contents
+ of the NOTICE file are for informational purposes only and
+ do not modify the License. You may add Your own attribution
+ notices within Derivative Works that You distribute, alongside
+ or as an addendum to the NOTICE text from the Work, provided
+ that such additional attribution notices cannot be construed
+ as modifying the License.
+
+ You may add Your own copyright statement to Your modifications and
+ may provide additional or different license terms and conditions
+ for use, reproduction, or distribution of Your modifications, or
+ for any such Derivative Works as a whole, provided Your use,
+ reproduction, and distribution of the Work otherwise complies with
+ the conditions stated in this License.
+
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
+ any Contribution intentionally submitted for inclusion in the Work
+ by You to the Licensor shall be under the terms and conditions of
+ this License, without any additional terms or conditions.
+ Notwithstanding the above, nothing herein shall supersede or modify
+ the terms of any separate license agreement you may have executed
+ with Licensor regarding such Contributions.
+
+ 6. Trademarks. This License does not grant permission to use the trade
+ names, trademarks, service marks, or product names of the Licensor,
+ except as required for reasonable and customary use in describing the
+ origin of the Work and reproducing the content of the NOTICE file.
+
+ 7. Disclaimer of Warranty. Unless required by applicable law or
+ agreed to in writing, Licensor provides the Work (and each
+ Contributor provides its Contributions) on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ implied, including, without limitation, any warranties or conditions
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+ PARTICULAR PURPOSE. You are solely responsible for determining the
+ appropriateness of using or redistributing the Work and assume any
+ risks associated with Your exercise of permissions under this License.
+
+ 8. Limitation of Liability. In no event and under no legal theory,
+ whether in tort (including negligence), contract, or otherwise,
+ unless required by applicable law (such as deliberate and grossly
+ negligent acts) or agreed to in writing, shall any Contributor be
+ liable to You for damages, including any direct, indirect, special,
+ incidental, or consequential damages of any character arising as a
+ result of this License or out of the use or inability to use the
+ Work (including but not limited to damages for loss of goodwill,
+ work stoppage, computer failure or malfunction, or any and all
+ other commercial damages or losses), even if such Contributor
+ has been advised of the possibility of such damages.
+
+ 9. Accepting Warranty or Additional Liability. While redistributing
+ the Work or Derivative Works thereof, You may choose to offer,
+ and charge a fee for, acceptance of support, warranty, indemnity,
+ or other liability obligations and/or rights consistent with this
+ License. However, in accepting such obligations, You may act only
+ on Your own behalf and on Your sole responsibility, not on behalf
+ of any other Contributor, and only if You agree to indemnify,
+ defend, and hold each Contributor harmless for any liability
+ incurred by, or claims asserted against, such Contributor by reason
+ of your accepting any such warranty or additional liability.
+
+ END OF TERMS AND CONDITIONS
🧩
Skill-Anpassung
Neu
skills/email-sequence/SKILL.md
__preamble__
Von Daniel • 2026-04-24 09:26:29.562473
Worum geht es?
Neuer Skill „email-sequence" wird angelegt
> If you see unfamiliar placeholders or need to check which tools are connected, see [CONNECTORS.md](../../CONNECTORS.md).
Technischen Diff anzeigen
--- a/skills/email-sequence/SKILL.md
+++ b/skills/email-sequence/SKILL.md
@@ -0,0 +1,7 @@
+
+# Email Sequence
+
+> If you see unfamiliar placeholders or need to check which tools are connected, see [CONNECTORS.md](../../CONNECTORS.md).
+
+Design and draft complete email sequences with full copy, timing, branching logic, and performance benchmarks for any lifecycle or campaign use case.
+
🧩
Skill-Anpassung
Neu
skills/email-sequence/SKILL.md
__frontmatter__
Von Daniel • 2026-04-24 09:26:29.561666
Worum geht es?
Neuer Skill „email-sequence" — Design and draft multi-email sequences with full copy, timing, branching logic, exit conditions, and performance benchmarks.
Technischen Diff anzeigen
--- a/skills/email-sequence/SKILL.md
+++ b/skills/email-sequence/SKILL.md
@@ -0,0 +1,5 @@
+---
+name: email-sequence
+description: Design and draft multi-email sequences with full copy, timing, branching logic, exit conditions, and performance benchmarks. Use when building onboarding, lead nurture, re-engagement, win-back, or product launch flows, when you need a complete drip campaign with A/B test suggestions, or when mapping a sequence end-to-end with a flow diagram.
+argument-hint: "[sequence type]"
+---
🧩
Skill-Anpassung
Neu
skills/email-sequence/SKILL.md
## Trigger
Von Daniel • 2026-04-24 09:26:29.560853
Worum geht es?
Neuer Skill „email-sequence" wird angelegt
User runs `/email-sequence` or asks to create, design, build, or draft an email sequence, drip campaign, nurture flow, or onboarding series.
Technischen Diff anzeigen
--- a/skills/email-sequence/SKILL.md
+++ b/skills/email-sequence/SKILL.md
@@ -0,0 +1,4 @@
+## Trigger
+
+User runs `/email-sequence` or asks to create, design, build, or draft an email sequence, drip campaign, nurture flow, or onboarding series.
+
🧩
Skill-Anpassung
Neu
skills/email-sequence/SKILL.md
## Tool Integration
Von Daniel • 2026-04-24 09:26:29.559927
Worum geht es?
Neuer Skill „email-sequence" wird angelegt
- Reference how to set up the sequence as a flow or automation in the platform
Technischen Diff anzeigen
--- a/skills/email-sequence/SKILL.md
+++ b/skills/email-sequence/SKILL.md
@@ -0,0 +1,21 @@
+## Tool Integration
+
+### If ~~email marketing is connected (e.g., Klaviyo, Mailchimp, Customer.io)
+- Reference how to set up the sequence as a flow or automation in the platform
+- Note any platform-specific features to use (e.g., smart send time, conditional splits, A/B testing)
+- Map the branching logic to the platform's visual flow builder concepts
+
+### If ~~marketing automation or ~~CRM is connected (e.g., HubSpot, Marketo)
+- Reference lead scoring data to inform segmentation and exit conditions
+- Use lifecycle stage data to tailor messaging per segment
+- Note how to set enrollment triggers based on CRM properties or list membership
+
+### If no tools are connected
+- Deliver all email content in copy-paste-ready format
+- Include a setup checklist the user can follow in any email platform:
+ 1. Create the automation or flow
+ 2. Set the enrollment trigger
+ 3. Add each email with the specified delays
+ 4. Configure branching and exit conditions
+ 5. Set up tracking for the recommended metrics
+
🧩
Skill-Anpassung
Neu
skills/email-sequence/SKILL.md
## Sequence Type Templates
Von Daniel • 2026-04-24 09:26:29.559100
Worum geht es?
Neuer Skill „email-sequence" wird angelegt
Use these as starting frameworks. Adapt length and content based on the user's goal and audience.
Technischen Diff anzeigen
--- a/skills/email-sequence/SKILL.md
+++ b/skills/email-sequence/SKILL.md
@@ -0,0 +1,28 @@
+## Sequence Type Templates
+
+Use these as starting frameworks. Adapt length and content based on the user's goal and audience.
+
+**Onboarding (5-7 emails over 14-21 days):**
+Welcome and set expectations -- Quick win to demonstrate value -- Core feature deep dive -- Advanced feature or integration -- Social proof and community -- Check-in and feedback request -- Upgrade prompt or next steps
+
+**Lead Nurture (4-6 emails over 3-4 weeks):**
+Value-first educational content -- Pain point identification -- Solution positioning with proof -- Social proof and results -- Soft CTA (trial, demo, resource) -- Direct CTA (buy, book, sign up)
+
+**Re-engagement (3-4 emails over 10-14 days):**
+"We miss you" with a compelling reason to return -- Value reminder highlighting what they are missing -- Incentive or exclusive offer -- Last chance with clear deadline
+
+**Win-back (3-5 emails over 30 days):**
+Friendly check-in asking what went wrong -- What is new since they left -- Special offer or incentive to return -- Feedback request (even if they do not come back) -- Final goodbye with door open
+
+**Product Launch (4-6 emails over 2-3 weeks):**
+Teaser or pre-announcement -- Launch announcement with full details -- Feature spotlight or use case -- Social proof and early results -- Limited-time offer or bonus -- Last chance or reminder
+
+**Event Follow-up (3-4 emails over 7-10 days):**
+Thank you with key takeaways or recordings -- Resource roundup from the event -- Related offer or next step -- Feedback survey
+
+**Upgrade/Upsell (3-5 emails over 2-3 weeks):**
+Usage milestone or success celebration -- Feature gap or limitation they are hitting -- Upgrade benefits with proof -- Limited-time incentive -- Direct comparison of plans
+
+**Educational Drip (5-8 emails over 4-6 weeks):**
+Introduction and what they will learn -- Lesson 1: foundational concept -- Lesson 2: intermediate concept -- Lesson 3: advanced concept -- Practical application or exercise -- Resource roundup -- Graduation and next steps
+
🧩
Skill-Anpassung
Neu
skills/email-sequence/SKILL.md
## Process
Von Daniel • 2026-04-24 09:26:29.558206
Worum geht es?
Neuer Skill „email-sequence" wird angelegt
Before drafting any emails, define the overall sequence architecture:
Technischen Diff anzeigen
--- a/skills/email-sequence/SKILL.md
+++ b/skills/email-sequence/SKILL.md
@@ -0,0 +1,70 @@
+## Process
+
+### 1. Sequence Strategy
+
+Before drafting any emails, define the overall sequence architecture:
+
+- **Narrative arc** — what story does this sequence tell across all emails? What is the emotional and logical progression from first email to last?
+- **Journey mapping** — map each email to a stage of the buyer or user journey (awareness, consideration, decision, activation, expansion)
+- **Escalation logic** — how does the intensity, urgency, or value of each email build on the previous one?
+- **Success definition** — what specific action signals that the sequence has done its job and the recipient should exit?
+
+### 2. Individual Email Design
+
+For each email in the sequence, produce:
+
+#### Subject Line
+- Provide 2-3 options per email
+- Vary approaches: curiosity, benefit-driven, urgency, personalization, question-based
+- Keep under 50 characters where possible; note preview behavior on mobile
+
+#### Preview Text
+- 40-90 characters that complement (not repeat) the subject line
+- Should add context or intrigue that increases open likelihood
+
+#### Email Purpose
+- One sentence explaining why this email exists and what it moves the recipient toward
+
+#### Body Copy
+- Full draft ready to use
+- Clear hierarchy: hook, body, CTA
+- Short paragraphs (2-3 sentences max)
+- Scannable formatting with bold key phrases where appropriate
+- Personalization tokens where relevant (e.g., first name, company name, product used)
+
+#### Primary CTA
+- Button text and destination
+- One primary CTA per email (secondary CTA only if appropriate for the sequence stage)
+
+#### Timing
+- Days after the trigger event or after the previous email
+- Note if timing should adjust based on engagement (e.g., "send sooner if they opened but did not click")
+
+#### Segment/Condition Notes
+- Who receives this email vs. who skips it
+- Any behavioral or attribute-based conditions (e.g., "only send to users who have not completed setup")
+
+### 3. Sequence Logic
+
+Define the flow control for the sequence:
+
+- **Branching conditions** — alternate paths based on engagement. For example:
+ - "If opened email 2 but did not click CTA, send email 2b (softer re-ask) instead of email 3"
+ - "If clicked CTA in email 1, skip email 2 and go directly to email 3"
+- **Exit conditions** — when a recipient converts (completes the desired action), remove them from the sequence. Define what "conversion" means for this sequence.
+- **Re-entry rules** — can someone re-enter the sequence? Under what conditions? (e.g., "if a user churns again 90 days later, re-enter the win-back sequence")
+- **Suppression rules** — do not send if the recipient is already in another active sequence, has unsubscribed from marketing, or has contacted support in the last 48 hours
+
+### 4. Performance Benchmarks
+
+Provide expected benchmarks based on the sequence type so the user can set targets:
+
+| Metric | Onboarding | Lead Nurture | Re-engagement | Win-back |
+|--------|-----------|--------------|---------------|----------|
+| Open rate | 50-70% | 20-30% | 15-25% | 15-20% |
+| Click-through rate | 10-20% | 3-7% | 2-5% | 2-4% |
+| Conversion rate | 15-30% | 2-5% | 3-8% | 1-3% |
+| Unsubscribe rate | <0.5% | <0.5% | 1-2% | 1-3% |
+
+Adjust benchmarks based on industry and audience if the user has provided that context.
+
🧩
Skill-Anpassung
Neu
skills/email-sequence/SKILL.md
## Output
Von Daniel • 2026-04-24 09:26:29.557359
Worum geht es?
Neuer Skill „email-sequence" wird angelegt
Present the complete sequence with the following sections:
Technischen Diff anzeigen
--- a/skills/email-sequence/SKILL.md
+++ b/skills/email-sequence/SKILL.md
@@ -0,0 +1,46 @@
+## Output
+
+Present the complete sequence with the following sections:
+
+### Sequence Overview Table
+
+| # | Subject Line | Purpose | Timing | Primary CTA | Condition |
+|---|-------------|---------|--------|-------------|-----------|
+
+### Full Email Drafts
+Each email with subject line options, preview text, purpose, body copy, CTA, timing, and segment notes.
+
+### Sequence Flow Diagram
+A text-based diagram showing the email flow, branching paths, and exit points. Use a clear format such as:
+
+```
+[Trigger] --> Email 1 (Day 0)
+ |
+ Opened? --Yes--> Email 2 (Day 3)
+ | |
+ No Clicked CTA? --Yes--> [EXIT: Converted]
+ | |
+ v No
+ Email 1b (Day 2) |
+ | v
+ +--------> Email 3 (Day 7)
+ |
+ v
+ Email 4 (Day 10)
+ |
+ [EXIT: Sequence complete]
+```
+
+### Branching Logic Notes
+Summary of all conditions, exits, and suppressions in a reference list.
+
+### A/B Test Suggestions
+- 2-3 recommended A/B tests (subject lines, CTA text, send time, email length)
+- What to test, how to split, and how to measure the winner
+
+### Metrics to Track
+- Primary conversion metric for the sequence
+- Per-email metrics: open rate, CTR, unsubscribe rate
+- Sequence-level metrics: overall conversion rate, time to conversion, drop-off points
+- Recommended review cadence (e.g., "Review performance weekly for the first month, then monthly")
+
🧩
Skill-Anpassung
Neu
skills/email-sequence/SKILL.md
## Inputs
Von Daniel • 2026-04-24 09:26:29.556541
Worum geht es?
Neuer Skill „email-sequence" wird angelegt
Gather the following from the user. If not provided, ask before proceeding:
Technischen Diff anzeigen
--- a/skills/email-sequence/SKILL.md
+++ b/skills/email-sequence/SKILL.md
@@ -0,0 +1,31 @@
+## Inputs
+
+Gather the following from the user. If not provided, ask before proceeding:
+
+1. **Sequence type** — one of:
+ - Onboarding
+ - Lead nurture
+ - Re-engagement
+ - Product launch
+ - Event follow-up
+ - Upgrade/upsell
+ - Win-back
+ - Educational drip
+
+2. **Goal** — what the sequence should achieve (e.g., activate new users, convert leads to customers, reduce churn, drive event attendance, upsell to a higher tier)
+
+3. **Audience** — who receives this sequence, what stage they are at, and any relevant segmentation details (role, industry, behavior triggers, lifecycle stage)
+
+4. **Number of emails** (optional) — if not specified, recommend a count based on the sequence type using the templates in the Sequence Type Templates section below
+
+5. **Timing/cadence preferences** (optional) — desired spacing between emails (e.g., "every 3 days", "weekly", "aggressive first week then taper off")
+
+6. **Brand voice** — if configured in local settings, apply automatically and inform the user. If not configured, ask: "Do you have brand voice guidelines I should follow? If not, I'll use a clear, conversational professional tone."
+
+7. **Additional context** (optional):
+ - Specific offers, discounts, or incentives to include
+ - CTAs or landing pages to link to
+ - Content assets available (blog posts, case studies, videos, guides)
+ - Product features to highlight
+ - Competitor differentiators to reference
+
🧩
Skill-Anpassung
Neu
skills/email-sequence/SKILL.md
## After the Sequence
Von Daniel • 2026-04-24 09:26:29.555708
Worum geht es?
Neuer Skill „email-sequence" wird angelegt
Ask: "Would you like me to:
Technischen Diff anzeigen
--- a/skills/email-sequence/SKILL.md
+++ b/skills/email-sequence/SKILL.md
@@ -0,0 +1,8 @@
+## After the Sequence
+
+Ask: "Would you like me to:
+- Revise the copy or tone for any specific email?
+- Add a branching path for a specific scenario?
+- Create a variation of this sequence for a different audience segment?
+- Draft the A/B test variants for the subject lines?
+- Build a companion sequence (e.g., a post-purchase follow-up after this lead nurture converts)?"
🧩
Skill-Anpassung
Neu
skills/draft-content/SKILL.md
__preamble__
Von Daniel • 2026-04-24 09:26:29.554878
Worum geht es?
Neuer Skill „draft-content" wird angelegt
> If you see unfamiliar placeholders or need to check which tools are connected, see [CONNECTORS.md](../../CONNECTORS.md).
Technischen Diff anzeigen
--- a/skills/draft-content/SKILL.md
+++ b/skills/draft-content/SKILL.md
@@ -0,0 +1,7 @@
+
+# Draft Content
+
+> If you see unfamiliar placeholders or need to check which tools are connected, see [CONNECTORS.md](../../CONNECTORS.md).
+
+Generate marketing content drafts tailored to a specific content type, audience, and brand voice.
+
🧩
Skill-Anpassung
Neu
skills/draft-content/SKILL.md
__frontmatter__
Von Daniel • 2026-04-24 09:26:29.554023
Worum geht es?
Neuer Skill „draft-content" — Draft blog posts, social media, email newsletters, landing pages, press releases, and case studies with channel-specific formatting and SEO recommendations.
Technischen Diff anzeigen
--- a/skills/draft-content/SKILL.md
+++ b/skills/draft-content/SKILL.md
@@ -0,0 +1,5 @@
+---
+name: draft-content
+description: Draft blog posts, social media, email newsletters, landing pages, press releases, and case studies with channel-specific formatting and SEO recommendations. Use when writing any marketing content, when you need headline or subject line options, or when adapting a message for a specific platform, audience, and brand voice.
+argument-hint: ""
+---
🧩
Skill-Anpassung
Neu
skills/draft-content/SKILL.md
## Trigger
Von Daniel • 2026-04-24 09:26:29.553110
Worum geht es?
Neuer Skill „draft-content" wird angelegt
User runs `/draft-content` or asks to draft, write, or create marketing content.
Technischen Diff anzeigen
--- a/skills/draft-content/SKILL.md
+++ b/skills/draft-content/SKILL.md
@@ -0,0 +1,4 @@
+## Trigger
+
+User runs `/draft-content` or asks to draft, write, or create marketing content.
+
🧩
Skill-Anpassung
Neu
skills/draft-content/SKILL.md
## SEO Considerations (for web content)
Von Daniel • 2026-04-24 09:26:29.552288
Worum geht es?
Neuer Skill „draft-content" wird angelegt
For blog posts, landing pages, and other web-facing content:
Technischen Diff anzeigen
--- a/skills/draft-content/SKILL.md
+++ b/skills/draft-content/SKILL.md
@@ -0,0 +1,9 @@
+## SEO Considerations (for web content)
+
+For blog posts, landing pages, and other web-facing content:
+- Suggest a primary keyword based on the topic
+- Recommend keyword placement: headline, first paragraph, subheadings, meta description
+- Suggest internal and external linking opportunities
+- Recommend a meta description (under 160 characters)
+- Note image alt text opportunities
+
🧩
Skill-Anpassung
Neu
skills/draft-content/SKILL.md
## Output
Von Daniel • 2026-04-24 09:26:29.551471
Worum geht es?
Neuer Skill „draft-content" wird angelegt
Present the draft with clear formatting. After the draft, include:
Technischen Diff anzeigen
--- a/skills/draft-content/SKILL.md
+++ b/skills/draft-content/SKILL.md
@@ -0,0 +1,8 @@
+## Output
+
+Present the draft with clear formatting. After the draft, include:
+- A brief note on what brand voice and tone were applied
+- Any SEO recommendations (for web content)
+- Suggestions for next steps (e.g., "Review with your team", "Add customer quotes", "Pair with a visual")
+
+Ask: "Would you like me to revise any section, adjust the tone, or create a variation for a different channel?"
🧩
Skill-Anpassung
Neu
skills/draft-content/SKILL.md
## Inputs
Von Daniel • 2026-04-24 09:26:29.550439
Worum geht es?
Neuer Skill „draft-content" wird angelegt
Gather the following from the user. If not provided, ask before proceeding:
Technischen Diff anzeigen
--- a/skills/draft-content/SKILL.md
+++ b/skills/draft-content/SKILL.md
@@ -0,0 +1,22 @@
+## Inputs
+
+Gather the following from the user. If not provided, ask before proceeding:
+
+1. **Content type** — one of:
+ - Blog post
+ - Social media post (specify platform: LinkedIn, Twitter/X, Instagram, Facebook)
+ - Email newsletter
+ - Landing page copy
+ - Press release
+ - Case study
+
+2. **Topic** — the subject or theme of the content
+
+3. **Target audience** — who this content is for (role, industry, seniority, pain points)
+
+4. **Key messages** — 2-4 main points or takeaways to communicate
+
+5. **Tone** — e.g., authoritative, conversational, inspirational, technical, witty (optional if brand voice is configured)
+
+6. **Length** — target word count or format constraint (e.g., "1000 words", "280 characters", "3 paragraphs")
+
🧩
Skill-Anpassung
Neu
skills/draft-content/SKILL.md
## Content Generation by Type
Von Daniel • 2026-04-24 09:26:29.549594
Worum geht es?
Neuer Skill „draft-content" wird angelegt
- Engaging headline (provide 2-3 options)
Technischen Diff anzeigen
--- a/skills/draft-content/SKILL.md
+++ b/skills/draft-content/SKILL.md
@@ -0,0 +1,56 @@
+## Content Generation by Type
+
+### Blog Post
+- Engaging headline (provide 2-3 options)
+- Introduction with a hook (question, statistic, bold statement, or story)
+- 3-5 organized sections with descriptive subheadings
+- Supporting points, examples, or data references in each section
+- Conclusion with a clear call to action
+- SEO considerations: suggest a primary keyword, include it in the headline and first paragraph, use related keywords in subheadings
+
+### Social Media Post
+- Platform-appropriate format and length
+- Hook in the first line
+- Hashtag suggestions (3-5 relevant hashtags)
+- Call to action or engagement prompt
+- Emoji usage appropriate to brand and platform
+- If LinkedIn: professional framing, paragraph breaks for readability
+- If Twitter/X: concise, punchy, within character limit
+- If Instagram: visual-first language, story-driven, hashtag block
+
+### Email Newsletter
+- Subject line (provide 2-3 options with open-rate considerations)
+- Preview text
+- Greeting
+- Body sections with clear hierarchy
+- Call to action button text
+- Sign-off
+- Unsubscribe note reminder
+
+### Landing Page Copy
+- Headline and subheadline
+- Hero section copy
+- Value propositions (3-4 benefit-driven bullets or sections)
+- Social proof placeholder (suggest testimonial or stat placement)
+- Primary and secondary CTAs
+- FAQ section suggestions
+- SEO: meta title and meta description suggestions
+
+### Press Release
+- Headline following press release conventions
+- Dateline and location
+- Lead paragraph (who, what, when, where, why)
+- Supporting quotes (provide placeholder guidance)
+- Company boilerplate placeholder
+- Media contact placeholder
+- Standard press release formatting
+
+### Case Study
+- Title emphasizing the result
+- Customer overview (industry, size, challenge)
+- Challenge section
+- Solution section (what was implemented)
+- Results section with metrics (prompt user for data)
+- Customer quote placeholder
+- Call to action
+
🧩
Skill-Anpassung
Neu
skills/draft-content/SKILL.md
## Brand Voice
Von Daniel • 2026-04-24 09:26:29.548775
Worum geht es?
Neuer Skill „draft-content" wird angelegt
- If the user has a brand voice configured in their local settings file, apply it automatically. Inform the user that brand voice settings are being applied.
Technischen Diff anzeigen
--- a/skills/draft-content/SKILL.md
+++ b/skills/draft-content/SKILL.md
@@ -0,0 +1,6 @@
+## Brand Voice
+
+- If the user has a brand voice configured in their local settings file, apply it automatically. Inform the user that brand voice settings are being applied.
+- If no brand voice is configured, ask: "Do you have brand voice guidelines you'd like me to follow? If not, I'll use a neutral professional tone."
+- Apply the specified or default tone consistently throughout the draft.
+
--- a/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/xml.xsd
+++ b/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/xml.xsd
@@ -0,0 +1,116 @@
+
+
+
+
+
+ See http://www.w3.org/XML/1998/namespace.html and
+ http://www.w3.org/TR/REC-xml for information about this namespace.
+
+ This schema document describes the XML namespace, in a form
+ suitable for import by other schema documents.
+
+ Note that local names in this namespace are intended to be defined
+ only by the World Wide Web Consortium or its subgroups. The
+ following names are currently defined in this namespace and should
+ not be used with conflicting semantics by any Working Group,
+ specification, or document instance:
+
+ base (as an attribute name): denotes an attribute whose value
+ provides a URI to be used as the base for interpreting any
+ relative URIs in the scope of the element on which it
+ appears; its value is inherited. This name is reserved
+ by virtue of its definition in the XML Base specification.
+
+ lang (as an attribute name): denotes an attribute whose value
+ is a language code for the natural language of the content of
+ any element; its value is inherited. This name is reserved
+ by virtue of its definition in the XML specification.
+
+ space (as an attribute name): denotes an attribute whose
+ value is a keyword indicating what whitespace processing
+ discipline is intended for the content of the element; its
+ value is inherited. This name is reserved by virtue of its
+ definition in the XML specification.
+
+ Father (in any context at all): denotes Jon Bosak, the chair of
+ the original XML Working Group. This name is reserved by
+ the following decision of the W3C XML Plenary and
+ XML Coordination groups:
+
+ In appreciation for his vision, leadership and dedication
+ the W3C XML Plenary on this 10th day of February, 2000
+ reserves for Jon Bosak in perpetuity the XML name
+ xml:Father
+
+
+
+
+ This schema defines attributes and an attribute group
+ suitable for use by
+ schemas wishing to allow xml:base, xml:lang or xml:space attributes
+ on elements they define.
+
+ To enable this, such a schema must import this schema
+ for the XML namespace, e.g. as follows:
+ <schema . . .>
+ . . .
+ <import namespace="http://www.w3.org/XML/1998/namespace"
+ schemaLocation="http://www.w3.org/2001/03/xml.xsd"/>
+
+ Subsequently, qualified reference to any of the attributes
+ or the group defined below will have the desired effect, e.g.
+
+ <type . . .>
+ . . .
+ <attributeGroup ref="xml:specialAttrs"/>
+
+ will define a type which will schema-validate an instance
+ element with any of those attributes
+
+
+
+ In keeping with the XML Schema WG's standard versioning
+ policy, this schema document will persist at
+ http://www.w3.org/2001/03/xml.xsd.
+ At the date of issue it can also be found at
+ http://www.w3.org/2001/xml.xsd.
+ The schema document at that URI may however change in the future,
+ in order to remain compatible with the latest version of XML Schema
+ itself. In other words, if the XML Schema namespace changes, the version
+ of this document at
+ http://www.w3.org/2001/xml.xsd will change
+ accordingly; the version at
+ http://www.w3.org/2001/03/xml.xsd will not change.
+
+
+
+
+
+ In due course, we should install the relevant ISO 2- and 3-letter
+ codes as the enumerated possible values . . .
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ See http://www.w3.org/TR/xmlbase/ for
+ information about this attribute.
+
+
+
+
+
+
+
+
+
+
Neuer Skill „docx" — Use this skill whenever the user wants to create, read, edit, or manipulate Word documents (.docx files).
Technischen Diff anzeigen
--- a/skills/docx/SKILL.md
+++ b/skills/docx/SKILL.md
@@ -0,0 +1,5 @@
+---
+name: docx
+description: "Use this skill whenever the user wants to create, read, edit, or manipulate Word documents (.docx files). Triggers include: any mention of 'Word doc', 'word document', '.docx', or requests to produce professional documents with formatting like tables of contents, headings, page numbers, or letterheads. Also use when extracting or reorganizing content from .docx files, inserting or replacing images in documents, performing find-and-replace in Word files, working with tracked changes or comments, or converting content into a polished Word document. If the user asks for a 'report', 'memo', 'letter', 'template', or similar deliverable as a Word or .docx file, use this skill. Do NOT use for PDFs, spreadsheets, Google Docs, or general coding tasks unrelated to document generation."
+license: Proprietary. LICENSE.txt has complete terms
+---
🧩
Skill-Anpassung
Neu
skills/docx/SKILL.md
## XML Reference
Von Daniel • 2026-04-24 09:26:29.496269
Worum geht es?
Neuer Skill „docx" wird angelegt
- **Element order in `<w:pPr>`**: `<w:pStyle>`, `<w:numPr>`, `<w:spacing>`, `<w:ind>`, `<w:jc>`, `<w:rPr>` last
Technischen Diff anzeigen
--- a/skills/docx/SKILL.md
+++ b/skills/docx/SKILL.md
@@ -0,0 +1,129 @@
+## XML Reference
+
+### Schema Compliance
+
+- **Element order in ``**: ``, ``, ``, ``, ``, `` last
+- **Whitespace**: Add `xml:space="preserve"` to `` with leading/trailing spaces
+- **RSIDs**: Must be 8-digit hex (e.g., `00AB1234`)
+
+### Tracked Changes
+
+**Insertion:**
+```xml
+
+ inserted text
+
+```
+
+**Deletion:**
+```xml
+
+ deleted text
+
+```
+
+**Inside ``**: Use `` instead of ``, and `` instead of ``.
+
+**Minimal edits** - only mark what changes:
+```xml
+
+The term is
+
+ 30
+
+
+ 60
+
+ days.
+```
+
+**Deleting entire paragraphs/list items** - when removing ALL content from a paragraph, also mark the paragraph mark as deleted so it merges with the next paragraph. Add `` inside ``:
+```xml
+
+
+ ...
+
+
+
+
+
+ Entire paragraph content being deleted...
+
+
+```
+Without the `` in ``, accepting changes leaves an empty paragraph/list item.
+
+**Rejecting another author's insertion** - nest deletion inside their insertion:
+```xml
+
+
+ their inserted text
+
+
+```
+
+**Restoring another author's deletion** - add insertion after (don't modify their deletion):
+```xml
+
+ deleted text
+
+
+ deleted text
+
+```
+
+### Comments
+
+After running `comment.py` (see Step 2), add markers to document.xml. For replies, use `--parent` flag and nest markers inside the parent's.
+
+**CRITICAL: `` and `` are siblings of ``, never inside ``.**
+
+```xml
+
+
+
+ deleted
+
+ more text
+
+
+
+
+
+
+ text
+
+
+
+
+```
+
+### Images
+
+1. Add image file to `word/media/`
+2. Add relationship to `word/_rels/document.xml.rels`:
+```xml
+
+```
+3. Add content type to `[Content_Types].xml`:
+```xml
+
+```
+4. Reference in document.xml:
+```xml
+
+
+
+
+
+
+
+
+
+
+
+
+```
+
+---
+
🧩
Skill-Anpassung
Neu
skills/docx/SKILL.md
## Quick Reference
Von Daniel • 2026-04-24 09:26:29.495489
Worum geht es?
Neuer Skill „docx" wird angelegt
| Task | Approach |
Technischen Diff anzeigen
--- a/skills/docx/SKILL.md
+++ b/skills/docx/SKILL.md
@@ -0,0 +1,43 @@
+## Quick Reference
+
+| Task | Approach |
+|------|----------|
+| Read/analyze content | `pandoc` or unpack for raw XML |
+| Create new document | Use `docx-js` - see Creating New Documents below |
+| Edit existing document | Unpack → edit XML → repack - see Editing Existing Documents below |
+
+### Converting .doc to .docx
+
+Legacy `.doc` files must be converted before editing:
+
+```bash
+python scripts/office/soffice.py --headless --convert-to docx document.doc
+```
+
+### Reading Content
+
+```bash
+# Text extraction with tracked changes
+pandoc --track-changes=all document.docx -o output.md
+
+# Raw XML access
+python scripts/office/unpack.py document.docx unpacked/
+```
+
+### Converting to Images
+
+```bash
+python scripts/office/soffice.py --headless --convert-to pdf document.docx
+pdftoppm -jpeg -r 150 document.pdf page
+```
+
+### Accepting Tracked Changes
+
+To produce a clean document with all tracked changes accepted (requires LibreOffice):
+
+```bash
+python scripts/accept_changes.py input.docx output.docx
+```
+
+---
+
🧩
Skill-Anpassung
Neu
skills/docx/SKILL.md
## Overview
Von Daniel • 2026-04-24 09:26:29.494672
Worum geht es?
Neuer Skill „docx" wird angelegt
A .docx file is a ZIP archive containing XML files.
Technischen Diff anzeigen
--- a/skills/docx/SKILL.md
+++ b/skills/docx/SKILL.md
@@ -0,0 +1,4 @@
+## Overview
+
+A .docx file is a ZIP archive containing XML files.
+
🧩
Skill-Anpassung
Neu
skills/docx/SKILL.md
## Editing Existing Documents
Von Daniel • 2026-04-24 09:26:29.493861
Worum geht es?
Neuer Skill „docx" wird angelegt
**Follow all 3 steps in order.**
Technischen Diff anzeigen
--- a/skills/docx/SKILL.md
+++ b/skills/docx/SKILL.md
@@ -0,0 +1,58 @@
+## Editing Existing Documents
+
+**Follow all 3 steps in order.**
+
+### Step 1: Unpack
+```bash
+python scripts/office/unpack.py document.docx unpacked/
+```
+Extracts XML, pretty-prints, merges adjacent runs, and converts smart quotes to XML entities (`“` etc.) so they survive editing. Use `--merge-runs false` to skip run merging.
+
+### Step 2: Edit XML
+
+Edit files in `unpacked/word/`. See XML Reference below for patterns.
+
+**Use "Claude" as the author** for tracked changes and comments, unless the user explicitly requests use of a different name.
+
+**Use the Edit tool directly for string replacement. Do not write Python scripts.** Scripts introduce unnecessary complexity. The Edit tool shows exactly what is being replaced.
+
+**CRITICAL: Use smart quotes for new content.** When adding text with apostrophes or quotes, use XML entities to produce smart quotes:
+```xml
+
+Here’s a quote: “Hello”
+```
+| Entity | Character |
+|--------|-----------|
+| `‘` | ‘ (left single) |
+| `’` | ’ (right single / apostrophe) |
+| `“` | “ (left double) |
+| `”` | ” (right double) |
+
+**Adding comments:** Use `comment.py` to handle boilerplate across multiple XML files (text must be pre-escaped XML):
+```bash
+python scripts/comment.py unpacked/ 0 "Comment text with & and ’"
+python scripts/comment.py unpacked/ 1 "Reply text" --parent 0 # reply to comment 0
+python scripts/comment.py unpacked/ 0 "Text" --author "Custom Author" # custom author name
+```
+Then add markers to document.xml (see Comments in XML Reference).
+
+### Step 3: Pack
+```bash
+python scripts/office/pack.py unpacked/ output.docx --original document.docx
+```
+Validates with auto-repair, condenses XML, and creates DOCX. Use `--validate false` to skip.
+
+**Auto-repair will fix:**
+- `durableId` >= 0x7FFFFFFF (regenerates valid ID)
+- Missing `xml:space="preserve"` on `` with whitespace
+
+**Auto-repair won't fix:**
+- Malformed XML, invalid element nesting, missing relationships, schema violations
+
+### Common Pitfalls
+
+- **Replace entire `` elements**: When adding tracked changes, replace the whole `...` block with `......` as siblings. Don't inject tracked change tags inside a run.
+- **Preserve `` formatting**: Copy the original run's `` block into your tracked change runs to maintain bold, font size, etc.
+
+---
+
🧩
Skill-Anpassung
Neu
skills/docx/SKILL.md
## Dependencies
Von Daniel • 2026-04-24 09:26:29.493015
Worum geht es?
Neuer Skill „docx" wird angelegt
- **pandoc**: Text extraction
Technischen Diff anzeigen
--- a/skills/docx/SKILL.md
+++ b/skills/docx/SKILL.md
@@ -0,0 +1,6 @@
+## Dependencies
+
+- **pandoc**: Text extraction
+- **docx**: `npm install -g docx` (new documents)
+- **LibreOffice**: PDF conversion (auto-configured for sandboxed environments via `scripts/office/soffice.py`)
+- **Poppler**: `pdftoppm` for images
🧩
Skill-Anpassung
Neu
skills/docx/SKILL.md
## Creating New Documents
Von Daniel • 2026-04-24 09:26:29.492195
Worum geht es?
Neuer Skill „docx" wird angelegt
Generate .docx files with JavaScript, then validate. Install: `npm install -g docx`
Technischen Diff anzeigen
--- a/skills/docx/SKILL.md
+++ b/skills/docx/SKILL.md
@@ -0,0 +1,342 @@
+## Creating New Documents
+
+Generate .docx files with JavaScript, then validate. Install: `npm install -g docx`
+
+### Setup
+```javascript
+const { Document, Packer, Paragraph, TextRun, Table, TableRow, TableCell, ImageRun,
+ Header, Footer, AlignmentType, PageOrientation, LevelFormat, ExternalHyperlink,
+ InternalHyperlink, Bookmark, FootnoteReferenceRun, PositionalTab,
+ PositionalTabAlignment, PositionalTabRelativeTo, PositionalTabLeader,
+ TabStopType, TabStopPosition, Column, SectionType,
+ TableOfContents, HeadingLevel, BorderStyle, WidthType, ShadingType,
+ VerticalAlign, PageNumber, PageBreak } = require('docx');
+
+const doc = new Document({ sections: [{ children: [/* content */] }] });
+Packer.toBuffer(doc).then(buffer => fs.writeFileSync("doc.docx", buffer));
+```
+
+### Validation
+After creating the file, validate it. If validation fails, unpack, fix the XML, and repack.
+```bash
+python scripts/office/validate.py doc.docx
+```
+
+### Page Size
+
+```javascript
+// CRITICAL: docx-js defaults to A4, not US Letter
+// Always set page size explicitly for consistent results
+sections: [{
+ properties: {
+ page: {
+ size: {
+ width: 12240, // 8.5 inches in DXA
+ height: 15840 // 11 inches in DXA
+ },
+ margin: { top: 1440, right: 1440, bottom: 1440, left: 1440 } // 1 inch margins
+ }
+ },
+ children: [/* content */]
+}]
+```
+
+**Common page sizes (DXA units, 1440 DXA = 1 inch):**
+
+| Paper | Width | Height | Content Width (1" margins) |
+|-------|-------|--------|---------------------------|
+| US Letter | 12,240 | 15,840 | 9,360 |
+| A4 (default) | 11,906 | 16,838 | 9,026 |
+
+**Landscape orientation:** docx-js swaps width/height internally, so pass portrait dimensions and let it handle the swap:
+```javascript
+size: {
+ width: 12240, // Pass SHORT edge as width
+ height: 15840, // Pass LONG edge as height
+ orientation: PageOrientation.LANDSCAPE // docx-js swaps them in the XML
+},
+// Content width = 15840 - left margin - right margin (uses the long edge)
+```
+
+### Styles (Override Built-in Headings)
+
+Use Arial as the default font (universally supported). Keep titles black for readability.
+
+```javascript
+const doc = new Document({
+ styles: {
+ default: { document: { run: { font: "Arial", size: 24 } } }, // 12pt default
+ paragraphStyles: [
+ // IMPORTANT: Use exact IDs to override built-in styles
+ { id: "Heading1", name: "Heading 1", basedOn: "Normal", next: "Normal", quickFormat: true,
+ run: { size: 32, bold: true, font: "Arial" },
+ paragraph: { spacing: { before: 240, after: 240 }, outlineLevel: 0 } }, // outlineLevel required for TOC
+ { id: "Heading2", name: "Heading 2", basedOn: "Normal", next: "Normal", quickFormat: true,
+ run: { size: 28, bold: true, font: "Arial" },
+ paragraph: { spacing: { before: 180, after: 180 }, outlineLevel: 1 } },
+ ]
+ },
+ sections: [{
+ children: [
+ new Paragraph({ heading: HeadingLevel.HEADING_1, children: [new TextRun("Title")] }),
+ ]
+ }]
+});
+```
+
+### Lists (NEVER use unicode bullets)
+
+```javascript
+// ❌ WRONG - never manually insert bullet characters
+new Paragraph({ children: [new TextRun("• Item")] }) // BAD
+new Paragraph({ children: [new TextRun("\u2022 Item")] }) // BAD
+
+// ✅ CORRECT - use numbering config with LevelFormat.BULLET
+const doc = new Document({
+ numbering: {
+ config: [
+ { reference: "bullets",
+ levels: [{ level: 0, format: LevelFormat.BULLET, text: "•", alignment: AlignmentType.LEFT,
+ style: { paragraph: { indent: { left: 720, hanging: 360 } } } }] },
+ { reference: "numbers",
+ levels: [{ level: 0, format: LevelFormat.DECIMAL, text: "%1.", alignment: AlignmentType.LEFT,
+ style: { paragraph: { indent: { left: 720, hanging: 360 } } } }] },
+ ]
+ },
+ sections: [{
+ children: [
+ new Paragraph({ numbering: { reference: "bullets", level: 0 },
+ children: [new TextRun("Bullet item")] }),
+ new Paragraph({ numbering: { reference: "numbers", level: 0 },
+ children: [new TextRun("Numbered item")] }),
+ ]
+ }]
+});
+
+// ⚠️ Each reference creates INDEPENDENT numbering
+// Same reference = continues (1,2,3 then 4,5,6)
+// Different reference = restarts (1,2,3 then 1,2,3)
+```
+
+### Tables
+
+**CRITICAL: Tables need dual widths** - set both `columnWidths` on the table AND `width` on each cell. Without both, tables render incorrectly on some platforms.
+
+```javascript
+// CRITICAL: Always set table width for consistent rendering
+// CRITICAL: Use ShadingType.CLEAR (not SOLID) to prevent black backgrounds
+const border = { style: BorderStyle.SINGLE, size: 1, color: "CCCCCC" };
+const borders = { top: border, bottom: border, left: border, right: border };
+
+new Table({
+ width: { size: 9360, type: WidthType.DXA }, // Always use DXA (percentages break in Google Docs)
+ columnWidths: [4680, 4680], // Must sum to table width (DXA: 1440 = 1 inch)
+ rows: [
+ new TableRow({
+ children: [
+ new TableCell({
+ borders,
+ width: { size: 4680, type: WidthType.DXA }, // Also set on each cell
+ shading: { fill: "D5E8F0", type: ShadingType.CLEAR }, // CLEAR not SOLID
+ margins: { top: 80, bottom: 80, left: 120, right: 120 }, // Cell padding (internal, not added to width)
+ children: [new Paragraph({ children: [new TextRun("Cell")] })]
+ })
+ ]
+ })
+ ]
+})
+```
+
+**Table width calculation:**
+
+Always use `WidthType.DXA` — `WidthType.PERCENTAGE` breaks in Google Docs.
+
+```javascript
+// Table width = sum of columnWidths = content width
+// US Letter with 1" margins: 12240 - 2880 = 9360 DXA
+width: { size: 9360, type: WidthType.DXA },
+columnWidths: [7000, 2360] // Must sum to table width
+```
+
+**Width rules:**
+- **Always use `WidthType.DXA`** — never `WidthType.PERCENTAGE` (incompatible with Google Docs)
+- Table width must equal the sum of `columnWidths`
+- Cell `width` must match corresponding `columnWidth`
+- Cell `margins` are internal padding - they reduce content area, not add to cell width
+- For full-width tables: use content width (page width minus left and right margins)
+
+### Images
+
+```javascript
+// CRITICAL: type parameter is REQUIRED
+new Paragraph({
+ children: [new ImageRun({
+ type: "png", // Required: png, jpg, jpeg, gif, bmp, svg
+ data: fs.readFileSync("image.png"),
+ transformation: { width: 200, height: 150 },
+ altText: { title: "Title", description: "Desc", name: "Name" } // All three required
+ })]
+})
+```
+
+### Page Breaks
+
+```javascript
+// CRITICAL: PageBreak must be inside a Paragraph
+new Paragraph({ children: [new PageBreak()] })
+
+// Or use pageBreakBefore
+new Paragraph({ pageBreakBefore: true, children: [new TextRun("New page")] })
+```
+
+### Hyperlinks
+
+```javascript
+// External link
+new Paragraph({
+ children: [new ExternalHyperlink({
+ children: [new TextRun({ text: "Click here", style: "Hyperlink" })],
+ link: "https://example.com",
+ })]
+})
+
+// Internal link (bookmark + reference)
+// 1. Create bookmark at destination
+new Paragraph({ heading: HeadingLevel.HEADING_1, children: [
+ new Bookmark({ id: "chapter1", children: [new TextRun("Chapter 1")] }),
+]})
+// 2. Link to it
+new Paragraph({ children: [new InternalHyperlink({
+ children: [new TextRun({ text: "See Chapter 1", style: "Hyperlink" })],
+ anchor: "chapter1",
+})]})
+```
+
+### Footnotes
+
+```javascript
+const doc = new Document({
+ footnotes: {
+ 1: { children: [new Paragraph("Source: Annual Report 2024")] },
+ 2: { children: [new Paragraph("See appendix for methodology")] },
+ },
+ sections: [{
+ children: [new Paragraph({
+ children: [
+ new TextRun("Revenue grew 15%"),
+ new FootnoteReferenceRun(1),
+ new TextRun(" using adjusted metrics"),
+ new FootnoteReferenceRun(2),
+ ],
+ })]
+ }]
+});
+```
+
+### Tab Stops
+
+```javascript
+// Right-align text on same line (e.g., date opposite a title)
+new Paragraph({
+ children: [
+ new TextRun("Company Name"),
+ new TextRun("\tJanuary 2025"),
+ ],
+ tabStops: [{ type: TabStopType.RIGHT, position: TabStopPosition.MAX }],
+})
+
+// Dot leader (e.g., TOC-style)
+new Paragraph({
+ children: [
+ new TextRun("Introduction"),
+ new TextRun({ children: [
+ new PositionalTab({
+ alignment: PositionalTabAlignment.RIGHT,
+ relativeTo: PositionalTabRelativeTo.MARGIN,
+ leader: PositionalTabLeader.DOT,
+ }),
+ "3",
+ ]}),
+ ],
+})
+```
+
+### Multi-Column Layouts
+
+```javascript
+// Equal-width columns
+sections: [{
+ properties: {
+ column: {
+ count: 2, // number of columns
+ space: 720, // gap between columns in DXA (720 = 0.5 inch)
+ equalWidth: true,
+ separate: true, // vertical line between columns
+ },
+ },
+ children: [/* content flows naturally across columns */]
+}]
+
+// Custom-width columns (equalWidth must be false)
+sections: [{
+ properties: {
+ column: {
+ equalWidth: false,
+ children: [
+ new Column({ width: 5400, space: 720 }),
+ new Column({ width: 3240 }),
+ ],
+ },
+ },
+ children: [/* content */]
+}]
+```
+
+Force a column break with a new section using `type: SectionType.NEXT_COLUMN`.
+
+### Table of Contents
+
+```javascript
+// CRITICAL: Headings must use HeadingLevel ONLY - no custom styles
+new TableOfContents("Table of Contents", { hyperlink: true, headingStyleRange: "1-3" })
+```
+
+### Headers/Footers
+
+```javascript
+sections: [{
+ properties: {
+ page: { margin: { top: 1440, right: 1440, bottom: 1440, left: 1440 } } // 1440 = 1 inch
+ },
+ headers: {
+ default: new Header({ children: [new Paragraph({ children: [new TextRun("Header")] })] })
+ },
+ footers: {
+ default: new Footer({ children: [new Paragraph({
+ children: [new TextRun("Page "), new TextRun({ children: [PageNumber.CURRENT] })]
+ })] })
+ },
+ children: [/* content */]
+}]
+```
+
+### Critical Rules for docx-js
+
+- **Set page size explicitly** - docx-js defaults to A4; use US Letter (12240 x 15840 DXA) for US documents
+- **Landscape: pass portrait dimensions** - docx-js swaps width/height internally; pass short edge as `width`, long edge as `height`, and set `orientation: PageOrientation.LANDSCAPE`
+- **Never use `\n`** - use separate Paragraph elements
+- **Never use unicode bullets** - use `LevelFormat.BULLET` with numbering config
+- **PageBreak must be in Paragraph** - standalone creates invalid XML
+- **ImageRun requires `type`** - always specify png/jpg/etc
+- **Always set table `width` with DXA** - never use `WidthType.PERCENTAGE` (breaks in Google Docs)
+- **Tables need dual widths** - `columnWidths` array AND cell `width`, both must match
+- **Table width = sum of columnWidths** - for DXA, ensure they add up exactly
+- **Always add cell margins** - use `margins: { top: 80, bottom: 80, left: 120, right: 120 }` for readable padding
+- **Use `ShadingType.CLEAR`** - never SOLID for table shading
+- **Never use tables as dividers/rules** - cells have minimum height and render as empty boxes (including in headers/footers); use `border: { bottom: { style: BorderStyle.SINGLE, size: 6, color: "2E75B6", space: 1 } }` on a Paragraph instead. For two-column footers, use tab stops (see Tab Stops section), not tables
+- **TOC requires HeadingLevel only** - no custom styles on heading paragraphs
+- **Override built-in styles** - use exact IDs: "Heading1", "Heading2", etc.
+- **Include `outlineLevel`** - required for TOC (0 for H1, 1 for H2, etc.)
+
+---
+
Three complete plugin structures at different complexity levels. Use these as templates when implementing in Phase 4.
Technischen Diff anzeigen
--- a/skills/create-cowork-plugin/references/example-plugins.md
+++ b/skills/create-cowork-plugin/references/example-plugins.md
@@ -0,0 +1,4 @@
+# Example Plugins
+
+Three complete plugin structures at different complexity levels. Use these as templates when implementing in Phase 4.
+
Neuer Skill „create-cowork-plugin" — Review code changes for style and quality issues. Use when the user asks to review my changes", "check this diff", "review for style violations", or wants a code quality pass on uncommitted work.
Technischen Diff anzeigen
--- a/skills/create-cowork-plugin/references/example-plugins.md
+++ b/skills/create-cowork-plugin/references/example-plugins.md
@@ -0,0 +1,103 @@
+## Standard Plugin: Skills + MCP
+
+A plugin that combines domain knowledge, user-initiated actions, and external service integration.
+
+### Structure
+
+```
+code-quality/
+├── .claude-plugin/
+│ └── plugin.json
+├── skills/
+│ ├── coding-standards/
+│ │ ├── SKILL.md
+│ │ └── references/
+│ │ └── style-rules.md
+│ ├── review-changes/
+│ │ └── SKILL.md
+│ └── fix-lint/
+│ └── SKILL.md
+├── .mcp.json
+└── README.md
+```
+
+### plugin.json
+
+```json
+{
+ "name": "code-quality",
+ "version": "0.1.0",
+ "description": "Enforce coding standards with reviews, linting, and style guidance",
+ "author": {
+ "name": "User"
+ }
+}
+```
+
+### skills/review-changes/SKILL.md
+
+```markdown
+---
+name: review-changes
+description: >
+ Review code changes for style and quality issues. Use when the user asks to
+ "review my changes", "check this diff", "review for style violations", or
+ wants a code quality pass on uncommitted work.
+---
+
+Run `git diff --name-only` to get the list of changed files.
+
+For each changed file:
+
+1. Read the file
+2. Check against the coding-standards skill for style violations
+3. Identify potential bugs or anti-patterns
+4. Flag any security concerns
+
+Present a summary with:
+
+- File path
+- Issue severity (Error, Warning, Info)
+- Description and suggested fix
+```
+
+### skills/fix-lint/SKILL.md
+
+```markdown
+---
+name: fix-lint
+description: >
+ Auto-fix linting issues in changed files. Use when the user asks to
+ "fix lint errors", "clean up linting", or "auto-fix my lint issues".
+---
+
+Run the linter: `npm run lint -- --format json 2>&1`
+
+Parse the linter output and fix each issue:
+
+- For auto-fixable issues, apply the fix directly
+- For manual-fix issues, make the correction following project conventions
+- Skip issues that require architectural changes
+
+After all fixes, run the linter again to confirm clean output.
+```
+
+### skills/coding-standards/SKILL.md
+
+```yaml
+---
+name: coding-standards
+description: >
+ This skill should be used when the user asks about "coding standards",
+ "style guide", "naming conventions", "code formatting rules", or needs
+ guidance on project-specific code quality expectations.
+metadata:
+ version: "0.1.0"
+---
+```
+
+```markdown
+# Coding Standards
+
+Project coding standards and conventions for consistent, high-quality code.
+
Neuer Skill „create-cowork-plugin" — Generate structured meeting notes from a transcript. Use when the user asks to "summarize this meeting", "create meeting notes", "extract action items from this transcript", or provides a meeting transcript file.
Technischen Diff anzeigen
--- a/skills/create-cowork-plugin/references/example-plugins.md
+++ b/skills/create-cowork-plugin/references/example-plugins.md
@@ -0,0 +1,55 @@
+## Minimal Plugin: Single Skill
+
+A simple plugin with one skill and no other components.
+
+### Structure
+
+```
+meeting-notes/
+├── .claude-plugin/
+│ └── plugin.json
+├── skills/
+│ └── meeting-notes/
+│ └── SKILL.md
+└── README.md
+```
+
+### plugin.json
+
+```json
+{
+ "name": "meeting-notes",
+ "version": "0.1.0",
+ "description": "Generate structured meeting notes from transcripts",
+ "author": {
+ "name": "User"
+ }
+}
+```
+
+### skills/meeting-notes/SKILL.md
+
+```markdown
+---
+name: meeting-notes
+description: >
+ Generate structured meeting notes from a transcript. Use when the user asks
+ to "summarize this meeting", "create meeting notes", "extract action items
+ from this transcript", or provides a meeting transcript file.
+---
+
+Read the transcript file the user provided and generate structured meeting notes.
+
+Include these sections:
+
+1. **Attendees** — list all participants mentioned
+2. **Summary** — 2-3 sentence overview of the meeting
+3. **Key Decisions** — numbered list of decisions made
+4. **Action Items** — table with columns: Owner, Task, Due Date
+5. **Open Questions** — anything unresolved
+
+Write the notes to a new file named after the transcript with `-notes` appended.
+```
+
+---
+
Plugin files use `~~category` as a placeholder for whatever tool the user
Technischen Diff anzeigen
--- a/skills/create-cowork-plugin/references/example-plugins.md
+++ b/skills/create-cowork-plugin/references/example-plugins.md
@@ -0,0 +1,5 @@
+## How tool references work
+
+Plugin files use `~~category` as a placeholder for whatever tool the user
+connects in that category. Plugins are tool-agnostic.
+
--- a/skills/create-cowork-plugin/references/example-plugins.md
+++ b/skills/create-cowork-plugin/references/example-plugins.md
@@ -0,0 +1,8 @@
+## Core Rules
+
+- Use camelCase for variables and functions
+- Use PascalCase for classes and types
+- Prefer const over let; avoid var
+- Maximum line length: 100 characters
+- Use explicit return types on all exported functions
+
Detailed format specifications for every plugin component type. Reference this when implementing components in Phase 4.
Technischen Diff anzeigen
--- a/skills/create-cowork-plugin/references/component-schemas.md
+++ b/skills/create-cowork-plugin/references/component-schemas.md
@@ -0,0 +1,4 @@
+# Component Schemas
+
+Detailed format specifications for every plugin component type. Reference this when implementing components in Phase 4.
+
Neuer Skill „create-cowork-plugin" — This skill should be used when the user asks to "design an API", create API endpoints", "review API structure", or needs guidance on REST API best practices, endpoint naming, or request/response design.
Technischen Diff anzeigen
--- a/skills/create-cowork-plugin/references/component-schemas.md
+++ b/skills/create-cowork-plugin/references/component-schemas.md
@@ -0,0 +1,53 @@
+## Skills
+
+**Location**: `skills/skill-name/SKILL.md`
+**Format**: Markdown with YAML frontmatter
+
+### Frontmatter Fields
+
+| Field | Required | Type | Description |
+| ------------- | -------- | ------ | ------------------------------------------------------- |
+| `name` | Yes | String | Skill identifier (lowercase, hyphens; matches dir name) |
+| `description` | Yes | String | Third-person description with trigger phrases |
+| `metadata` | No | Map | Arbitrary key-value pairs (e.g., `version`, `author`) |
+
+### Example Skill
+
+```yaml
+---
+name: api-design
+description: >
+ This skill should be used when the user asks to "design an API",
+ "create API endpoints", "review API structure", or needs guidance
+ on REST API best practices, endpoint naming, or request/response design.
+metadata:
+ version: "0.1.0"
+---
+```
+
+### Writing Style Rules
+
+- **Frontmatter description**: Third-person ("This skill should be used when..."), with specific trigger phrases in quotes.
+- **Body**: Imperative/infinitive form ("Parse the config file," not "You should parse the config file").
+- **Length**: Keep SKILL.md body under 3,000 words (ideally 1,500-2,000). Move detailed content to `references/`.
+
+### Skill Directory Structure
+
+```
+skill-name/
+├── SKILL.md # Core knowledge (required)
+├── references/ # Detailed docs loaded on demand
+│ ├── patterns.md
+│ └── advanced.md
+├── examples/ # Working code examples
+│ └── sample-config.json
+└── scripts/ # Utility scripts
+ └── validate.sh
+```
+
+### Progressive Disclosure Levels
+
+1. **Metadata** (always in context): name + description (~100 words)
+2. **SKILL.md body** (when skill triggers): core knowledge (<5k words)
+3. **Bundled resources** (as needed): references, examples, scripts (unlimited)
+
--- a/skills/create-cowork-plugin/references/component-schemas.md
+++ b/skills/create-cowork-plugin/references/component-schemas.md
@@ -0,0 +1,9 @@
+## README.md
+
+Every plugin should include a README with:
+
+1. **Overview** — what the plugin does
+2. **Components** — list of skills, agents, hooks, MCP servers
+3. **Setup** — any required environment variables or configuration
+4. **Usage** — how to trigger each skill
+5. **Customization** — if CONNECTORS.md exists, mention it
Plugin files use `~~category` as a placeholder for whatever tool the user
Technischen Diff anzeigen
--- a/skills/create-cowork-plugin/references/component-schemas.md
+++ b/skills/create-cowork-plugin/references/component-schemas.md
@@ -0,0 +1,9 @@
+## How tool references work
+
+Plugin files use `~~category` as a placeholder for whatever tool the user
+connects in that category. For example, `~~project tracker` might mean
+Asana, Linear, Jira, or any other project tracker with an MCP server.
+
+Plugins are tool-agnostic — they describe workflows in terms of categories
+rather than specific products.
+
Neuer Skill „create-cowork-plugin" — Review code for security issues
Technischen Diff anzeigen
--- a/skills/create-cowork-plugin/references/component-schemas.md
+++ b/skills/create-cowork-plugin/references/component-schemas.md
@@ -0,0 +1,56 @@
+## Commands (Legacy)
+
+> **Prefer `skills/*/SKILL.md` for new plugins.** The Cowork UI now presents commands and skills as a single "Skills" concept. The `commands/` format still works, but only use it if you specifically need the single-file format with `$ARGUMENTS`/`$1` substitution and inline bash execution.
+
+**Location**: `commands/command-name.md`
+**Format**: Markdown with optional YAML frontmatter
+
+### Frontmatter Fields
+
+| Field | Required | Type | Description |
+| --------------- | -------- | --------------- | --------------------------------------------------- |
+| `description` | No | String | Brief description shown in `/help` (under 60 chars) |
+| `allowed-tools` | No | String or Array | Tools the command can use |
+| `model` | No | String | Model override: `sonnet`, `opus`, `haiku` |
+| `argument-hint` | No | String | Documents expected arguments for autocomplete |
+
+### Example Command
+
+```markdown
+---
+description: Review code for security issues
+allowed-tools: Read, Grep, Bash(git:*)
+argument-hint: [file-path]
+---
+
+Review @$1 for security vulnerabilities including:
+
+- SQL injection
+- XSS attacks
+- Authentication bypass
+- Insecure data handling
+
+Provide specific line numbers, severity ratings, and remediation suggestions.
+```
+
+### Key Rules
+
+- Commands are instructions FOR Claude, not messages for the user. Write them as directives.
+- `$ARGUMENTS` captures all arguments as a single string; `$1`, `$2`, `$3` capture positional arguments.
+- `@path` syntax includes file contents in the command context.
+- `!` backtick syntax executes bash inline for dynamic context (e.g., `` !`git diff --name-only` ``).
+- Use `${CLAUDE_PLUGIN_ROOT}` to reference plugin files portably.
+
+### allowed-tools Patterns
+
+```yaml
+# Specific tools
+allowed-tools: Read, Write, Edit, Bash(git:*)
+
+# Bash with specific commands only
+allowed-tools: Bash(npm:*), Read
+
+# MCP tools (specific)
+allowed-tools: ["mcp__plugin_name_server__tool_name"]
+```
+
--- a/skills/create-cowork-plugin/references/component-schemas.md
+++ b/skills/create-cowork-plugin/references/component-schemas.md
@@ -0,0 +1,10 @@
+## CONNECTORS.md
+
+**Location**: Plugin root
+**When to create**: When the plugin references external tools by category rather than specific product
+
+### Format
+
+```markdown
+# Connectors
+
Neuer Skill „create-cowork-plugin" — Use this agent when the user asks for a thorough code review or wants detailed analysis of code quality, security, and best practices. <example>
Technischen Diff anzeigen
--- a/skills/create-cowork-plugin/references/component-schemas.md
+++ b/skills/create-cowork-plugin/references/component-schemas.md
@@ -0,0 +1,84 @@
+## Agents
+
+**Location**: `agents/agent-name.md`
+**Format**: Markdown with YAML frontmatter
+
+### Frontmatter Fields
+
+| Field | Required | Type | Description |
+| ------------- | -------- | ------ | --------------------------------------------------- |
+| `name` | Yes | String | Lowercase, hyphens, 3-50 chars |
+| `description` | Yes | String | Triggering conditions with `` blocks |
+| `model` | Yes | String | `inherit`, `sonnet`, `opus`, or `haiku` |
+| `color` | Yes | String | `blue`, `cyan`, `green`, `yellow`, `magenta`, `red` |
+| `tools` | No | Array | Restrict to specific tools |
+
+### Example Agent
+
+```markdown
+---
+name: code-reviewer
+description: Use this agent when the user asks for a thorough code review or wants detailed analysis of code quality, security, and best practices.
+
+
+Context: User has just written a new module
+user: "Can you do a deep review of this code?"
+assistant: "I'll use the code-reviewer agent to provide a thorough analysis."
+
+User explicitly requested a detailed review, which matches this agent's specialty.
+
+
+
+
+Context: User is about to merge a PR
+user: "Review this before I merge"
+assistant: "Let me run a comprehensive review using the code-reviewer agent."
+
+Pre-merge review benefits from the agent's structured analysis process.
+
+
+
+model: inherit
+color: blue
+tools: ["Read", "Grep", "Glob"]
+---
+
+You are a code review specialist focused on identifying issues across security, performance, maintainability, and correctness.
+
+**Your Core Responsibilities:**
+
+1. Analyze code structure and organization
+2. Identify security vulnerabilities
+3. Flag performance concerns
+4. Check adherence to best practices
+
+**Analysis Process:**
+
+1. Read all files in scope
+2. Identify patterns and anti-patterns
+3. Categorize findings by severity
+4. Provide specific remediation suggestions
+
+**Output Format:**
+Present findings grouped by severity (Critical, Warning, Info) with:
+
+- File path and line number
+- Description of the issue
+- Suggested fix
+```
+
+### Agent Naming Rules
+
+- 3-50 characters
+- Lowercase letters, numbers, hyphens only
+- Must start and end with alphanumeric
+- No underscores, spaces, or special characters
+
+### Color Guidelines
+
+- Blue/Cyan: Analysis, review
+- Green: Success-oriented tasks
+- Yellow: Caution, validation
+- Red: Critical, security
+- Magenta: Creative, generation
+
🧩
Skill-Anpassung
Neu
skills/create-cowork-plugin/SKILL.md
__preamble__
Von Daniel • 2026-04-24 09:26:29.473544
Worum geht es?
Neuer Skill „create-cowork-plugin" wird angelegt
Build a new plugin from scratch through guided conversation. Walk the user through discovery, planning, design, implementation, and packaging — delivering a rea…
Technischen Diff anzeigen
--- a/skills/create-cowork-plugin/SKILL.md
+++ b/skills/create-cowork-plugin/SKILL.md
@@ -0,0 +1,5 @@
+
+# Create Cowork Plugin
+
+Build a new plugin from scratch through guided conversation. Walk the user through discovery, planning, design, implementation, and packaging — delivering a ready-to-install `.plugin` file at the end.
+
🧩
Skill-Anpassung
Neu
skills/create-cowork-plugin/SKILL.md
__frontmatter__
Von Daniel • 2026-04-24 09:26:29.472725
Worum geht es?
Neuer Skill „create-cowork-plugin" — Guide users through creating a new plugin from scratch in a cowork session.
Technischen Diff anzeigen
--- a/skills/create-cowork-plugin/SKILL.md
+++ b/skills/create-cowork-plugin/SKILL.md
@@ -0,0 +1,8 @@
+---
+name: create-cowork-plugin
+description: >
+ Guide users through creating a new plugin from scratch in a cowork session.
+ Use when users want to create a plugin, build a plugin, make a new plugin, develop a plugin, scaffold a plugin, start a plugin from scratch, or design a plugin.
+ This skill requires Cowork mode with access to the outputs directory for delivering the final .plugin file.
+compatibility: Requires Cowork desktop app environment with access to the outputs directory for delivering .plugin files.
+---
🧩
Skill-Anpassung
Neu
skills/create-cowork-plugin/SKILL.md
## Plugin Architecture
Von Daniel • 2026-04-24 09:26:29.471915
Worum geht es?
Neuer Skill „create-cowork-plugin" wird angelegt
Every plugin follows this layout:
Technischen Diff anzeigen
--- a/skills/create-cowork-plugin/SKILL.md
+++ b/skills/create-cowork-plugin/SKILL.md
@@ -0,0 +1,87 @@
+## Plugin Architecture
+
+### Directory Structure
+
+Every plugin follows this layout:
+
+```
+plugin-name/
+├── .claude-plugin/
+│ └── plugin.json # Required: plugin manifest
+├── skills/ # Skills (subdirectories with SKILL.md)
+│ └── skill-name/
+│ ├── SKILL.md
+│ └── references/
+├── agents/ # Subagent definitions (.md files)
+├── .mcp.json # MCP server definitions
+└── README.md # Plugin documentation
+```
+
+> **Legacy `commands/` format**: Older plugins may include a `commands/` directory with single-file `.md` slash commands. This format still works, but new plugins should use `skills/*/SKILL.md` instead — the Cowork UI presents both as a single "Skills" concept, and the skills format supports progressive disclosure via `references/`.
+
+**Rules:**
+
+- `.claude-plugin/plugin.json` is always required
+- Component directories (`skills/`, `agents/`) go at the plugin root, not inside `.claude-plugin/`
+- Only create directories for components the plugin actually uses
+- Use kebab-case for all directory and file names
+
+### plugin.json Manifest
+
+Located at `.claude-plugin/plugin.json`. Minimal required field is `name`.
+
+```json
+{
+ "name": "plugin-name",
+ "version": "0.1.0",
+ "description": "Brief explanation of plugin purpose",
+ "author": {
+ "name": "Author Name"
+ }
+}
+```
+
+**Name rules:** kebab-case, lowercase with hyphens, no spaces or special characters.
+**Version:** semver format (MAJOR.MINOR.PATCH). Start at `0.1.0`.
+
+Optional fields: `homepage`, `repository`, `license`, `keywords`.
+
+Custom component paths can be specified (supplements, does not replace, auto-discovery):
+
+```json
+{
+ "commands": "./custom-commands",
+ "agents": ["./agents", "./specialized-agents"],
+ "hooks": "./config/hooks.json",
+ "mcpServers": "./.mcp.json"
+}
+```
+
+### Component Schemas
+
+Detailed schemas for each component type are in `references/component-schemas.md`. Summary:
+
+| Component | Location | Format |
+| ---------------------------------- | ------------------- | --------------------------- |
+| Skills | `skills/*/SKILL.md` | Markdown + YAML frontmatter |
+| MCP Servers | `.mcp.json` | JSON |
+| Agents (uncommonly used in Cowork) | `agents/*.md` | Markdown + YAML frontmatter |
+| Hooks (rarely used in Cowork) | `hooks/hooks.json` | JSON |
+| Commands (legacy) | `commands/*.md` | Markdown + YAML frontmatter |
+
+This schema is shared with Claude Code's plugin system, but you're creating a plugin for Claude Cowork, a desktop app for doing knowledge work.
+Cowork users will usually find skills the most useful. **Scaffold new plugins with `skills/*/SKILL.md` — do not create `commands/` unless the user explicitly needs the legacy single-file format.**
+
+### Customizable plugins with `~~` placeholders
+
+> **Do not use or ask about this pattern by default.** Only introduce `~~` placeholders if the user explicitly says they want people outside their organization to use the plugin.
+> You can mention this is an option if it seems like the user wants to distribute the plugin externally, but do not proactively ask about this with AskUserQuestion.
+
+When a plugin is intended to be shared with others outside their company, it might have parts that need to be adapted to individual users.
+You might need to reference external tools by category rather than specific product (e.g., "project tracker" instead of "Jira").
+When sharing is needed, use generic language and mark these as requiring customization with two tilde characters such as `create an issue in ~~project tracker`.
+If used any tool categories, write a `CONNECTORS.md` file at the plugin root to explain:
+
+```markdown
+# Connectors
+
🧩
Skill-Anpassung
Neu
skills/create-cowork-plugin/SKILL.md
## Overview
Von Daniel • 2026-04-24 09:26:29.471107
Worum geht es?
Neuer Skill „create-cowork-plugin" wird angelegt
A plugin is a self-contained directory that extends Claude's capabilities with skills, agents, hooks, and MCP server integrations. This skill encodes the full p…
Technischen Diff anzeigen
--- a/skills/create-cowork-plugin/SKILL.md
+++ b/skills/create-cowork-plugin/SKILL.md
@@ -0,0 +1,14 @@
+## Overview
+
+A plugin is a self-contained directory that extends Claude's capabilities with skills, agents, hooks, and MCP server integrations. This skill encodes the full plugin architecture and a five-phase workflow for creating one conversationally.
+
+The process:
+
+1. **Discovery** — understand what the user wants to build
+2. **Component Planning** — determine which component types are needed
+3. **Design & Clarifying Questions** — specify each component in detail
+4. **Implementation** — create all plugin files
+5. **Review & Package** — deliver the `.plugin` file
+
+> **Nontechnical output**: Keep all user-facing conversation in plain language. Do not expose implementation details like file paths, directory structures, or schema fields unless the user asks. Frame everything in terms of what the plugin will do.
+
🧩
Skill-Anpassung
Neu
skills/create-cowork-plugin/SKILL.md
## How tool references work
Von Daniel • 2026-04-24 09:26:29.470297
Worum geht es?
Neuer Skill „create-cowork-plugin" wird angelegt
Plugin files use `~~category` as a placeholder for whatever tool the user
Technischen Diff anzeigen
--- a/skills/create-cowork-plugin/SKILL.md
+++ b/skills/create-cowork-plugin/SKILL.md
@@ -0,0 +1,6 @@
+## How tool references work
+
+Plugin files use `~~category` as a placeholder for whatever tool the user
+connects in that category. Plugins are tool-agnostic — they describe
+workflows in terms of categories rather than specific products.
+
🧩
Skill-Anpassung
Neu
skills/create-cowork-plugin/SKILL.md
## Guided Workflow
Von Daniel • 2026-04-24 09:26:29.469513
Worum geht es?
Neuer Skill „create-cowork-plugin" wird angelegt
When you ask the user something, use AskUserQuestion. Don't assume "industry standard" defaults are correct. Note: AskUserQuestion always includes a Skip button…
Technischen Diff anzeigen
--- a/skills/create-cowork-plugin/SKILL.md
+++ b/skills/create-cowork-plugin/SKILL.md
@@ -0,0 +1,124 @@
+## Guided Workflow
+
+When you ask the user something, use AskUserQuestion. Don't assume "industry standard" defaults are correct. Note: AskUserQuestion always includes a Skip button and a free-text input box for custom answers, so do not include `None` or `Other` as options.
+
+### Phase 1: Discovery
+
+**Goal**: Understand what the user wants to build and why.
+
+Ask (only what is unclear — skip questions if the user's initial request already answers them):
+
+- What should this plugin do? What problem does it solve?
+- Who will use it and in what context?
+- Does it integrate with any external tools or services?
+- Is there a similar plugin or workflow to reference?
+
+Summarize understanding and confirm before proceeding.
+
+**Output**: Clear statement of plugin purpose and scope.
+
+### Phase 2: Component Planning
+
+**Goal**: Determine which component types the plugin needs.
+
+Based on the discovery answers, determine:
+
+- **Skills** — Does it need specialized knowledge that Claude should load on-demand, or user-initiated actions? (domain expertise, reference schemas, workflow guides, deploy/configure/analyze/review actions)
+- **MCP Servers** — Does it need external service integration? (databases, APIs, SaaS tools)
+- **Agents (uncommon)** — Are there autonomous multi-step tasks? (validation, generation, analysis)
+- **Hooks (rare)** — Should something happen automatically on certain events? (enforce policies, load context, validate operations)
+
+Present a component plan table, including component types you decided not to create:
+
+```
+| Component | Count | Purpose |
+|-----------|-------|---------|
+| Skills | 3 | Domain knowledge for X, /do-thing, /check-thing |
+| Agents | 0 | Not needed |
+| Hooks | 1 | Validate writes |
+| MCP | 1 | Connect to service Y |
+```
+
+Get user confirmation or adjustments before proceeding.
+
+**Output**: Confirmed list of components to create.
+
+### Phase 3: Design & Clarifying Questions
+
+**Goal**: Specify each component in detail. Resolve all ambiguities before implementation.
+
+For each component type in the plan, ask targeted design questions. Present questions grouped by component type. Wait for answers before proceeding.
+
+**Skills:**
+
+- What user queries should trigger this skill?
+- What knowledge domains does it cover?
+- Should it include reference files for detailed content?
+- If the skill represents a user-initiated action: what arguments does it accept, and what tools does it need? (Read, Write, Bash, Grep, etc.)
+
+**Agents:**
+
+- Should each agent trigger proactively or only when requested?
+- What tools does it need?
+- What should the output format be?
+
+**Hooks:**
+
+- Which events? (PreToolUse, PostToolUse, Stop, SessionStart, etc.)
+- What behavior — validate, block, modify, add context?
+- Prompt-based (LLM-driven) or command-based (deterministic script)?
+
+**MCP Servers:**
+
+- What server type? (stdio for local, SSE for hosted with OAuth, HTTP for REST APIs)
+- What authentication method?
+- What tools should be exposed?
+
+If the user says "whatever you think is best," provide specific recommendations and get explicit confirmation.
+
+**Output**: Detailed specification for every component.
+
+### Phase 4: Implementation
+
+**Goal**: Create all plugin files following best practices.
+
+**Order of operations:**
+
+1. Create the plugin directory structure
+2. Create `plugin.json` manifest
+3. Create each component (see `references/component-schemas.md` for exact formats)
+4. Create `README.md` documenting the plugin
+
+**Implementation guidelines:**
+
+- **Skills** use progressive disclosure: lean SKILL.md body (under 3,000 words), detailed content in `references/`. Frontmatter description must be third-person with specific trigger phrases. Skill bodies are instructions FOR Claude, not messages to the user — write them as directives about what to do.
+- **Agents** need a description with `` blocks showing triggering conditions, plus a system prompt in the markdown body.
+- **Hooks** config goes in `hooks/hooks.json`. Use `${CLAUDE_PLUGIN_ROOT}` for script paths. Prefer prompt-based hooks for complex logic.
+- **MCP configs** go in `.mcp.json` at plugin root. Use `${CLAUDE_PLUGIN_ROOT}` for local server paths. Document required env vars in README.
+
+### Phase 5: Review & Package
+
+**Goal**: Deliver the finished plugin.
+
+1. Summarize what was created — list each component and its purpose
+2. Ask if the user wants any adjustments
+3. Run `claude plugin validate ` to check the plugin structure. If this command is unavailable (e.g., when running inside Cowork), verify the structure manually:
+ - `.claude-plugin/plugin.json` exists and contains valid JSON with at least a `name` field
+ - The `name` field is kebab-case (lowercase letters, numbers, and hyphens only)
+ - Any component directories referenced by the plugin (`commands/`, `skills/`, `agents/`, `hooks/`) actually exist and contain files in the expected formats — `.md` for commands/skills/agents, `.json` for hooks
+ - Each skill subdirectory contains a `SKILL.md`
+ - Report what passed and what didn't, the same way the CLI validator would
+
+ Fix any errors before proceeding.
+4. Package as a `.plugin` file:
+
+```bash
+cd /path/to/plugin-dir && zip -r /tmp/plugin-name.plugin . -x "*.DS_Store" && cp /tmp/plugin-name.plugin /path/to/outputs/plugin-name.plugin
+```
+
+> **Important**: Always create the zip in `/tmp/` first, then copy to the outputs folder. Writing directly to the outputs folder may fail due to permissions.
+
+> **Naming**: Use the plugin name from `plugin.json` for the `.plugin` file (e.g., if name is `code-reviewer`, output `code-reviewer.plugin`).
+
+The `.plugin` file will appear in the chat as a rich preview where the user can browse the files and accept the plugin by pressing a button.
+
🧩
Skill-Anpassung
Neu
skills/create-cowork-plugin/SKILL.md
## Connectors for this plugin
Von Daniel • 2026-04-24 09:26:29.468682
Worum geht es?
Neuer Skill „create-cowork-plugin" wird angelegt
| Category | Placeholder | Options |
Technischen Diff anzeigen
--- a/skills/create-cowork-plugin/SKILL.md
+++ b/skills/create-cowork-plugin/SKILL.md
@@ -0,0 +1,12 @@
+## Connectors for this plugin
+
+| Category | Placeholder | Options |
+| --------------- | ------------------- | ------------------------------- |
+| Chat | `~~chat` | Slack, Microsoft Teams, Discord |
+| Project tracker | `~~project tracker` | Linear, Asana, Jira |
+```
+
+### ${CLAUDE_PLUGIN_ROOT} Variable
+
+Use `${CLAUDE_PLUGIN_ROOT}` for all intra-plugin path references in hooks and MCP configs. Never hardcode absolute paths.
+
🧩
Skill-Anpassung
Neu
skills/create-cowork-plugin/SKILL.md
## Best Practices
Von Daniel • 2026-04-24 09:26:29.467914
Worum geht es?
Neuer Skill „create-cowork-plugin" wird angelegt
- **Start small**: Begin with the minimum viable set of components. A plugin with one well-crafted skill is more useful than one with five half-baked components…
Technischen Diff anzeigen
--- a/skills/create-cowork-plugin/SKILL.md
+++ b/skills/create-cowork-plugin/SKILL.md
@@ -0,0 +1,10 @@
+## Best Practices
+
+- **Start small**: Begin with the minimum viable set of components. A plugin with one well-crafted skill is more useful than one with five half-baked components.
+- **Progressive disclosure for skills**: Core knowledge in SKILL.md, detailed reference material in `references/`, working examples in `examples/`.
+- **Clear trigger phrases**: Skill descriptions should include specific phrases users would say. Agent descriptions should include `` blocks.
+- **Skills are for Claude**: Write skill body content as instructions for Claude to follow, not documentation for the user to read.
+- **Imperative writing style**: Use verb-first instructions in skills ("Parse the config file," not "You should parse the config file").
+- **Portability**: Always use `${CLAUDE_PLUGIN_ROOT}` for intra-plugin paths, never hardcoded paths.
+- **Security**: Use environment variables for credentials, HTTPS for remote servers, least-privilege tool access.
+
🧩
Skill-Anpassung
Neu
skills/create-cowork-plugin/SKILL.md
## Additional Resources
Von Daniel • 2026-04-24 09:26:29.467116
Worum geht es?
Neuer Skill „create-cowork-plugin" wird angelegt
- **`references/component-schemas.md`** — Detailed format specifications for every component type (skills, agents, hooks, MCP, legacy commands, CONNECTORS.md)
Technischen Diff anzeigen
--- a/skills/create-cowork-plugin/SKILL.md
+++ b/skills/create-cowork-plugin/SKILL.md
@@ -0,0 +1,4 @@
+## Additional Resources
+
+- **`references/component-schemas.md`** — Detailed format specifications for every component type (skills, agents, hooks, MCP, legacy commands, CONNECTORS.md)
+- **`references/example-plugins.md`** — Three complete example plugin structures at different complexity levels
Neuer Skill „cowork-plugin-customizer" wird angelegt
If no knowledge MCPs are configured, skip automatic discovery and proceed directly to AskUserQuestion for all categories. Note: AskUserQuestion always includes …
Technischen Diff anzeigen
--- a/skills/cowork-plugin-customizer/references/search-strategies.md
+++ b/skills/cowork-plugin-customizer/references/search-strategies.md
@@ -0,0 +1,3 @@
+## When Knowledge MCPs Are Unavailable
+
+If no knowledge MCPs are configured, skip automatic discovery and proceed directly to AskUserQuestion for all categories. Note: AskUserQuestion always includes a Skip button and a free-text input box for custom answers, so do not include `None` or `Other` as options.
Neuer Skill „cowork-plugin-customizer" wird angelegt
1. **Find customization point**: Look for `~~`-prefixed values (e.g., `~~Jira`)
Technischen Diff anzeigen
--- a/skills/cowork-plugin-customizer/references/mcp-servers.md
+++ b/skills/cowork-plugin-customizer/references/mcp-servers.md
@@ -0,0 +1,11 @@
+## Workflow
+
+1. **Find customization point**: Look for `~~`-prefixed values (e.g., `~~Jira`)
+2. **Check earlier phase findings**: Did you already learn which tool they use?
+ - **Yes**: Search for that specific tool to get its `url`, skip to step 5
+ - **No**: Continue to step 3
+3. **Search**: Call `search_mcp_registry` with mapped keywords
+4. **Present choices and ask user**: Show all results, ask which they use
+5. **Connect if needed**: If not connected, call `suggest_connectors`
+6. **Update MCP config**: Add config using the `url` from search results
+
Neuer Skill „cowork-plugin-customizer" wird angelegt
1. **Check `plugin.json`** for an `mcpServers` field:
Technischen Diff anzeigen
--- a/skills/cowork-plugin-customizer/references/mcp-servers.md
+++ b/skills/cowork-plugin-customizer/references/mcp-servers.md
@@ -0,0 +1,37 @@
+## Updating Plugin MCP Configuration
+
+### Finding the Config File
+
+1. **Check `plugin.json`** for an `mcpServers` field:
+ ```json
+ {
+ "name": "my-plugin",
+ "mcpServers": "./config/servers.json"
+ }
+ ```
+ If present, edit the file at that path.
+
+2. **If no `mcpServers` field**, use `.mcp.json` at the plugin root (default).
+
+3. **If `mcpServers` points only to `.mcpb` files** (bundled servers), create a new `.mcp.json` at the plugin root.
+
+### Config File Format
+
+Both wrapped and unwrapped formats are supported:
+
+```json
+{
+ "mcpServers": {
+ "github": {
+ "type": "http",
+ "url": "https://api.githubcopilot.com/mcp/"
+ }
+ }
+}
+```
+
+Use the `url` field from `search_mcp_registry` results.
+
+### Directory Entries Without a URL
+
+Some directory entries have no `url` because the endpoint is dynamic — the admin provides it when connecting the server. These servers can still be referenced in the plugin's MCP config by **name**: if the MCP server name in the config matches the directory entry name, it is treated the same as a URL match.
Neuer Skill „cowork-plugin-customizer" wird angelegt
Search the MCP directory for available connectors.
Technischen Diff anzeigen
--- a/skills/cowork-plugin-customizer/references/mcp-servers.md
+++ b/skills/cowork-plugin-customizer/references/mcp-servers.md
@@ -0,0 +1,22 @@
+## Available Tools
+
+### `search_mcp_registry`
+Search the MCP directory for available connectors.
+
+**Input:** `{ "keywords": ["array", "of", "search", "terms"] }`
+
+**Output:** Up to 10 results, each with:
+- `name`: MCP display name
+- `description`: One-liner description
+- `tools`: List of tool names the MCP provides
+- `url`: MCP endpoint URL (use this in `.mcp.json`)
+- `directoryUuid`: UUID for use with suggest_connectors
+- `connected`: Boolean - whether user has this MCP connected
+
+### `suggest_connectors`
+Display Connect buttons to let users install/connect MCPs.
+
+**Input:** `{ "directoryUuids": ["uuid1", "uuid2"] }`
+
+**Output:** Renders UI with Connect buttons for each MCP
+
Neuer Skill „cowork-plugin-customizer" wird angelegt
Customize a plugin for a specific organization — either by setting up a generic plugin template for the first time, or by tweaking and refining an already-confi…
Technischen Diff anzeigen
--- a/skills/cowork-plugin-customizer/SKILL.md
+++ b/skills/cowork-plugin-customizer/SKILL.md
@@ -0,0 +1,7 @@
+
+# Cowork Plugin Customization
+
+Customize a plugin for a specific organization — either by setting up a generic plugin template for the first time, or by tweaking and refining an already-configured plugin.
+
+> **Finding the plugin**: To find the plugin's source files, run `find mnt/.local-plugins mnt/.plugins -type d -name "**"` to locate the plugin directory, then read its files to understand its structure before making changes. If you cannot find the plugin directory, the user is likely running this conversation in a remote container. Abort and let them know: "Customizing plugins is currently only available in the desktop app's Cowork mode."
+
🧩
Skill-Anpassung
Neu
skills/cowork-plugin-customizer/SKILL.md
__frontmatter__
Von Daniel • 2026-04-24 09:26:29.457107
Worum geht es?
Neuer Skill „cowork-plugin-customizer" — Customize a Claude Code plugin for a specific organization's tools and workflows.
Technischen Diff anzeigen
--- a/skills/cowork-plugin-customizer/SKILL.md
+++ b/skills/cowork-plugin-customizer/SKILL.md
@@ -0,0 +1,8 @@
+---
+name: cowork-plugin-customizer
+description: >
+ Customize a Claude Code plugin for a specific organization's tools and workflows.
+ Use when: customize plugin, set up plugin, configure plugin, tailor plugin, adjust plugin settings,
+ customize plugin connectors, customize plugin skill, tweak plugin, modify plugin configuration.
+compatibility: Requires Cowork desktop app environment with access to mounted plugin directories (mnt/.local-plugins, mnt/.plugins).
+---
🧩
Skill-Anpassung
Neu
skills/cowork-plugin-customizer/SKILL.md
## Summary Output
Von Daniel • 2026-04-24 09:26:29.456276
Worum geht es?
Neuer Skill „cowork-plugin-customizer" wird angelegt
After customization, present the user with a summary of what was learned grouped by source. Always include the MCPs sections showing which MCPs were connected d…
Technischen Diff anzeigen
--- a/skills/cowork-plugin-customizer/SKILL.md
+++ b/skills/cowork-plugin-customizer/SKILL.md
@@ -0,0 +1,5 @@
+## Summary Output
+
+After customization, present the user with a summary of what was learned grouped by source. Always include the MCPs sections showing which MCPs were connected during setup and which ones the user should still connect:
+
+```markdown
🧩
Skill-Anpassung
Neu
skills/cowork-plugin-customizer/SKILL.md
## Packaging the Plugin
Von Daniel • 2026-04-24 09:26:29.455227
Worum geht es?
Neuer Skill „cowork-plugin-customizer" wird angelegt
After all customizations are applied, package the plugin as a `.plugin` file for the user:
Technischen Diff anzeigen
--- a/skills/cowork-plugin-customizer/SKILL.md
+++ b/skills/cowork-plugin-customizer/SKILL.md
@@ -0,0 +1,14 @@
+## Packaging the Plugin
+
+After all customizations are applied, package the plugin as a `.plugin` file for the user:
+
+1. **Zip the plugin directory** (excluding `setup/` since it's no longer needed):
+ ```bash
+ cd /path/to/plugin && zip -r /tmp/plugin-name.plugin . -x "setup/*" && cp /tmp/plugin-name.plugin /path/to/outputs/plugin-name.plugin
+ ```
+2. **Present the file to the user** with the `.plugin` extension so they can install it directly. (Presenting the .plugin file will show to the user as a rich preview where they can look through the plugin files, and they can accept the customization by pressing a button.)
+
+> **Important**: Always create the zip in `/tmp/` first, then copy to the outputs folder. Writing directly to the outputs folder may fail due to permissions and leave behind temporary files.
+
+> **Naming**: Use the original plugin directory name for the `.plugin` file (e.g., if the plugin directory is `coder`, the output file should be `coder.plugin`). Do not rename the plugin or its files during customization — only replace placeholder values and update content.
+
🧩
Skill-Anpassung
Neu
skills/cowork-plugin-customizer/SKILL.md
## From your answers
Von Daniel • 2026-04-24 09:26:29.454444
Worum geht es?
Neuer Skill „cowork-plugin-customizer" wird angelegt
- Ticket statuses are: Backlog, In Progress, In Review, Done
Technischen Diff anzeigen
--- a/skills/cowork-plugin-customizer/SKILL.md
+++ b/skills/cowork-plugin-customizer/SKILL.md
@@ -0,0 +1,11 @@
+## From your answers
+
+- Ticket statuses are: Backlog, In Progress, In Review, Done
+```
+
+Then present the MCPs that were connected during setup and any that the user should still connect, with instructions on how to connect them.
+
+If no knowledge MCPs were available in Phase 1, and the user had to answer at least one question manually, include a note at the end:
+
+> By the way, connecting sources like Slack or Microsoft Teams would let me find answers automatically next time you customize a plugin.
+
🧩
Skill-Anpassung
Neu
skills/cowork-plugin-customizer/SKILL.md
## From searching documents
Von Daniel • 2026-04-24 09:26:29.453645
Worum geht es?
Neuer Skill „cowork-plugin-customizer" wird angelegt
- Story points use T-shirt sizes
Technischen Diff anzeigen
--- a/skills/cowork-plugin-customizer/SKILL.md
+++ b/skills/cowork-plugin-customizer/SKILL.md
@@ -0,0 +1,4 @@
+## From searching documents
+
+- Story points use T-shirt sizes
+
🧩
Skill-Anpassung
Neu
skills/cowork-plugin-customizer/SKILL.md
## From searching Slack
Von Daniel • 2026-04-24 09:26:29.452847
Worum geht es?
Neuer Skill „cowork-plugin-customizer" wird angelegt
- You use Asana for project management
Technischen Diff anzeigen
--- a/skills/cowork-plugin-customizer/SKILL.md
+++ b/skills/cowork-plugin-customizer/SKILL.md
@@ -0,0 +1,5 @@
+## From searching Slack
+
+- You use Asana for project management
+- Sprint cycles are 2 weeks
+
🧩
Skill-Anpassung
Neu
skills/cowork-plugin-customizer/SKILL.md
## Determining the Customization Mode
Von Daniel • 2026-04-24 09:26:29.452042
Worum geht es?
Neuer Skill „cowork-plugin-customizer" wird angelegt
After locating the plugin, check for `~~`-prefixed placeholders: `grep -rn '~~\w' /path/to/plugin --include='*.md' --include='*.json'`
Technischen Diff anzeigen
--- a/skills/cowork-plugin-customizer/SKILL.md
+++ b/skills/cowork-plugin-customizer/SKILL.md
@@ -0,0 +1,18 @@
+## Determining the Customization Mode
+
+After locating the plugin, check for `~~`-prefixed placeholders: `grep -rn '~~\w' /path/to/plugin --include='*.md' --include='*.json'`
+
+> **Default rule**: If `~~` placeholders exist, default to **Generic plugin setup** unless the user explicitly asks to customize a specific part of the plugin.
+
+**1. Generic plugin setup** — The plugin contains `~~`-prefixed placeholders. These are customization points in a template that need to be replaced with real values (e.g., `~~Jira` → `Asana`, `~~your-team-channel` → `#engineering`).
+
+**2. Scoped customization** — No `~~` placeholders exist, and the user asked to customize a specific part of the plugin (e.g., "customize the connectors", "update the standup skill", "change the ticket tool"). Read the plugin files to find the relevant section(s) and focus only on those. Do not scan the entire plugin or present unrelated customization items.
+
+> **Legacy `commands/` directories**: Some plugins include a `commands/` directory. The Cowork UI now presents these alongside skills as a single "Skills" concept, so treat `commands/*.md` files the same way you would `skills/*/SKILL.md` files when customizing.
+
+**3. General customization** — No `~~` placeholders exist, and the user wants to modify the plugin broadly. Read the plugin's files to understand its current configuration, then ask the user what they'd like to change.
+
+> **Important**: Never change the name of the plugin or skill being customized. Do not rename directories, files, or the plugin/skill name fields.
+
+> **Nontechnical output**: All user-facing output (todo list items, questions, summaries) must be written in plain, nontechnical language. Never mention `~~` prefixes, placeholders, or customization points to the user. Frame everything in terms of the plugin's capabilities and the organization's tools.
+
🧩
Skill-Anpassung
Neu
skills/cowork-plugin-customizer/SKILL.md
## Customization Workflow
Von Daniel • 2026-04-24 09:26:29.451227
Worum geht es?
Neuer Skill „cowork-plugin-customizer" wird angelegt
For **scoped customization** and **general customization** (not generic plugin setup), check whether the user provided free-form context alongside their request…
Technischen Diff anzeigen
--- a/skills/cowork-plugin-customizer/SKILL.md
+++ b/skills/cowork-plugin-customizer/SKILL.md
@@ -0,0 +1,72 @@
+## Customization Workflow
+
+### Phase 0: Gather User Intent (scoped and general customization only)
+
+For **scoped customization** and **general customization** (not generic plugin setup), check whether the user provided free-form context alongside their request (e.g., "customize the standup skill — we do async standups in #eng-updates every morning").
+
+- **If the user provided context**: Record it and use it to pre-fill answers in Phase 3 — skip asking questions that the user already answered here.
+- **If the user did not provide context**: Ask a single open-ended question using AskUserQuestion before proceeding. Tailor the question to what they asked to customize — e.g., "What changes do you have in mind for the brief skill?" or "What would you like to change about how this plugin works?" Keep it short and specific to their request.
+
+ Use their response (if any) as additional context throughout the remaining phases.
+
+### Phase 1: Gather Context from Knowledge MCPs
+
+Use company-internal knowledge MCPs to collect information relevant to the customization scope. See `references/search-strategies.md` for detailed query patterns by category.
+
+**What to gather** (scope to what's relevant):
+
+- Tool names and services the organization uses
+- Organizational processes and workflows
+- Team conventions (naming, statuses, estimation scales)
+- Configuration values (workspace IDs, project names, team identifiers)
+
+**Sources to search:**
+
+1. **Chat/Slack MCPs** — tool mentions, integrations, workflow discussions
+2. **Document MCPs** — onboarding docs, tool guides, setup instructions
+3. **Email MCPs** — license notifications, admin emails, setup invitations
+
+Record all findings for use in Phase 3.
+
+### Phase 2: Create Todo List
+
+Build a todo list of changes to make, scoped appropriately:
+
+- **For scoped customization**: Only include items related to the specific section the user asked about.
+- **For generic plugin setup**: Run `grep -rn '~~\w' /path/to/plugin --include='*.md' --include='*.json'` to find all placeholder customization points. Group them by theme.
+- **For general customization**: Read the plugin files, understand the current config, and based on the user's request, identify what needs to change.
+
+Use user-friendly descriptions that focus on the plugin's purpose:
+
+- **Good**: "Learn how standup prep works at Company"
+- **Bad**: "Replace placeholders in skills/standup-prep/SKILL.md"
+
+### Phase 3: Complete Todo Items
+
+Work through each item using context from Phase 0 and Phase 1.
+
+**If the user's free-form input (Phase 0) or knowledge MCPs (Phase 1) provided a clear answer**: Apply directly without confirmation.
+
+**Otherwise**: Use AskUserQuestion. Don't assume "industry standard" defaults are correct — if neither the user's input nor knowledge MCPs provided a specific answer, ask. Note: AskUserQuestion always includes a Skip button and a free-text input box for custom answers, so do not include `None` or `Other` as options.
+
+**Types of changes:**
+
+1. **Placeholder replacements** (generic setup): `~~Jira` → `Asana`, `~~your-org-channel` → `#engineering`
+2. **Content updates**: Modifying instructions, skills, workflows, or references to match the organization
+3. **URL pattern updates**: `tickets.example.com/your-team/123` → `app.asana.com/0/PROJECT_ID/TASK_ID`
+4. **Configuration values**: Workspace IDs, project names, team identifiers
+
+If user doesn't know or skips, leave the value unchanged (or the `~~`-prefixed placeholder, for generic setup).
+
+### Phase 4: Search for Useful MCPs
+
+After customization items have been resolved, connect MCPs for any tools that were identified or changed. See `references/mcp-servers.md` for the full workflow, category-to-keywords mapping, and config file format.
+
+For each tool identified during customization:
+
+1. Search the registry: `search_mcp_registry(keywords=[...])` using category keywords from `references/mcp-servers.md`, or search for the specific tool name if already known
+2. If unconnected: `suggest_connectors(directoryUuids=["chosen-uuid"])` — user completes auth
+3. Update the plugin's MCP config file (check `plugin.json` for custom location, otherwise `.mcp.json` at root)
+
+Collect all MCP results and present them together in the summary output (see below) — don't present MCPs one at a time during this phase.
+
🧩
Skill-Anpassung
Neu
skills/cowork-plugin-customizer/SKILL.md
## Additional Resources
Von Daniel • 2026-04-24 09:26:29.450441
Worum geht es?
Neuer Skill „cowork-plugin-customizer" wird angelegt
Neuer Skill „cowork-plugin-customizer" wird angelegt
Version 2.0, January 2004
Technischen Diff anzeigen
--- a/skills/cowork-plugin-customizer/LICENSE.txt
+++ b/skills/cowork-plugin-customizer/LICENSE.txt
@@ -0,0 +1,202 @@
+
+ Apache License
+ Version 2.0, January 2004
+ http://www.apache.org/licenses/
+
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+ 1. Definitions.
+
+ "License" shall mean the terms and conditions for use, reproduction,
+ and distribution as defined by Sections 1 through 9 of this document.
+
+ "Licensor" shall mean the copyright owner or entity authorized by
+ the copyright owner that is granting the License.
+
+ "Legal Entity" shall mean the union of the acting entity and all
+ other entities that control, are controlled by, or are under common
+ control with that entity. For the purposes of this definition,
+ "control" means (i) the power, direct or indirect, to cause the
+ direction or management of such entity, whether by contract or
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
+ outstanding shares, or (iii) beneficial ownership of such entity.
+
+ "You" (or "Your") shall mean an individual or Legal Entity
+ exercising permissions granted by this License.
+
+ "Source" form shall mean the preferred form for making modifications,
+ including but not limited to software source code, documentation
+ source, and configuration files.
+
+ "Object" form shall mean any form resulting from mechanical
+ transformation or translation of a Source form, including but
+ not limited to compiled object code, generated documentation,
+ and conversions to other media types.
+
+ "Work" shall mean the work of authorship, whether in Source or
+ Object form, made available under the License, as indicated by a
+ copyright notice that is included in or attached to the work
+ (an example is provided in the Appendix below).
+
+ "Derivative Works" shall mean any work, whether in Source or Object
+ form, that is based on (or derived from) the Work and for which the
+ editorial revisions, annotations, elaborations, or other modifications
+ represent, as a whole, an original work of authorship. For the purposes
+ of this License, Derivative Works shall not include works that remain
+ separable from, or merely link (or bind by name) to the interfaces of,
+ the Work and Derivative Works thereof.
+
+ "Contribution" shall mean any work of authorship, including
+ the original version of the Work and any modifications or additions
+ to that Work or Derivative Works thereof, that is intentionally
+ submitted to Licensor for inclusion in the Work by the copyright owner
+ or by an individual or Legal Entity authorized to submit on behalf of
+ the copyright owner. For the purposes of this definition, "submitted"
+ means any form of electronic, verbal, or written communication sent
+ to the Licensor or its representatives, including but not limited to
+ communication on electronic mailing lists, source code control systems,
+ and issue tracking systems that are managed by, or on behalf of, the
+ Licensor for the purpose of discussing and improving the Work, but
+ excluding communication that is conspicuously marked or otherwise
+ designated in writing by the copyright owner as "Not a Contribution."
+
+ "Contributor" shall mean Licensor and any individual or Legal Entity
+ on behalf of whom a Contribution has been received by Licensor and
+ subsequently incorporated within the Work.
+
+ 2. Grant of Copyright License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ copyright license to reproduce, prepare Derivative Works of,
+ publicly display, publicly perform, sublicense, and distribute the
+ Work and such Derivative Works in Source or Object form.
+
+ 3. Grant of Patent License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ (except as stated in this section) patent license to make, have made,
+ use, offer to sell, sell, import, and otherwise transfer the Work,
+ where such license applies only to those patent claims licensable
+ by such Contributor that are necessarily infringed by their
+ Contribution(s) alone or by combination of their Contribution(s)
+ with the Work to which such Contribution(s) was submitted. If You
+ institute patent litigation against any entity (including a
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
+ or a Contribution incorporated within the Work constitutes direct
+ or contributory patent infringement, then any patent licenses
+ granted to You under this License for that Work shall terminate
+ as of the date such litigation is filed.
+
+ 4. Redistribution. You may reproduce and distribute copies of the
+ Work or Derivative Works thereof in any medium, with or without
+ modifications, and in Source or Object form, provided that You
+ meet the following conditions:
+
+ (a) You must give any other recipients of the Work or
+ Derivative Works a copy of this License; and
+
+ (b) You must cause any modified files to carry prominent notices
+ stating that You changed the files; and
+
+ (c) You must retain, in the Source form of any Derivative Works
+ that You distribute, all copyright, patent, trademark, and
+ attribution notices from the Source form of the Work,
+ excluding those notices that do not pertain to any part of
+ the Derivative Works; and
+
+ (d) If the Work includes a "NOTICE" text file as part of its
+ distribution, then any Derivative Works that You distribute must
+ include a readable copy of the attribution notices contained
+ within such NOTICE file, excluding those notices that do not
+ pertain to any part of the Derivative Works, in at least one
+ of the following places: within a NOTICE text file distributed
+ as part of the Derivative Works; within the Source form or
+ documentation, if provided along with the Derivative Works; or,
+ within a display generated by the Derivative Works, if and
+ wherever such third-party notices normally appear. The contents
+ of the NOTICE file are for informational purposes only and
+ do not modify the License. You may add Your own attribution
+ notices within Derivative Works that You distribute, alongside
+ or as an addendum to the NOTICE text from the Work, provided
+ that such additional attribution notices cannot be construed
+ as modifying the License.
+
+ You may add Your own copyright statement to Your modifications and
+ may provide additional or different license terms and conditions
+ for use, reproduction, or distribution of Your modifications, or
+ for any such Derivative Works as a whole, provided Your use,
+ reproduction, and distribution of the Work otherwise complies with
+ the conditions stated in this License.
+
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
+ any Contribution intentionally submitted for inclusion in the Work
+ by You to the Licensor shall be under the terms and conditions of
+ this License, without any additional terms or conditions.
+ Notwithstanding the above, nothing herein shall supersede or modify
+ the terms of any separate license agreement you may have executed
+ with Licensor regarding such Contributions.
+
+ 6. Trademarks. This License does not grant permission to use the trade
+ names, trademarks, service marks, or product names of the Licensor,
+ except as required for reasonable and customary use in describing the
+ origin of the Work and reproducing the content of the NOTICE file.
+
+ 7. Disclaimer of Warranty. Unless required by applicable law or
+ agreed to in writing, Licensor provides the Work (and each
+ Contributor provides its Contributions) on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ implied, including, without limitation, any warranties or conditions
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+ PARTICULAR PURPOSE. You are solely responsible for determining the
+ appropriateness of using or redistributing the Work and assume any
+ risks associated with Your exercise of permissions under this License.
+
+ 8. Limitation of Liability. In no event and under no legal theory,
+ whether in tort (including negligence), contract, or otherwise,
+ unless required by applicable law (such as deliberate and grossly
+ negligent acts) or agreed to in writing, shall any Contributor be
+ liable to You for damages, including any direct, indirect, special,
+ incidental, or consequential damages of any character arising as a
+ result of this License or out of the use or inability to use the
+ Work (including but not limited to damages for loss of goodwill,
+ work stoppage, computer failure or malfunction, or any and all
+ other commercial damages or losses), even if such Contributor
+ has been advised of the possibility of such damages.
+
+ 9. Accepting Warranty or Additional Liability. While redistributing
+ the Work or Derivative Works thereof, You may choose to offer,
+ and charge a fee for, acceptance of support, warranty, indemnity,
+ or other liability obligations and/or rights consistent with this
+ License. However, in accepting such obligations, You may act only
+ on Your own behalf and on Your sole responsibility, not on behalf
+ of any other Contributor, and only if You agree to indemnify,
+ defend, and hold each Contributor harmless for any liability
+ incurred by, or claims asserted against, such Contributor by reason
+ of your accepting any such warranty or additional liability.
+
+ END OF TERMS AND CONDITIONS
+
+ APPENDIX: How to apply the Apache License to your work.
+
+ To apply the Apache License to your work, attach the following
+ boilerplate notice, with the fields enclosed by brackets "[]"
+ replaced with your own identifying information. (Don't include
+ the brackets!) The text should be enclosed in the appropriate
+ comment syntax for the file format. We also recommend that a
+ file or class name and description of purpose be included on the
+ same "printed page" as the copyright notice for easier
+ identification within third-party archives.
+
+ Copyright [yyyy] [name of copyright owner]
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
🧩
Skill-Anpassung
Neu
skills/content-creation/SKILL.md
__preamble__
Von Daniel • 2026-04-24 09:26:29.448853
Worum geht es?
Neuer Skill „content-creation" wird angelegt
Guidelines and frameworks for creating effective marketing content across channels.
Technischen Diff anzeigen
--- a/skills/content-creation/SKILL.md
+++ b/skills/content-creation/SKILL.md
@@ -0,0 +1,5 @@
+
+# Content Creation Skill
+
+Guidelines and frameworks for creating effective marketing content across channels.
+
🧩
Skill-Anpassung
Neu
skills/content-creation/SKILL.md
__frontmatter__
Von Daniel • 2026-04-24 09:26:29.448041
Worum geht es?
Neuer Skill „content-creation" — Draft marketing content across channels — blog posts, social media, email newsletters, landing pages, press releases, and case studies.
Technischen Diff anzeigen
--- a/skills/content-creation/SKILL.md
+++ b/skills/content-creation/SKILL.md
@@ -0,0 +1,5 @@
+---
+name: content-creation
+description: Draft marketing content across channels — blog posts, social media, email newsletters, landing pages, press releases, and case studies. Use when writing any marketing content, when you need channel-specific formatting, SEO-optimized copy, headline options, or calls to action.
+user-invocable: false
+---
🧩
Skill-Anpassung
Neu
skills/content-creation/SKILL.md
## Writing Best Practices by Channel
Von Daniel • 2026-04-24 09:26:29.447236
Worum geht es?
Neuer Skill „content-creation" wird angelegt
- Write at an 8th-grade reading level for broad audiences; adjust up for technical audiences
Technischen Diff anzeigen
--- a/skills/content-creation/SKILL.md
+++ b/skills/content-creation/SKILL.md
@@ -0,0 +1,32 @@
+## Writing Best Practices by Channel
+
+### Blog
+- Write at an 8th-grade reading level for broad audiences; adjust up for technical audiences
+- Use short paragraphs (2-4 sentences)
+- Include subheadings every 200-300 words
+- Use bullet points and numbered lists to break up text
+- Include at least one data point, example, or quote per section
+- Write in active voice
+- Front-load key information in each section
+
+### Social Media
+- **LinkedIn**: professional but human, paragraph breaks for readability, personal stories and lessons perform well, 1,300 characters is the sweet spot before "see more"
+- **Twitter/X**: concise and punchy, strong opening words, threads for longer narratives, engage with replies
+- **Instagram**: visual-first captions, storytelling hooks, line breaks for readability, hashtags in first comment or at end
+- **Facebook**: conversational tone, questions drive comments, shorter posts (under 80 characters) get more engagement for links
+
+### Email
+- Write subject lines that create urgency, curiosity, or state clear value
+- Personalize where possible (name, company, behavior)
+- One primary CTA per email — make it visually distinct
+- Keep body copy scannable: bold key phrases, short paragraphs, bullet points
+- Test everything: subject lines, send times, CTA copy, layout
+- Mobile-first: most email is read on mobile
+
+### Web (Landing Pages, Product Pages)
+- Lead with benefits, not features
+- Use "you" language — speak to the reader directly
+- Minimize jargon unless the audience expects it
+- Every section should answer "so what?" from the reader's perspective
+- Reduce friction: fewer form fields, clear next steps, trust signals near CTAs
+
🧩
Skill-Anpassung
Neu
skills/content-creation/SKILL.md
## SEO Fundamentals for Content
Von Daniel • 2026-04-24 09:26:29.446437
Worum geht es?
Neuer Skill „content-creation" wird angelegt
- Identify one primary keyword and 2-3 secondary keywords per piece
Technischen Diff anzeigen
--- a/skills/content-creation/SKILL.md
+++ b/skills/content-creation/SKILL.md
@@ -0,0 +1,24 @@
+## SEO Fundamentals for Content
+
+### Keyword Strategy
+- Identify one primary keyword and 2-3 secondary keywords per piece
+- Use the primary keyword in: headline, first paragraph, one subheading, meta description, URL slug
+- Use secondary keywords naturally in body copy and subheadings
+- Do not keyword-stuff — write for humans first
+
+### On-Page SEO Checklist
+- Title tag: under 60 characters, includes primary keyword
+- Meta description: under 160 characters, includes primary keyword, compels click
+- URL slug: short, descriptive, includes primary keyword
+- H1: one per page, matches or closely reflects the title tag
+- H2/H3: descriptive, include secondary keywords where natural
+- Image alt text: descriptive, includes keyword where relevant
+- Internal links: 2-3 links to related content on your site
+- External links: 1-2 links to authoritative sources
+
+### Content-SEO Integration
+- Aim for comprehensive coverage of the topic (search engines reward depth)
+- Answer related questions (check "People Also Ask" for ideas)
+- Update and refresh high-performing content regularly
+- Structure content for featured snippets: definition paragraphs, numbered lists, tables
+
🧩
Skill-Anpassung
Neu
skills/content-creation/SKILL.md
## Headline and Hook Formulas
Von Daniel • 2026-04-24 09:26:29.445643
Worum geht es?
Neuer Skill „content-creation" wird angelegt
- **How to [achieve result] [without common obstacle]** — "How to Double Your Email Open Rates Without Sending More Emails"
Technischen Diff anzeigen
--- a/skills/content-creation/SKILL.md
+++ b/skills/content-creation/SKILL.md
@@ -0,0 +1,19 @@
+## Headline and Hook Formulas
+
+### Headline Formulas
+- **How to [achieve result] [without common obstacle]** — "How to Double Your Email Open Rates Without Sending More Emails"
+- **[Number] [adjective] ways to [achieve result]** — "7 Proven Ways to Reduce Customer Churn"
+- **Why [common belief] is wrong (and what to do instead)** — "Why More Content Is Not the Answer (And What to Do Instead)"
+- **The [adjective] guide to [topic]** — "The Complete Guide to B2B Content Marketing"
+- **[Do this], not [that]** — "Build a Community, Not Just an Audience"
+- **What [impressive result] taught us about [topic]** — "What 10,000 A/B Tests Taught Us About Email Subject Lines"
+- **[topic]: what [audience] needs to know in [year]** — "SEO: What Marketers Need to Know in 2025"
+
+### Hook Formulas (Opening Lines)
+- **Surprising statistic**: "73% of marketers say their biggest challenge is not budget — it is focus."
+- **Contrarian statement**: "The best marketing campaigns start with saying no to most channels."
+- **Question**: "When was the last time a marketing email actually changed what you bought?"
+- **Scenario**: "Imagine launching a campaign and knowing, before it goes live, which messages will land."
+- **Bold claim**: "Most landing pages lose half their visitors in the first three seconds."
+- **Story opening**: "Last quarter, our team was spending 20 hours a week on reporting. Here is what we did about it."
+
🧩
Skill-Anpassung
Neu
skills/content-creation/SKILL.md
## Content Type Templates
Von Daniel • 2026-04-24 09:26:29.444789
Worum geht es?
Neuer Skill „content-creation" wird angelegt
1. **Headline** — clear, benefit-driven, includes primary keyword (aim for 60 characters or less for SEO)
Technischen Diff anzeigen
--- a/skills/content-creation/SKILL.md
+++ b/skills/content-creation/SKILL.md
@@ -0,0 +1,50 @@
+## Content Type Templates
+
+### Blog Post Structure
+1. **Headline** — clear, benefit-driven, includes primary keyword (aim for 60 characters or less for SEO)
+2. **Introduction** (100-150 words) — hook the reader with a question, statistic, bold claim, or relatable scenario. State what the post will cover. Include primary keyword.
+3. **Body sections** (3-5 sections) — each with a descriptive subheading (H2). Use H3 for subsections. One core idea per section with supporting evidence, examples, or data.
+4. **Conclusion** (75-100 words) — summarize key takeaways, reinforce the main message, include a call to action.
+5. **Meta description** — under 160 characters, includes primary keyword, compels the click.
+
+### Social Media Post Structure
+- **Hook** — first line grabs attention (question, bold statement, number)
+- **Body** — 2-4 concise points or a short narrative
+- **CTA** — what should the reader do next (comment, click, share, tag)
+- **Hashtags** — 3-5 relevant hashtags (platform-dependent)
+
+### Email Newsletter Structure
+- **Subject line** — under 50 characters, creates curiosity or states clear value
+- **Preview text** — complements the subject line, does not repeat it
+- **Header/hero** — visual anchor and one-line value statement
+- **Body sections** — 2-3 content blocks, each scannable with a bold intro sentence
+- **Primary CTA** — one clear action per email
+- **Footer** — unsubscribe link, company info, social links
+
+### Landing Page Structure
+- **Headline** — primary benefit in under 10 words
+- **Subheadline** — elaborates on the headline with supporting context
+- **Hero section** — headline, subheadline, primary CTA, supporting image or video
+- **Value propositions** — 3-4 benefit-driven sections with icons or images
+- **Social proof** — testimonials, logos, stats, case study snippets
+- **Objection handling** — FAQ or trust signals
+- **Final CTA** — repeat the primary call to action
+
+### Press Release Structure
+- **Headline** — factual, newsworthy, under 80 characters
+- **Subheadline** — optional, adds context
+- **Dateline** — city, state, date
+- **Lead paragraph** — who, what, when, where, why in 2-3 sentences
+- **Body paragraphs** — supporting details, quotes, context
+- **Boilerplate** — company description (standardized)
+- **Media contact** — name, email, phone
+
+### Case Study Structure
+- **Title** — "[Customer] achieves [result] with [product]"
+- **Snapshot** — customer name, industry, company size, product used, key result (sidebar or callout box)
+- **Challenge** — what problem the customer faced
+- **Solution** — what was implemented and how
+- **Results** — quantified outcomes with specific metrics
+- **Quote** — customer testimonial
+- **CTA** — learn more, get a demo, read more case studies
+
🧩
Skill-Anpassung
Neu
skills/content-creation/SKILL.md
## Call-to-Action Best Practices
Von Daniel • 2026-04-24 09:26:29.443864
Worum geht es?
Neuer Skill „content-creation" wird angelegt
- Use action verbs: "Get", "Start", "Download", "Join", "Try", "See"
Technischen Diff anzeigen
--- a/skills/content-creation/SKILL.md
+++ b/skills/content-creation/SKILL.md
@@ -0,0 +1,22 @@
+## Call-to-Action Best Practices
+
+### CTA Principles
+- Use action verbs: "Get", "Start", "Download", "Join", "Try", "See"
+- Be specific about what happens next: "Start your free trial" is better than "Submit"
+- Create urgency when genuine: "Join 500 teams already using this" or "Limited spots available"
+- Reduce risk: "No credit card required", "Cancel anytime", "Free for 14 days"
+- One primary CTA per page or email — too many choices reduce conversions
+
+### CTA Examples by Context
+- **Blog post**: "Read our complete guide to [topic]" / "Subscribe for weekly insights"
+- **Landing page**: "Start free trial" / "Get a demo" / "See pricing"
+- **Email**: "Read the full story" / "Claim your spot" / "Reply and tell us"
+- **Social media**: "Drop a comment if you agree" / "Save this for later" / "Link in bio"
+- **Case study**: "See how [product] can work for your team" / "Talk to our team"
+
+### CTA Placement
+- Above the fold on landing pages (do not make users scroll to act)
+- After establishing value in emails (not in the first sentence)
+- At the end of blog posts (after you have earned the reader's trust)
+- In-line within content when contextually relevant (e.g., a related guide mention)
+- Repeat the primary CTA at the bottom of long-form pages
🧩
Skill-Anpassung
Neu
skills/consolidate-memory/SKILL.md
__preamble__
Von Daniel • 2026-04-24 09:26:29.442993
Worum geht es?
Neuer Skill „consolidate-memory" wird angelegt
You're doing a reflective pass over what you've learned about this user and their work. The goal: a future session should be able to orient quickly — who they w…
Technischen Diff anzeigen
--- a/skills/consolidate-memory/SKILL.md
+++ b/skills/consolidate-memory/SKILL.md
@@ -0,0 +1,7 @@
+
+# Memory Consolidation
+
+You're doing a reflective pass over what you've learned about this user and their work. The goal: a future session should be able to orient quickly — who they work with, what they're focused on, how they like things done — without re-asking.
+
+Your system prompt's auto-memory section defines the directory, file format, and memory types. Follow it.
+
🧩
Skill-Anpassung
Neu
skills/consolidate-memory/SKILL.md
__frontmatter__
Von Daniel • 2026-04-24 09:26:29.442131
Worum geht es?
Neuer Skill „consolidate-memory" — Reflective pass over your memory files — merge duplicates, fix stale facts, prune the index.
Technischen Diff anzeigen
--- a/skills/consolidate-memory/SKILL.md
+++ b/skills/consolidate-memory/SKILL.md
@@ -0,0 +1,4 @@
+---
+name: consolidate-memory
+description: "Reflective pass over your memory files — merge duplicates, fix stale facts, prune the index."
+---
🧩
Skill-Anpassung
Neu
skills/consolidate-memory/SKILL.md
## Phase 3 — Tidy the index
Von Daniel • 2026-04-24 09:26:29.441297
Worum geht es?
Neuer Skill „consolidate-memory" wird angelegt
Update `MEMORY.md` so it stays under 200 lines and ~25KB. One line per entry, under ~150 chars: `- [Title](file.md) — one-line hook`.
Technischen Diff anzeigen
--- a/skills/consolidate-memory/SKILL.md
+++ b/skills/consolidate-memory/SKILL.md
@@ -0,0 +1,9 @@
+## Phase 3 — Tidy the index
+
+Update `MEMORY.md` so it stays under 200 lines and ~25KB. One line per entry, under ~150 chars: `- [Title](file.md) — one-line hook`.
+
+- Remove pointers to retired memories
+- Shorten any line carrying detail that belongs in the topic file
+- Add anything newly important
+
+Finish with a short summary: how many files you touched and what changed.
🧩
Skill-Anpassung
Neu
skills/consolidate-memory/SKILL.md
## Phase 2 — Consolidate
Von Daniel • 2026-04-24 09:26:29.440338
Worum geht es?
Neuer Skill „consolidate-memory" wird angelegt
**Separate the durable from the dated.** Preferences, working style, key relationships, and recurring workflows are durable — keep and sharpen them. Specific pr…
Technischen Diff anzeigen
--- a/skills/consolidate-memory/SKILL.md
+++ b/skills/consolidate-memory/SKILL.md
@@ -0,0 +1,10 @@
+## Phase 2 — Consolidate
+
+**Separate the durable from the dated.** Preferences, working style, key relationships, and recurring workflows are durable — keep and sharpen them. Specific projects, deadlines, and one-off tasks are dated — if the date has passed or the work is done, retire the file or fold the lasting takeaway (e.g. "user prefers X format for launch docs") into a durable one.
+
+**Merge overlaps.** If two files describe the same person, project, or preference, combine into one and keep the richer file's path.
+
+**Fix time references.** Convert "next week", "this quarter", "by Friday" to absolute dates so they stay readable later.
+
+**Drop what's easy to re-find.** If a memory just restates something you could pull from the user's calendar, docs, or connected tools on demand, cut it. Keep what's hard to re-derive: stated preferences, context behind a decision, who to go to for what.
+
🧩
Skill-Anpassung
Neu
skills/consolidate-memory/SKILL.md
## Phase 1 — Take stock
Von Daniel • 2026-04-24 09:26:29.439532
Worum geht es?
Neuer Skill „consolidate-memory" wird angelegt
- List the memory directory and read the index (`MEMORY.md`)
Technischen Diff anzeigen
--- a/skills/consolidate-memory/SKILL.md
+++ b/skills/consolidate-memory/SKILL.md
@@ -0,0 +1,5 @@
+## Phase 1 — Take stock
+
+- List the memory directory and read the index (`MEMORY.md`)
+- Skim each topic file. Note which ones overlap, which look stale, which are thin.
+
🧩
Skill-Anpassung
Neu
skills/competitive-brief/SKILL.md
__preamble__
Von Daniel • 2026-04-24 09:26:29.438705
Worum geht es?
Neuer Skill „competitive-brief" wird angelegt
> If you see unfamiliar placeholders or need to check which tools are connected, see [CONNECTORS.md](../../CONNECTORS.md).
Technischen Diff anzeigen
--- a/skills/competitive-brief/SKILL.md
+++ b/skills/competitive-brief/SKILL.md
@@ -0,0 +1,7 @@
+
+# Competitive Brief
+
+> If you see unfamiliar placeholders or need to check which tools are connected, see [CONNECTORS.md](../../CONNECTORS.md).
+
+Research competitors and generate a structured competitive analysis comparing positioning, messaging, content strategy, and market presence.
+
🧩
Skill-Anpassung
Neu
skills/competitive-brief/SKILL.md
__frontmatter__
Von Daniel • 2026-04-24 09:26:29.437765
Worum geht es?
Neuer Skill „competitive-brief" — Research competitors and generate a positioning and messaging comparison with content gaps, opportunities, and threats.
Technischen Diff anzeigen
--- a/skills/competitive-brief/SKILL.md
+++ b/skills/competitive-brief/SKILL.md
@@ -0,0 +1,5 @@
+---
+name: competitive-brief
+description: Research competitors and generate a positioning and messaging comparison with content gaps, opportunities, and threats. Use when building sales battlecards, when finding positioning gaps and messaging angles competitors haven't claimed, or when a competitor makes a move and you need to assess the impact.
+argument-hint: ""
+---
🧩
Skill-Anpassung
Neu
skills/competitive-brief/SKILL.md
## Trigger
Von Daniel • 2026-04-24 09:26:29.436633
Worum geht es?
Neuer Skill „competitive-brief" wird angelegt
User runs `/competitive-brief` or asks for a competitive analysis, competitor research, or market comparison.
Technischen Diff anzeigen
--- a/skills/competitive-brief/SKILL.md
+++ b/skills/competitive-brief/SKILL.md
@@ -0,0 +1,4 @@
+## Trigger
+
+User runs `/competitive-brief` or asks for a competitive analysis, competitor research, or market comparison.
+
🧩
Skill-Anpassung
Neu
skills/competitive-brief/SKILL.md
## Research Process
Von Daniel • 2026-04-24 09:26:29.435488
Worum geht es?
Neuer Skill „competitive-brief" wird angelegt
For each competitor, research using web search:
Technischen Diff anzeigen
--- a/skills/competitive-brief/SKILL.md
+++ b/skills/competitive-brief/SKILL.md
@@ -0,0 +1,37 @@
+## Research Process
+
+For each competitor, research using web search:
+
+1. **Company website** — homepage messaging, product pages, about page, pricing page
+2. **Recent news** — press releases, funding announcements, product launches, partnerships (last 6 months)
+3. **Content strategy** — blog topics, resource types, social media presence, webinars, podcasts
+4. **Review sites and comparisons** — third-party comparisons, analyst mentions, customer review themes
+5. **Job postings** — hiring signals that indicate strategic direction (optional)
+
+### Research Sources
+
+Gather intelligence from these categories of sources:
+
+#### Primary Sources (Direct from Competitor)
+- **Website**: homepage, product pages, pricing, about page, careers
+- **Blog and resource center**: content themes, publishing frequency, depth
+- **Social media profiles**: messaging, engagement, content strategy
+- **Product demos and free trials**: UX, features, onboarding experience
+- **Webinars and events**: topics, speakers, audience engagement
+- **Press releases and newsroom**: announcements, partnerships, milestones
+- **Job postings**: hiring signals that reveal strategic priorities (e.g., hiring for a new product line or market)
+
+#### Secondary Sources (Third-Party)
+- **Review sites**: G2, Capterra, TrustRadius, Product Hunt — customer sentiment themes
+- **Analyst reports**: Gartner, Forrester, IDC — market positioning and category placement
+- **News coverage**: TechCrunch, industry publications — funding, partnerships, narrative
+- **Social listening**: mentions, sentiment, share of voice across social platforms
+- **SEO tools**: keyword rankings, organic traffic estimates, content gaps
+- **Financial filings**: revenue, growth rate, investment areas (for public companies)
+- **Community forums**: community forums (e.g. Reddit, Discourse), industry chat groups (e.g. Slack communities) — user sentiment
+
+### Research Cadence
+- **Deep competitive analysis**: quarterly (full research across all sources)
+- **Competitive monitoring**: monthly (scan for new announcements, content, messaging changes)
+- **Real-time alerts**: ongoing (set up alerts for competitor brand mentions, press, job postings)
+
🧩
Skill-Anpassung
Neu
skills/competitive-brief/SKILL.md
## Output
Von Daniel • 2026-04-24 09:26:29.434288
Worum geht es?
Neuer Skill „competitive-brief" wird angelegt
Present the full competitive brief with clear formatting. Note the date of the research so the user knows the freshness of the data.
Technischen Diff anzeigen
--- a/skills/competitive-brief/SKILL.md
+++ b/skills/competitive-brief/SKILL.md
@@ -0,0 +1,11 @@
+## Output
+
+Present the full competitive brief with clear formatting. Note the date of the research so the user knows the freshness of the data.
+
+After the brief, ask:
+
+"Would you like me to:
+- Create a battlecard for your sales team based on this analysis?
+- Draft messaging that exploits the positioning gaps identified?
+- Dive deeper into any specific competitor?
+- Set up a competitive monitoring plan?"
🧩
Skill-Anpassung
Neu
skills/competitive-brief/SKILL.md
## Inputs
Von Daniel • 2026-04-24 09:26:29.433202
Worum geht es?
Neuer Skill „competitive-brief" wird angelegt
Gather the following from the user:
Technischen Diff anzeigen
--- a/skills/competitive-brief/SKILL.md
+++ b/skills/competitive-brief/SKILL.md
@@ -0,0 +1,19 @@
+## Inputs
+
+Gather the following from the user:
+
+1. **Competitor name(s)** — one or more competitors to analyze (required)
+
+2. **Your company/product context** (optional but recommended):
+ - What you sell and to whom
+ - Your positioning or value proposition
+ - Key differentiators you want to highlight
+
+3. **Focus areas** (optional — if not specified, cover all):
+ - Messaging and positioning
+ - Product and feature comparison
+ - Content and thought leadership strategy
+ - Recent announcements and news
+ - Pricing and packaging (if publicly available)
+ - Market presence and audience
+
🧩
Skill-Anpassung
Neu
skills/competitive-brief/SKILL.md
## Competitive Brief Structure
Von Daniel • 2026-04-24 09:26:29.432104
Worum geht es?
Neuer Skill „competitive-brief" wird angelegt
- 2-3 sentence overview of the competitive landscape
Technischen Diff anzeigen
--- a/skills/competitive-brief/SKILL.md
+++ b/skills/competitive-brief/SKILL.md
@@ -0,0 +1,79 @@
+## Competitive Brief Structure
+
+### 1. Executive Summary
+- 2-3 sentence overview of the competitive landscape
+- Key takeaway: your biggest opportunity and biggest threat
+
+### 2. Competitor Profiles
+
+For each competitor:
+
+#### Company Overview
+- What they do (one-sentence positioning)
+- Target audience
+- Company size/stage indicators (funding, employee count if available)
+- Key recent developments
+
+#### Messaging Analysis
+- Primary tagline or headline
+- Core value proposition
+- Key messaging themes (3-5)
+- Tone and voice characterization
+- How they describe the problem they solve
+
+#### Product/Solution Positioning
+- How they categorize their product
+- Key features they emphasize
+- Claimed differentiators
+- Pricing approach (if publicly available)
+
+#### Content Strategy
+- Blog frequency and topics
+- Content types produced (ebooks, webinars, case studies, tools)
+- Social media presence and engagement approach
+- Thought leadership themes
+- SEO strategy observations (what terms they appear to target)
+
+#### Strengths
+- What they do well
+- Where their messaging resonates
+- Competitive advantages
+
+#### Weaknesses
+- Gaps in their messaging or positioning
+- Areas where they are vulnerable
+- Customer complaints or criticism themes (from reviews)
+
+### 3. Messaging Comparison Matrix
+
+| Dimension | Your Company | Competitor A | Competitor B |
+|-----------|-------------|--------------|--------------|
+| Primary tagline | ... | ... | ... |
+| Target buyer | ... | ... | ... |
+| Key differentiator | ... | ... | ... |
+| Tone/voice | ... | ... | ... |
+| Core value prop | ... | ... | ... |
+
+(Include user's company only if they provided their positioning context)
+
+### 4. Content Gap Analysis
+- Topics your competitors cover that you do not (or vice versa)
+- Content formats they use that you could adopt
+- Keywords or themes they own vs. opportunities they have missed
+
+### 5. Opportunities
+- Positioning gaps you can exploit
+- Messaging angles your competitors have not claimed
+- Audience segments they are underserving
+- Content or channel opportunities
+
+### 6. Threats
+- Areas where competitors are strong and you are vulnerable
+- Trends that favor their positioning
+- Recent moves that could shift the market
+
+### 7. Recommended Actions
+- 3-5 specific, actionable recommendations based on the analysis
+- Quick wins (things you can act on this week)
+- Strategic moves (longer-term positioning or content investments)
+
🧩
Skill-Anpassung
Neu
skills/competitive-brief/SKILL.md
## Analysis Frameworks
Von Daniel • 2026-04-24 09:26:29.431170
Worum geht es?
Neuer Skill „competitive-brief" wird angelegt
For each competitor, document:
Technischen Diff anzeigen
--- a/skills/competitive-brief/SKILL.md
+++ b/skills/competitive-brief/SKILL.md
@@ -0,0 +1,169 @@
+## Analysis Frameworks
+
+### Messaging Comparison Frameworks
+
+#### Value Proposition Comparison
+
+For each competitor, document:
+- **Promise**: what they promise the customer will achieve
+- **Evidence**: how they prove the promise (data, testimonials, demos)
+- **Mechanism**: how their product delivers on the promise (the "how it works")
+- **Uniqueness**: what they claim only they can do
+
+#### Narrative Analysis
+
+Identify each competitor's story arc:
+- **Villain**: what problem or enemy they position against (status quo, legacy tools, complexity)
+- **Hero**: who is the hero in their story (the customer? the product? the team?)
+- **Transformation**: what before/after do they promise?
+- **Stakes**: what happens if you do not act?
+
+This reveals positioning strategy and emotional appeals.
+
+#### Messaging Strengths and Vulnerabilities
+
+For each competitor's messaging, assess:
+- **Clarity**: can a first-time visitor understand what they do in 5 seconds?
+- **Differentiation**: is their positioning distinct or generic?
+- **Proof**: do they back up claims with evidence?
+- **Consistency**: is messaging consistent across channels?
+- **Resonance**: does their messaging address real customer pain points?
+
+### Content Gap Analysis Methodology
+
+#### Content Audit Comparison
+
+Map content across competitors by:
+
+| Topic/Theme | Your Content | Competitor A | Competitor B | Gap? |
+|-------------|-------------|--------------|--------------|------|
+| [Topic 1] | Blog post, ebook | Blog series, webinar | Nothing | Opportunity for B |
+| [Topic 2] | Nothing | Whitepaper | Blog post, video | Gap for you |
+| [Topic 3] | Case study | Nothing | Case study | Parity |
+
+#### Content Type Coverage
+
+| Content Format | You | Comp A | Comp B | Comp C |
+|----------------|-----|--------|--------|--------|
+| Blog posts | Y | Y | Y | Y |
+| Case studies | Y | Y | N | Y |
+| Ebooks/Whitepapers | N | Y | Y | N |
+| Webinars | Y | Y | Y | N |
+| Podcast | N | N | Y | N |
+| Video content | N | Y | Y | Y |
+| Interactive tools | N | N | N | Y |
+| Templates/Resources | Y | N | Y | N |
+
+#### Identifying Content Opportunities
+1. **Topics they cover that you do not**: potential gaps in your content strategy
+2. **Topics you cover that they do not**: potential differentiators to amplify
+3. **Formats they use that you do not**: format gaps that could reach new audiences
+4. **Audience segments they address that you do not**: underserved audiences
+5. **Search terms they rank for that you do not**: SEO content gaps
+
+#### Content Quality Assessment
+- Depth: surface-level or comprehensive?
+- Freshness: regularly updated or stale?
+- Engagement: do posts get comments, shares, links?
+- Production value: text-only or multimedia?
+- Thought leadership: original insights or rehashed content?
+
+### Positioning Strategy
+
+#### Positioning Statement Framework
+
+For your company and each competitor, define (or reverse-engineer) their positioning statement:
+
+> For [target audience], [product/company] is the [category] that [key benefit/differentiator] because [reason to believe].
+
+Example:
+> For mid-market SaaS marketing teams, Acme is the campaign management platform that unifies planning and execution in one workspace because it is built on a single data model that eliminates tool fragmentation.
+
+#### Positioning Map
+
+Plot competitors on a 2x2 matrix using the two most important dimensions for your market:
+
+Common axis pairs:
+- **Price vs. Capability** (low cost / basic vs. premium / full-featured)
+- **Ease of Use vs. Power** (simple / limited vs. complex / flexible)
+- **SMB Focus vs. Enterprise Focus** (self-serve / individual vs. sales-led / team)
+- **Point Solution vs. Platform** (does one thing well vs. does many things)
+- **Innovative vs. Established** (new approach vs. proven track record)
+
+Identify which quadrant is underserved or where your differentiation is strongest.
+
+#### Category Strategy
+- **Create a new category**: if you do something genuinely different, define and own the category (high risk, high reward)
+- **Reframe the existing category**: change how buyers evaluate the category to favor your strengths
+- **Win the existing category**: compete directly on recognized criteria and out-execute
+- **Niche within the category**: own a specific segment, use case, or audience
+
+#### Positioning Pitfalls to Avoid
+- Positioning against a competitor rather than for a customer need
+- Claiming too many differentiators (pick 1-2 that matter most)
+- Using category jargon the customer does not use
+- Positioning on features rather than outcomes
+- Changing positioning too frequently (confuses the market)
+
+### Battlecard Creation
+
+A competitive battlecard is a one-page reference for sales and marketing teams. Include:
+
+#### Header
+- Competitor name and logo
+- Last updated date
+- Competitive win rate (if tracked)
+
+#### Quick Overview
+- What they do (one sentence)
+- Their target customer
+- Pricing model summary
+- Key recent developments
+
+#### Their Pitch
+- How they describe themselves
+- Their primary tagline
+- Their top 3 claimed differentiators
+
+#### Strengths (Be Honest)
+- Where they genuinely compete well
+- What customers like about them (from reviews)
+- Features or capabilities where they lead
+
+#### Weaknesses
+- Consistent customer complaints (from reviews)
+- Technical limitations
+- Gaps in their offering
+- Areas where customers report dissatisfaction
+
+#### Our Differentiators
+- 3-5 specific ways your product or approach is different
+- For each: the differentiator, why it matters to the customer, and proof
+
+#### Objection Handling
+| If the prospect says... | Respond with... |
+|------------------------|----------------|
+| "[Competitor] does X too" | "Here is how our approach differs..." |
+| "[Competitor] is cheaper" | "Here is what that price difference gets you..." |
+| "I've heard good things about [Competitor]" | "They are strong at X. Where we differ is..." |
+
+#### Landmines to Set
+Questions to ask prospects early that highlight your advantages:
+- "How do you currently handle [area where competitor is weak]?"
+- "How important is [capability you have that they lack]?"
+- "Have you considered [risk that your product mitigates]?"
+
+#### Landmines to Defuse
+Questions competitors might encourage prospects to ask you, with prepared responses.
+
+#### Win/Loss Themes
+- Common reasons deals are won against this competitor
+- Common reasons deals are lost to this competitor
+- What types of prospects favor them vs. you
+
+#### Battlecard Maintenance
+- Review and update quarterly at minimum
+- Update immediately after major competitor announcements
+- Incorporate win/loss feedback from sales team
+- Track which objection-handling responses are most effective
+
Neuer Skill „clickup-dokumentation" — Verwende diesen Skill immer dann, wenn der Nutzer eine Dokumentation, ein Protokoll, ein Gesprächsprotokoll oder eine Zusammenfassung in ClickUp speichern möchte – oder wenn er neue Tasks oder eine…
Technischen Diff anzeigen
--- a/skills/clickup-dokumentation/SKILL.md
+++ b/skills/clickup-dokumentation/SKILL.md
@@ -0,0 +1,16 @@
+---
+name: clickup-dokumentation
+description: >
+ Verwende diesen Skill immer dann, wenn der Nutzer eine Dokumentation, ein
+ Protokoll, ein Gesprächsprotokoll oder eine Zusammenfassung in ClickUp
+ speichern möchte – oder wenn er neue Tasks oder eine KI-Idee in ClickUp
+ festhalten will. Trigger-Phrasen: „dokumentiere das", „dokumentiere den Chat",
+ „leg das in ClickUp an", „erstelle ein ClickUp-Dokument", „nimm die Idee in
+ ClickUp auf", „halte das fest", „erstelle eine Aufgabe in ClickUp", „erstell
+ Tasks", „schreib das als Aufgabe rein", „speichere das in der Knowledge Base",
+ „mach eine Doku daraus", „leg eine Aufgabe an". Triggere auch implizit, wenn
+ ein Projekt, Gespräch oder Prozess abgeschlossen ist und Dokumentation sinnvoll
+ wäre – auch ohne explizite Erwähnung von ClickUp. Wichtig: Bei „dokumentiere"
+ IMMER beides – Dokument in der Knowledge Base UND Tasks in Daniels Bereich.
+ Bei „Tasks erstellen" NUR Tasks anlegen, keine Dokumentation.
+---
🧩
Skill-Anpassung
Neu
skills/clickup-dokumentation/SKILL.md
## ⚠️ FOLGE-CHAT ÜBERGABE
Von Daniel • 2026-04-24 09:26:29.425444
Worum geht es?
Neuer Skill „clickup-dokumentation" wird angelegt
**Status:** [Aktueller Stand in einem Satz]
Technischen Diff anzeigen
--- a/skills/clickup-dokumentation/SKILL.md
+++ b/skills/clickup-dokumentation/SKILL.md
@@ -0,0 +1,8 @@
+## ⚠️ FOLGE-CHAT ÜBERGABE
+**Status:** [Aktueller Stand in einem Satz]
+**Letzter Fehler:** [Falls vorhanden]
+**Nächster Schritt:** [Was als nächstes zu tun ist]
+```
+
+---
+
🧩
Skill-Anpassung
Neu
skills/clickup-dokumentation/SKILL.md
## Projektziel / Beschreibung
Von Daniel • 2026-04-24 09:26:29.424648
Worum geht es?
Neuer Skill „clickup-dokumentation" wird angelegt
[Worum ging es? Kontext und Ausgangssituation in 3–5 Sätzen.]
Technischen Diff anzeigen
--- a/skills/clickup-dokumentation/SKILL.md
+++ b/skills/clickup-dokumentation/SKILL.md
@@ -0,0 +1,3 @@
+## Projektziel / Beschreibung
+[Worum ging es? Kontext und Ausgangssituation in 3–5 Sätzen.]
+
🧩
Skill-Anpassung
Neu
skills/clickup-dokumentation/SKILL.md
## Offene Punkte / Nächste Schritte
Von Daniel • 2026-04-24 09:26:29.423827
Worum geht es?
Neuer Skill „clickup-dokumentation" wird angelegt
[Was ist noch offen? Als nummerierte Liste – mit Task-Links wenn vorhanden.]
Technischen Diff anzeigen
--- a/skills/clickup-dokumentation/SKILL.md
+++ b/skills/clickup-dokumentation/SKILL.md
@@ -0,0 +1,68 @@
+## Offene Punkte / Nächste Schritte
+[Was ist noch offen? Als nummerierte Liste – mit Task-Links wenn vorhanden.]
+```
+
+#### Typ B: Technische Dokumentation / System-Referenz
+
+Verwenden bei: neue Tools, API-Dokumentation, Server-Setup, Systembeschreibungen.
+
+Standardabschnitte (je nach Kontext sinnvoll einsetzen):
+
+- `## Übersicht` — Kurzbeschreibung in 2-3 Sätzen: Was ist das? Wozu dient es?
+- `## Infrastruktur` — Server, Pfade, Ports, URLs (als Tabelle)
+- `## API-Endpunkte` — Endpunkt, Methode, Funktion (als Tabelle)
+- `## Authentifizierung` — Zugangsmethode, Key-Speicherort (Passwort-Codes nutzen!)
+- `## Ablauf / Prozess` — Schritt-für-Schritt-Anleitung oder Workflow-Beschreibung
+- `## Wartung & Troubleshooting` — Befehle zum Prüfen, Neustarten, Logs anschauen
+- `## Bekannte Probleme` — Dokumentierte Fehler und Workarounds
+- `## Verwandte Dokumente` — Links zu anderen ClickUp Docs
+
+#### Mischformen
+
+Falls ein Dokument beides enthält (z.B. Projektdoku mit technischen Details), werden die Abschnitte kombiniert: Typ-A-Pflichtabschnitte zuerst, danach relevante Typ-B-Abschnitte.
+
+### 6.4 Code-Blöcke — IMMER mit Sprachkennung
+
+| Sprache | Kennung |
+|---|---|
+| Shell-Befehle | ` ```bash ` |
+| SQL | ` ```sql ` |
+| Python | ` ```python ` |
+| JavaScript / Node | ` ```javascript ` |
+| JSON-Konfigurationen | ` ```json ` |
+| YAML | ` ```yaml ` |
+| Markdown (Beispiele) | ` ```markdown ` |
+
+**Nie** einen Code-Block ohne Sprachkennung verwenden.
+
+### 6.5 Tabellen statt Fließtext
+
+Für strukturierte Daten (Parameter, Endpunkte, Server-Infos, Zugangsdaten, Konfigurationen) **immer** Markdown-Tabellen verwenden statt Fließtext.
+
+### 6.6 Passwort-Handling mit [OV-XXXXXX]-Codes
+
+Passwörter dürfen **NIEMALS** im Klartext in Dokumentationen, Tickets oder anderen internen Texten stehen. Stattdessen wird ein eindeutiger Platzhalter-Code im Format `[OV-XXXXXX]` verwendet.
+
+**Vorgehensweise bei neuen Passwörtern:**
+
+1. Zufälligen 6-stelligen Code generieren: `[OV-XXXXXX]` (z.B. `[OV-483921]`)
+2. In der Dokumentation als Platzhalter verwenden: `Passwort: siehe [OV-483921] in Bitwarden`
+3. Den Bitwarden-Eintrag mit demselben Code im Titel anlegen: `[OV-483921] GREYHOUND RPC-API`
+4. Den Code in der ClickUp-Liste **„Passwort-Codes"** registrieren:
+ - Ort: Operations Knowledge Base → Datenquellen & Systeme → Passwort-Codes
+ - **List-ID: `901216066260`**
+ - Angabe: Wofür das Passwort ist + Ersteller-Kürzel (M=Martin, N=Nils, D=Daniel, A=Antonia)
+
+**Wichtig:**
+- Das Präfix „OV" und die eckigen Klammern verhindern Verwechslung mit Telefonnummern, PINs etc.
+- Weder in der Dokumentation noch in der Passwort-Codes-Liste werden jemals echte Passwörter gespeichert.
+- Die Passwörter selbst liegen ausschließlich im **Bitwarden-Vault**.
+- API-Keys nur mit Hinweis auf Speicherort referenzieren: `API-Key in /pfad/.env → VARIABLE_NAME`
+
+**Referenz-Dokument:** [Passwort-Dokumentation mit Platzhalter-Codes](https://app.clickup.com/9012601234/docs/8ck2rcj-2452)
+
+### 6.7 Folge-Chat-Übergaben
+
+Wenn ein Dokument als Übergabe für eine Folge-Session dient, beginnt es mit einem klar markierten Übergabeblock:
+
+```markdown
🧩
Skill-Anpassung
Neu
skills/clickup-dokumentation/SKILL.md
## Erledigte Aufgaben / Schritte
Von Daniel • 2026-04-24 09:26:29.423005
Worum geht es?
Neuer Skill „clickup-dokumentation" wird angelegt
[Was wurde konkret gemacht? Als nummerierte Liste.]
Technischen Diff anzeigen
--- a/skills/clickup-dokumentation/SKILL.md
+++ b/skills/clickup-dokumentation/SKILL.md
@@ -0,0 +1,3 @@
+## Erledigte Aufgaben / Schritte
+[Was wurde konkret gemacht? Als nummerierte Liste.]
+
🧩
Skill-Anpassung
Neu
skills/clickup-dokumentation/SKILL.md
## Ergebnisse / Outputs
Von Daniel • 2026-04-24 09:26:29.422189
Worum geht es?
Neuer Skill „clickup-dokumentation" wird angelegt
[Was wurde erreicht, erstellt oder entschieden?]
Technischen Diff anzeigen
--- a/skills/clickup-dokumentation/SKILL.md
+++ b/skills/clickup-dokumentation/SKILL.md
@@ -0,0 +1,3 @@
+## Ergebnisse / Outputs
+[Was wurde erreicht, erstellt oder entschieden?]
+
🧩
Skill-Anpassung
Neu
skills/clickup-dokumentation/SKILL.md
## 9. Task-Status und Dokumentation aktuell halten
Von Daniel • 2026-04-24 09:26:29.421389
Worum geht es?
Neuer Skill „clickup-dokumentation" wird angelegt
Wenn ein Task erledigt ist:
Technischen Diff anzeigen
--- a/skills/clickup-dokumentation/SKILL.md
+++ b/skills/clickup-dokumentation/SKILL.md
@@ -0,0 +1,10 @@
+## 9. Task-Status und Dokumentation aktuell halten
+
+Wenn ein Task erledigt ist:
+1. Task per `clickup_search` oder `clickup_filter_tasks` finden.
+2. Status auf „erledigt" setzen: `clickup_update_task`.
+3. Bei Haupt-Tasks: Subtasks ebenfalls als erledigt markieren falls noch offen.
+4. Im verknüpften KB-Dokument: Eintrag als erledigt markieren: `clickup_update_document_page`.
+
+---
+
🧩
Skill-Anpassung
Neu
skills/clickup-dokumentation/SKILL.md
## 8. KI-Idee aufnehmen
Von Daniel • 2026-04-24 09:26:29.420598
Worum geht es?
Neuer Skill „clickup-dokumentation" wird angelegt
Ziel-Ordner: **„Ideen für KI-Anwendungen"** (ID: `90129665639`)
Technischen Diff anzeigen
--- a/skills/clickup-dokumentation/SKILL.md
+++ b/skills/clickup-dokumentation/SKILL.md
@@ -0,0 +1,31 @@
+## 8. KI-Idee aufnehmen
+
+Ziel-Ordner: **„Ideen für KI-Anwendungen"** (ID: `90129665639`)
+
+**Schritt 1: Duplikat-Check**
+→ `clickup_search` mit Kern-Stichworten.
+→ Duplikat gefunden → Nutzer informieren, nicht doppelt anlegen.
+
+**Schritt 2: Liste bestimmen**
+→ Thematische Liste im Ordner suchen oder neu anlegen.
+
+**Schritt 3: Aufgabe anlegen**
+Titel: Aktiv, max. 60 Zeichen, beginnt mit Verb.
+
+```markdown
+**Problemstellung / Ausgangssituation:**
+[Konkretes Problem oder manueller Aufwand]
+
+**Beschriebene KI-Lösung:**
+[Wie soll KI helfen?]
+
+**Möglicher Nutzen / Einsparpotenzial:**
+[Zeitersparnis, Fehlerreduktion, Umsatzpotenzial]
+
+**Prüfvermerk:** offen
+```
+
+Status: `zu prüfen`. Standard-Felder gelten.
+
+---
+
🧩
Skill-Anpassung
Neu
skills/clickup-dokumentation/SKILL.md
## 7. Dokumentation anlegen – Ablauf
Von Daniel • 2026-04-24 09:26:29.419794
Worum geht es?
Neuer Skill „clickup-dokumentation" wird angelegt
1. Passenden Ordner in der Operations KB bestimmen (oder neu anlegen).
Technischen Diff anzeigen
--- a/skills/clickup-dokumentation/SKILL.md
+++ b/skills/clickup-dokumentation/SKILL.md
@@ -0,0 +1,64 @@
+## 7. Dokumentation anlegen – Ablauf
+
+### 7a. Dokument in Operations KB
+
+**Vorgehen:**
+1. Passenden Ordner in der Operations KB bestimmen (oder neu anlegen).
+2. Dokumenttyp bestimmen (Typ A oder Typ B, siehe Abschnitt 6.3).
+3. Dokument anlegen: `clickup_create_document`.
+4. Seite mit Metadaten-Block + passenden Abschnitten anlegen: `clickup_create_document_page`.
+5. Task-Links im Abschnitt „Offene Punkte" ergänzen, sobald Tasks erstellt.
+
+### 7b. Gleichzeitig: Tasks in Daniels Bereich
+
+Für jeden offenen Punkt / nächsten Schritt:
+1. Task (ggf. mit Subtasks) in passender Liste in Daniels Bereich anlegen.
+2. Task-Beschreibung nach Abschnitt 4 befüllen.
+3. Bei Subtasks: Verantwortliche zuweisen (Daniel = Standard, andere bei Bedarf).
+4. In der Task-Beschreibung: Verweis auf das KB-Dokument.
+5. Task-Link zurück ins Dokument eintragen.
+
+### 7c. Optional: Infrastruktur-Diagramm aktualisieren
+
+**Wann:** Wenn ein neuer Service, eine neue Komponente oder eine Infrastrukturänderung dokumentiert wird.
+
+**Datei:** `/opt/infra-diagram/index.html` auf dem Hetzner-Server (bzw. lokal `infra-ovatics.html`)
+
+**Vorgehen:**
+1. Prüfen, ob die Änderung eine sichtbare Infrastruktur-Komponente betrifft (neuer Container, neuer externer Service, geänderter Port/Domain).
+2. Falls ja: Neue Komponente im Docker-Bereich ergänzen (Position, Größe, Label).
+3. Verbindungslinien zu abhängigen Services einzeichnen.
+4. Ggf. externe Systeme/Marktplätze hinzufügen.
+5. Docker-Zone und andere Zonen ggf. vergrößern.
+
+**Koordinaten-Konventionen:**
+- Docker-Komponenten: innerhalb der Docker-Zone (x:20-700, y:variabel)
+- Externe Services: rechts/unten außerhalb der Docker-Zone
+- Verbindungslinien: Von Quell-Komponente zu Ziel-Komponente
+
+**Wenn nicht relevant:** Diesen Schritt überspringen und Daniel kurz informieren, dass kein Diagramm-Update nötig war.
+
+### 7d. Optional: Daily Ovatics Notizen ergänzen
+
+**Wann:** Wenn eine abgeschlossene Umsetzung (neuer Service, Workflow, Integration) dokumentiert wird, die im nächsten Daily besprochen werden soll.
+
+**Google Doc:** fileId `11jy_DVwadfkIafr-eTqqsTLHaLOZzZ7CO64P0xaPSuU`
+
+**Format des Eintrags:**
+```
+Daniel Müller {ClickUp-Doc-URL} {Einzeiler was gemacht wurde}
+```
+
+**Beispiel:**
+```
+Daniel Müller https://app.clickup.com/9012601234/docs/8ck2rcj-4892 Messaging Proxy umgesetzt: zentraler Service für Kundenkommunikation über alle Kanäle mit Greyhound-Archivierung.
+```
+
+**Regeln:**
+- Eintrag unter dem nächsten Datum (nicht vergangene Tage)
+- Als Bullet Point in der bestehenden Liste
+- Nicht die Struktur des Dokuments verändern
+- Wenn nicht relevant (z.B. nur Task-Erstellung ohne abgeschlossene Umsetzung): Diesen Schritt überspringen.
+
+---
+
🧩
Skill-Anpassung
Neu
skills/clickup-dokumentation/SKILL.md
## 6. Dokumentationsstandard für die Operations Knowledge Base
Von Daniel • 2026-04-24 09:26:29.418975
Worum geht es?
Neuer Skill „clickup-dokumentation" wird angelegt
> **Dieser Standard gilt ausnahmslos für JEDES Dokument**, das in der Operations
Technischen Diff anzeigen
--- a/skills/clickup-dokumentation/SKILL.md
+++ b/skills/clickup-dokumentation/SKILL.md
@@ -0,0 +1,44 @@
+## 6. Dokumentationsstandard für die Operations Knowledge Base
+
+> **Dieser Standard gilt ausnahmslos für JEDES Dokument**, das in der Operations
+> Knowledge Base erstellt oder aktualisiert wird — egal ob schnelle Notiz,
+> Projektdoku oder technische Referenz.
+>
+> **Referenz-Dokument:** [KI-Dokumentationsstandard](https://app.clickup.com/9012601234/docs/8ck2rcj-4812)
+
+### 6.1 Metadaten-Block am Dokumentanfang (PFLICHT)
+
+Jedes Dokument beginnt mit diesem strukturierten Kopfbereich:
+
+```yaml
+---
+Titel: [Dokumenttitel]
+Kategorie: [Ordnername in der Knowledge Base, z.B. Datenquellen & Systeme]
+Status: aktiv | in-entwicklung | veraltet | archiviert
+Erstellt: [YYYY-MM-DD]
+Letztes Update: [YYYY-MM-DD]
+Autor: [Name oder KI-Modell, z.B. Claude / ChatGPT / Daniel]
+Zugehörige Systeme: [Kommagetrennte Liste, z.B. PlentyONE, n8n, Hetzner]
+---
+```
+
+Beim Aktualisieren eines bestehenden Dokuments: Immer `Letztes Update` und ggf. `Status` anpassen.
+
+### 6.2 Heading-Hierarchie (PFLICHT)
+
+- `#` nur 1x für den Dokumenttitel
+- `##` für Hauptabschnitte
+- `###` für Unterabschnitte
+- Keine Ebene überspringen (kein `###` direkt nach `#`)
+
+### 6.3 Dokumenttyp bestimmt die Struktur
+
+Es gibt zwei Dokumenttypen. Der Typ ergibt sich aus dem Kontext:
+
+#### Typ A: Projektdokumentation / Chat-Zusammenfassung
+
+Verwenden bei: „dokumentiere den Chat", Projektabschluss, Gesprächsprotokoll.
+
+Pflichtabschnitte:
+
+```markdown
🧩
Skill-Anpassung
Neu
skills/clickup-dokumentation/SKILL.md
## 5. Komplexe Aufgaben mit Subtasks und Dependencies
Von Daniel • 2026-04-24 09:26:29.418159
Worum geht es?
Neuer Skill „clickup-dokumentation" wird angelegt
Wann Subtasks anlegen: Wenn eine Aufgabe **mehr als einen logisch trennbaren Schritt** hat oder wenn mehrere Schritte aufeinander aufbauen.
Technischen Diff anzeigen
--- a/skills/clickup-dokumentation/SKILL.md
+++ b/skills/clickup-dokumentation/SKILL.md
@@ -0,0 +1,30 @@
+## 5. Komplexe Aufgaben mit Subtasks und Dependencies
+
+Wann Subtasks anlegen: Wenn eine Aufgabe **mehr als einen logisch trennbaren Schritt** hat oder wenn mehrere Schritte aufeinander aufbauen.
+
+### Vorgehen
+
+1. **Haupt-Task anlegen** (`clickup_create_task`) mit Gesamtbeschreibung (siehe Abschnitt 4).
+ - Verantwortlicher: Daniel (immer).
+ - Liste: Passende Liste in Daniels Bereich.
+2. **Subtasks anlegen** (`clickup_create_task` mit `parent: `):
+ - Jeden Subtask mit eigener kurzer Beschreibung versehen.
+ - Logische Reihenfolge einhalten (Schritt 1 → Schritt 2 → ...).
+ - Verantwortlicher: Daniel (Standard) ODER andere Person, wenn explizit zugewiesen.
+3. **Dependencies setzen** (`clickup_add_task_dependency`):
+ - Subtask B „wartet auf" Subtask A → `type: waiting_on`
+ - Subtask A „blockiert" Subtask B → `type: blocking`
+ - Nur echte logische Abhängigkeiten setzen, keine künstlichen Ketten.
+4. **Haupt-Task-Beschreibung aktualisieren** mit der finalen Subtask-Liste.
+
+### Entscheidung: flache Liste vs. Subtask-Hierarchie
+
+| Situation | Struktur |
+|---|---|
+| 1 Aufgabe, klar und abgeschlossen | Einfacher Task |
+| 2–6 Schritte, logisch aufeinander aufbauend | Haupt-Task + Subtasks + Dependencies |
+| Viele unabhängige Aufgaben zu einem Thema | Mehrere eigenständige Tasks (keine Subtask-Hierarchie) |
+| Projekt mit Phasen | Haupt-Task pro Phase, Subtasks je Phase |
+
+---
+
🧩
Skill-Anpassung
Neu
skills/clickup-dokumentation/SKILL.md
## 4. Beschreibung in jedem Task – Pflicht
Von Daniel • 2026-04-24 09:26:29.415290
Worum geht es?
Neuer Skill „clickup-dokumentation" wird angelegt
**Jeder Task bekommt immer eine Beschreibung** – egal ob einfacher Task oder Haupt-Task mit Subtasks.
Technischen Diff anzeigen
--- a/skills/clickup-dokumentation/SKILL.md
+++ b/skills/clickup-dokumentation/SKILL.md
@@ -0,0 +1,41 @@
+## 4. Beschreibung in jedem Task – Pflicht
+
+**Jeder Task bekommt immer eine Beschreibung** – egal ob einfacher Task oder Haupt-Task mit Subtasks.
+
+### Einfacher Task (keine Subtasks)
+Kurze, präzise Zusammenfassung der Aufgabe:
+```markdown
+**Was ist zu tun:**
+[1–3 Sätze: Aufgabe, Ziel, Kontext]
+
+**Akzeptanzkriterium:**
+[Woran erkennt man, dass die Aufgabe erledigt ist?]
+```
+
+### Haupt-Task (mit Subtasks)
+Überblick über das Gesamtvorhaben plus Verweis auf die Subtasks:
+```markdown
+**Gesamtaufgabe / Ziel:**
+[3–5 Sätze: Was soll mit diesem Vorhaben erreicht werden? Kontext und Hintergrund.]
+
+**Enthaltene Teilaufgaben:**
+[Automatisch: Auflistung der Subtask-Titel in logischer Reihenfolge]
+
+**Akzeptanzkriterium:**
+[Wann gilt das gesamte Vorhaben als abgeschlossen?]
+```
+
+### Subtask
+Jeder Subtask bekommt ebenfalls eine eigene kurze Beschreibung:
+```markdown
+**Was ist zu tun:**
+[1–2 Sätze: Konkrete Teilaufgabe, Ziel dieses Schritts]
+
+**Verantwortlich:** [Name – falls abweichend vom Haupt-Task]
+
+**Abhängigkeit:**
+[Wartet auf: [Subtask-Name] – oder: „Kein Vorgänger"]
+```
+
+---
+
🧩
Skill-Anpassung
Neu
skills/clickup-dokumentation/SKILL.md
## 3. Standard-Regeln für Tasks (immer gültig, außer explizit anders angegeben)
Von Daniel • 2026-04-24 09:26:29.414502
Worum geht es?
Neuer Skill „clickup-dokumentation" wird angelegt
| Feld | Standardwert |
Technischen Diff anzeigen
--- a/skills/clickup-dokumentation/SKILL.md
+++ b/skills/clickup-dokumentation/SKILL.md
@@ -0,0 +1,24 @@
+## 3. Standard-Regeln für Tasks (immer gültig, außer explizit anders angegeben)
+
+| Feld | Standardwert |
+|---|---|
+| Verantwortlicher | Daniel Müller (ID: `93740998`) |
+| Fälligkeitsdatum | Nächster Tag (aktuelles Datum + 1) |
+| Priorität | `normal` |
+| Status | Standard-Status der Ziel-Liste |
+
+**Abweichungen** nur bei expliziter Angabe von Datum, Person oder Priorität.
+
+**Titel:** Bei Unklarheit → nachfragen. Nie selbst erfinden.
+
+### Zuweisung an andere Personen
+
+- **Haupt-Tasks liegen IMMER in Daniels Bereich** – auch wenn Subtasks an andere Personen gehen.
+- **Subtasks können anderen Team-Mitgliedern zugewiesen werden**, wenn:
+ - Daniel im Gespräch explizit eine Person benennt, ODER
+ - aus dem Kontext klar hervorgeht, dass eine Teilaufgabe in den Verantwortungsbereich einer anderen Person fällt.
+- Bei Zuweisung an andere: Verantwortlichen per Name oder Kürzel aus der Stammdaten-Tabelle (Abschnitt 0) auflösen und die entsprechende User-ID verwenden.
+- Im Zweifel: Daniel fragen, bevor ein Subtask einer anderen Person zugewiesen wird.
+
+---
+
🧩
Skill-Anpassung
Neu
skills/clickup-dokumentation/SKILL.md
## 2. Wann was tun?
Von Daniel • 2026-04-24 09:26:29.413681
Worum geht es?
Neuer Skill „clickup-dokumentation" wird angelegt
| Nutzereingabe | Aktion |
Technischen Diff anzeigen
--- a/skills/clickup-dokumentation/SKILL.md
+++ b/skills/clickup-dokumentation/SKILL.md
@@ -0,0 +1,11 @@
+## 2. Wann was tun?
+
+| Nutzereingabe | Aktion |
+|---|---|
+| „dokumentiere" / „dokumentiere den Chat" / „mach eine Doku" | → Dokument in Operations KB **UND** Tasks in Daniels Bereich + ggf. infra-Diagramm (7c) + ggf. Daily Ovatics (7d) |
+| „Tasks erstellen" / „leg eine Aufgabe an" / „erstell mir einen Task" | → Nur Tasks in Daniels Bereich, **keine** Dokumentation |
+| „nimm die Idee in ClickUp auf" / KI-Idee speichern | → Aufgabe in „Ideen für KI-Anwendungen" (Duplikat-Check!) |
+| Unsicher, ob Dokumentation oder Task | → Kurz nachfragen: „Soll ich nur Tasks anlegen oder auch dokumentieren?" |
+
+---
+
🧩
Skill-Anpassung
Neu
skills/clickup-dokumentation/SKILL.md
## 12. Beispiele
Von Daniel • 2026-04-24 09:26:29.412848
Worum geht es?
Neuer Skill „clickup-dokumentation" wird angelegt
**Nutzer:** „Erstell einen Task: Amazon-Listings auf Vollständigkeit prüfen"
Technischen Diff anzeigen
--- a/skills/clickup-dokumentation/SKILL.md
+++ b/skills/clickup-dokumentation/SKILL.md
@@ -0,0 +1,95 @@
+## 12. Beispiele
+
+### Beispiel A – Einfacher Task
+
+**Nutzer:** „Erstell einen Task: Amazon-Listings auf Vollständigkeit prüfen"
+
+Task-Beschreibung:
+```markdown
+**Was ist zu tun:**
+Alle aktiven Amazon-Listings prüfen und sicherstellen, dass Titel, Bullet Points,
+Bilder und A+ Content vollständig und korrekt befüllt sind.
+
+**Akzeptanzkriterium:**
+Alle Listings haben vollständige Pflichtfelder. Lücken sind dokumentiert oder
+direkt behoben.
+```
+Felder: Verantwortlicher Daniel (93740998), Fälligkeit morgen, Priorität normal.
+
+---
+
+### Beispiel B – Komplexe Aufgabe mit Subtasks (verschiedene Verantwortliche)
+
+**Nutzer:** „Erstell Tasks für die Einführung eines neuen Marktplatzes. Nils soll die technische Anbindung machen."
+
+**Haupt-Task:** „Neuen Marktplatz einführen" → Verantwortlich: Daniel
+```markdown
+**Gesamtaufgabe / Ziel:**
+Vollständige Einführung eines neuen Marktplatzes von der Analyse bis zum Go-Live.
+Umfasst Marktanalyse, technische Anbindung, Produktdaten-Upload und Launch.
+
+**Enthaltene Teilaufgaben:**
+1. Marktplatz analysieren und Anforderungen klären (Daniel)
+2. Technische Anbindung in PlentyONE einrichten (Nils)
+3. Produktdaten aufbereiten und hochladen (Daniel)
+4. Testlauf und Qualitätsprüfung (Daniel)
+5. Go-Live und Monitoring (Daniel)
+
+**Akzeptanzkriterium:**
+Marktplatz ist live, erste Produkte sind gelistet und Bestellprozess funktioniert.
+```
+
+**Subtask 2:** „Technische Anbindung in PlentyONE einrichten" → Verantwortlich: **Nils** (158602009)
+```markdown
+**Was ist zu tun:**
+API-Verbindung zwischen PlentyONE und dem Marktplatz konfigurieren und testen.
+
+**Verantwortlich:** Nils
+
+**Abhängigkeit:** Wartet auf: Marktplatz analysieren und Anforderungen klären
+```
+
+→ Haupt-Task liegt in Daniels Bereich. Subtask 2 ist Nils zugewiesen, alle anderen Daniel.
+
+---
+
+### Beispiel C – „dokumentiere unseren Chat"
+
+1. Dokumenttyp bestimmen (Typ A: Projektdokumentation)
+2. Passenden Ordner in der Operations KB bestimmen
+3. Dokument mit Metadaten-Block + vier Pflichtabschnitten anlegen
+4. Tasks (ggf. mit Subtasks) für offene Punkte in Daniels Bereich anlegen
+5. Task-Links gegenseitig eintragen
+6. Rückmeldung: „Dokumentiert in Operations KB > [Ordner]. [N] Tasks in Daniels Bereich angelegt."
+
+---
+
+### Beispiel D – Technische Dokumentation (Typ B)
+
+**Nutzer:** „Dokumentiere die neue API-Anbindung an GREYHOUND"
+
+Dokument in Operations KB → Datenquellen & Systeme:
+```yaml
+---
+Titel: GREYHOUND RPC-API Anbindung
+Kategorie: Datenquellen & Systeme
+Status: aktiv
+Erstellt: 2026-03-31
+Letztes Update: 2026-03-31
+Autor: Claude
+Zugehörige Systeme: GREYHOUND, PlentyONE, n8n
+---
+```
+
+Abschnitte: Übersicht, API-Endpunkte (Tabelle), Authentifizierung (mit [OV-XXXXXX]-Code), Ablauf/Prozess, Wartung & Troubleshooting, Verwandte Dokumente.
+
+---
+
+### Beispiel E – Task erledigt melden
+
+Nutzer: „Der Task ‚Marktplatz analysieren' ist fertig."
+1. Task per `clickup_search` finden
+2. Status auf erledigt setzen
+3. Nächsten Subtask ggf. freigeben (Dependency-Hinweis an Nutzer)
+4. Im verknüpften KB-Dokument als erledigt markieren
+5. Rückmeldung: „Erledigt. Subtask ‚Technische Anbindung' (Nils) kann jetzt starten."
🧩
Skill-Anpassung
Neu
skills/clickup-dokumentation/SKILL.md
## 11. Fehlerbehandlung
Von Daniel • 2026-04-24 09:26:29.411991
Worum geht es?
Neuer Skill „clickup-dokumentation" wird angelegt
| Problem | Vorgehen |
Technischen Diff anzeigen
--- a/skills/clickup-dokumentation/SKILL.md
+++ b/skills/clickup-dokumentation/SKILL.md
@@ -0,0 +1,14 @@
+## 11. Fehlerbehandlung
+
+| Problem | Vorgehen |
+|---|---|
+| Titel unklar | Nachfragen: „Wie soll der Task heißen?" |
+| Unklar ob einfacher Task oder Subtasks nötig | Kurz einschätzen: bei >1 logischem Schritt → Subtasks anlegen |
+| Liste/Ordner nicht gefunden | Anlegen, Nutzer informieren |
+| Duplikat bei KI-Idee | Nutzer auf vorhandene Aufgabe hinweisen |
+| Pflichtabschnitt ohne Inhalt | Mit „[noch offen]" befüllen, Nutzer darauf hinweisen |
+| Unklar wem ein Subtask zugewiesen werden soll | Daniel fragen |
+| Passwort im Klartext entdeckt | Sofort [OV-XXXXXX]-Code generieren und Klartext ersetzen |
+
+---
+
🧩
Skill-Anpassung
Neu
skills/clickup-dokumentation/SKILL.md
## 10. Operations Knowledge Base aktiv nutzen
Von Daniel • 2026-04-24 09:26:29.411052
Worum geht es?
Neuer Skill „clickup-dokumentation" wird angelegt
Die Operations Knowledge Base dient nicht nur zum Schreiben — sie soll auch als **Wissensquelle** aktiv genutzt werden:
Technischen Diff anzeigen
--- a/skills/clickup-dokumentation/SKILL.md
+++ b/skills/clickup-dokumentation/SKILL.md
@@ -0,0 +1,10 @@
+## 10. Operations Knowledge Base aktiv nutzen
+
+Die Operations Knowledge Base dient nicht nur zum Schreiben — sie soll auch als **Wissensquelle** aktiv genutzt werden:
+
+- Für neu entwickelte Tools, Zugangsdaten, technische Dokumentation: In die Doku schreiben.
+- Bestehende Dokumentation anpassen, wenn sich etwas ändert.
+- Für notwendigen Kontext bei neuen Aufgaben: In der KB nachschlagen, bevor losgearbeitet wird.
+
+---
+
🧩
Skill-Anpassung
Neu
skills/clickup-dokumentation/SKILL.md
## 1. Workspace-Struktur Operations KB (Stand: März 2026)
Von Daniel • 2026-04-24 09:26:29.409834
Worum geht es?
Neuer Skill „clickup-dokumentation" wird angelegt
| Ordner | ID | Zweck |
Technischen Diff anzeigen
--- a/skills/clickup-dokumentation/SKILL.md
+++ b/skills/clickup-dokumentation/SKILL.md
@@ -0,0 +1,15 @@
+## 1. Workspace-Struktur Operations KB (Stand: März 2026)
+
+| Ordner | ID | Zweck |
+|---|---|---|
+| Versand & Logistik | 90129593916 | Retourenprozesse, Fulfillment, Versanddienstleister |
+| Marktplätze | 90129593947 | Amazon, Otto, Kaufland, internationale Marktplätze |
+| Datenquellen & Systeme | 90129593983 | PlentyONE, APIs, Tools, Zugänge |
+| Ideen für KI-Anwendungen | 90129665639 | KI-Ideen und Automatisierungsvorschläge |
+| Webshop & PlentyShop | 90129981757 | Webshop-Prozesse, PlentyShop-Konfiguration |
+
+> Wenn ein Thema keinem Ordner zugeordnet werden kann → neuen Ordner anlegen
+> und Nutzer kurz informieren.
+
+---
+
🧩
Skill-Anpassung
Neu
skills/clickup-dokumentation/SKILL.md
## 0. Stammdaten (fest hinterlegt – kein Nachschlagen nötig)
Von Daniel • 2026-04-24 09:26:29.409008
Worum geht es?
Neuer Skill „clickup-dokumentation" wird angelegt
| Person | Name | ClickUp User ID | Kürzel |
Technischen Diff anzeigen
--- a/skills/clickup-dokumentation/SKILL.md
+++ b/skills/clickup-dokumentation/SKILL.md
@@ -0,0 +1,20 @@
+## 0. Stammdaten (fest hinterlegt – kein Nachschlagen nötig)
+
+| Person | Name | ClickUp User ID | Kürzel |
+|---|---|---|---|
+| Nutzer (Standard-Verantwortlicher) | Daniel Müller | `93740998` | D |
+| Geschäftsführer | Martin Seiler | `158602035` | M |
+| Teammitglied | Nils | `158602009` | N |
+| Teammitglied | Antonia Barzu | `93703065` | A |
+
+**Workspace ID:** `9012601234`
+
+**Daniels Bereich:** Space `Daniels Bereiche` (ID: `90125315748`)
+- Ordner „IST Analyse und SOLL Umsetzung" → Liste „Automatisierung" (ID: `901213186210`)
+- Ordner „Produkte" → Listen: Organisatorisches, Produktanlage, Produktentwicklung
+- Liste „Martins Aufgaben an mich" (ID: `901213185935`)
+
+**Operations Knowledge Base:** Space ID `90126509874`
+
+---
+
🧩
Skill-Anpassung
Neu
skills/campaign-plan/SKILL.md
__preamble__
Von Daniel • 2026-04-24 09:26:29.408127
Worum geht es?
Neuer Skill „campaign-plan" wird angelegt
> If you see unfamiliar placeholders or need to check which tools are connected, see [CONNECTORS.md](../../CONNECTORS.md).
Technischen Diff anzeigen
--- a/skills/campaign-plan/SKILL.md
+++ b/skills/campaign-plan/SKILL.md
@@ -0,0 +1,7 @@
+
+# Campaign Plan
+
+> If you see unfamiliar placeholders or need to check which tools are connected, see [CONNECTORS.md](../../CONNECTORS.md).
+
+Generate a comprehensive marketing campaign brief with objectives, audience, messaging, channel strategy, content calendar, and success metrics.
+
🧩
Skill-Anpassung
Neu
skills/campaign-plan/SKILL.md
__frontmatter__
Von Daniel • 2026-04-24 09:26:29.407303
Worum geht es?
Neuer Skill „campaign-plan" — Generate a full campaign brief with objectives, audience, messaging, channel strategy, content calendar, and success metrics.
Technischen Diff anzeigen
--- a/skills/campaign-plan/SKILL.md
+++ b/skills/campaign-plan/SKILL.md
@@ -0,0 +1,5 @@
+---
+name: campaign-plan
+description: Generate a full campaign brief with objectives, audience, messaging, channel strategy, content calendar, and success metrics. Use when planning a product launch, lead-gen push, or awareness campaign, when you need a week-by-week content calendar with dependencies, or when translating a marketing goal into a structured, executable plan.
+argument-hint: ""
+---
🧩
Skill-Anpassung
Neu
skills/campaign-plan/SKILL.md
## Trigger
Von Daniel • 2026-04-24 09:26:29.406448
Worum geht es?
Neuer Skill „campaign-plan" wird angelegt
User runs `/campaign-plan` or asks to plan, design, or build a marketing campaign.
Technischen Diff anzeigen
--- a/skills/campaign-plan/SKILL.md
+++ b/skills/campaign-plan/SKILL.md
@@ -0,0 +1,4 @@
+## Trigger
+
+User runs `/campaign-plan` or asks to plan, design, or build a marketing campaign.
+
🧩
Skill-Anpassung
Neu
skills/campaign-plan/SKILL.md
## Planning Reference
Von Daniel • 2026-04-24 09:26:29.405621
Worum geht es?
Neuer Skill „campaign-plan" wird angelegt
Every campaign should be built on this five-part framework:
Technischen Diff anzeigen
--- a/skills/campaign-plan/SKILL.md
+++ b/skills/campaign-plan/SKILL.md
@@ -0,0 +1,187 @@
+## Planning Reference
+
+### Campaign Framework: Objective, Audience, Message, Channel, Measure
+
+Every campaign should be built on this five-part framework:
+
+#### Objective
+Define what success looks like before planning anything else.
+
+- **Awareness**: increase brand or product visibility (measured by reach, impressions, share of voice)
+- **Consideration**: drive engagement and education (measured by content engagement, email signups, webinar attendance)
+- **Conversion**: generate leads or sales (measured by signups, demos, purchases, pipeline)
+- **Retention**: re-engage existing customers (measured by churn reduction, upsell, NPS)
+- **Advocacy**: turn customers into promoters (measured by referrals, reviews, UGC)
+
+Good objectives are SMART: Specific, Measurable, Achievable, Relevant, Time-bound.
+
+Example: "Generate 200 marketing qualified leads from mid-market SaaS companies in North America within 6 weeks of campaign launch."
+
+#### Audience
+Define who you are trying to reach with enough specificity to guide messaging and channel decisions.
+
+- **Demographics**: role/title, seniority, company size, industry
+- **Psychographics**: motivations, pain points, goals, objections
+- **Behavioral**: where they consume content, how they buy, what they have engaged with before
+- **Buying stage**: are they unaware of the problem, researching solutions, or ready to buy?
+
+Create a brief audience profile (not a full persona) for campaign planning:
+> "[Role] at [company type] who is struggling with [pain point] and looking for [desired outcome]. They typically discover solutions through [channels] and care most about [priorities]."
+
+#### Message
+Craft the core message and supporting points that will resonate with the audience.
+
+- **Core message**: one sentence that captures what you want the audience to think, feel, or do
+- **Supporting messages**: 3-4 points that provide evidence, address objections, or elaborate on benefits
+- **Proof points**: data, case studies, testimonials, or third-party validation for each supporting message
+- **Differentiation**: what makes your offering different from alternatives (including doing nothing)
+
+Message hierarchy:
+1. Why should I care? (addresses the pain point or opportunity)
+2. What is the solution? (positions your offering)
+3. Why you? (differentiates from alternatives)
+4. What should I do? (call to action)
+
+#### Channel
+Select channels based on where your audience is, not where you are most comfortable. See the Channel Selection Guide below.
+
+#### Measure
+Define how you will know the campaign worked. See Success Metrics by Campaign Type below.
+
+### Channel Selection Guide
+
+#### Owned Channels
+
+| Channel | Best For | Typical Metrics | Effort |
+|---------|----------|----------------|--------|
+| Blog/Website | SEO, thought leadership, education | Traffic, time on page, conversions | Medium |
+| Email | Nurture, retention, announcements | Open rate, CTR, conversions | Low-Medium |
+| Social (organic) | Awareness, community, brand building | Engagement, reach, follower growth | Medium |
+| Webinars | Education, lead gen, product demos | Registrations, attendance, pipeline | High |
+| Podcast | Thought leadership, brand awareness | Downloads, subscriber growth | High |
+
+#### Earned Channels
+
+| Channel | Best For | Typical Metrics | Effort |
+|---------|----------|----------------|--------|
+| PR/Media | Awareness, credibility, launches | Coverage, share of voice, referral traffic | High |
+| Guest content | Audience expansion, SEO, credibility | Referral traffic, backlinks | Medium |
+| Influencer/Partner | Audience expansion, trust | Reach, engagement, referral conversions | Medium-High |
+| Community | Awareness, trust, feedback | Mentions, engagement, referral traffic | Medium |
+| Reviews/Ratings | Credibility, SEO, consideration | Review volume, rating, conversion lift | Low-Medium |
+
+#### Paid Channels
+
+| Channel | Best For | Typical Metrics | Effort |
+|---------|----------|----------------|--------|
+| Search ads (SEM) | High-intent lead capture | CPC, CTR, conversion rate, CPA | Medium |
+| Social ads | Awareness, retargeting, lead gen | CPM, CPC, CTR, CPA, ROAS | Medium |
+| Display/Programmatic | Awareness, retargeting | Impressions, CPM, view-through conversions | Low-Medium |
+| Sponsored content | Thought leadership, lead gen | Engagement, leads, cost per lead | Medium |
+| Events/Sponsorships | Relationship building, brand | Leads, meetings, pipeline influenced | High |
+
+#### Channel Selection Criteria
+When choosing channels, consider:
+- Where does your target audience spend time?
+- What is the buying stage you are targeting? (awareness channels vs. conversion channels)
+- What is your budget? (paid channels require spend; owned/earned require time)
+- What content assets do you already have or can you produce?
+- What has worked in the past? (reference historical data if available)
+
+### Content Calendar Creation
+
+#### Calendar Planning Process
+1. **Start with milestones**: campaign launch, event dates, product releases, seasonal moments
+2. **Work backward**: what needs to be live and when? What is the production lead time?
+3. **Map content to funnel stages**: ensure coverage across awareness, consideration, and conversion
+4. **Batch by theme**: group related content pieces into weekly or bi-weekly themes
+5. **Balance channels**: do not over-index on one channel; ensure the audience sees the campaign across touchpoints
+6. **Build in flexibility**: leave 20% of calendar slots open for reactive or opportunistic content
+
+#### Content Cadence Guidelines
+- **Blog**: 1-4 posts per week depending on team size and goals
+- **Email newsletter**: weekly or bi-weekly for most audiences
+- **Social media**: 3-7 posts per week per platform (varies by platform)
+- **Paid campaigns**: continuous during campaign window with creative refreshes every 2-4 weeks
+- **Webinars**: monthly or quarterly depending on resources
+
+#### Production Timeline Benchmarks
+- Blog post: 3-5 business days (research, draft, review, publish)
+- Email campaign: 2-3 business days (copy, design, test, send)
+- Social media posts: 1-2 business days (draft, design, schedule)
+- Landing page: 5-7 business days (copy, design, development, QA)
+- Video content: 2-4 weeks (script, production, editing)
+- Ebook/whitepaper: 2-4 weeks (outline, draft, design, review)
+
+### Budget Allocation Approaches
+
+#### Percentage of Revenue Method
+- Industry benchmark: 5-15% of revenue for marketing, with B2B typically at 5-10% and B2C at 10-15%
+- Startups and growth-stage companies often invest 15-25% of revenue in marketing
+- Within the marketing budget, allocate across brand (long-term) and performance (short-term)
+
+#### Channel Allocation Framework
+A common starting framework (adjust based on goals and historical data):
+
+| Category | Percentage of Budget | Examples |
+|----------|---------------------|----------|
+| Paid acquisition | 30-40% | Search ads, social ads, display |
+| Content production | 20-30% | Blog, video, design, ebooks |
+| Events and sponsorships | 10-20% | Conferences, webinars, meetups |
+| Tools and technology | 10-15% | Analytics, automation, CRM |
+| Testing and experimentation | 5-10% | New channels, A/B tests, pilots |
+
+#### Budget Optimization Principles
+- Start with your highest-confidence channel and allocate 60-70% of paid budget there
+- Reserve 15-20% for testing new channels or tactics
+- Shift budget monthly based on performance data (do not set and forget)
+- Account for production costs, not just media spend
+- Include a 10-15% contingency for unexpected opportunities or overruns
+
+### Success Metrics by Campaign Type
+
+#### Awareness Campaign
+| Metric | What It Measures |
+|--------|-----------------|
+| Reach/Impressions | How many people saw the campaign |
+| Brand mention volume | Increase in brand conversations |
+| Share of voice | Your mentions vs. competitors |
+| Direct traffic | People coming to your site unprompted |
+| Social follower growth | Audience building |
+
+#### Lead Generation Campaign
+| Metric | What It Measures |
+|--------|-----------------|
+| Total leads | Volume of new contacts |
+| Marketing qualified leads (MQLs) | Leads meeting quality threshold |
+| Cost per lead (CPL) | Efficiency of spend |
+| Lead-to-MQL conversion rate | Quality of leads generated |
+| Pipeline influenced | Revenue opportunity created |
+
+#### Product Launch Campaign
+| Metric | What It Measures |
+|--------|-----------------|
+| Signups or trials | Adoption of new product |
+| Activation rate | Users who complete key first action |
+| Media coverage | Earned media hits |
+| Social buzz | Mentions, shares, engagement spike |
+| Feature adoption | Usage of specific launched features |
+
+#### Retention/Engagement Campaign
+| Metric | What It Measures |
+|--------|-----------------|
+| Churn rate change | Customer retention improvement |
+| Engagement rate | Interactions with campaign content |
+| NPS or CSAT change | Satisfaction improvement |
+| Upsell/cross-sell revenue | Expansion revenue |
+| Feature adoption | Usage of promoted features |
+
+#### Event/Webinar Campaign
+| Metric | What It Measures |
+|--------|-----------------|
+| Registrations | Interest generated |
+| Attendance rate | Conversion from registration |
+| Engagement during event | Questions, polls, chat activity |
+| Post-event conversions | Leads or pipeline from attendees |
+| Content repurposing reach | Downstream audience from recordings |
+
🧩
Skill-Anpassung
Neu
skills/campaign-plan/SKILL.md
## Output
Von Daniel • 2026-04-24 09:26:29.402614
Worum geht es?
Neuer Skill „campaign-plan" wird angelegt
Present the full campaign brief with clear headings and formatting. After the brief, ask:
Technischen Diff anzeigen
--- a/skills/campaign-plan/SKILL.md
+++ b/skills/campaign-plan/SKILL.md
@@ -0,0 +1,9 @@
+## Output
+
+Present the full campaign brief with clear headings and formatting. After the brief, ask:
+
+"Would you like me to:
+- Dive deeper into any section?
+- Draft specific content pieces from the calendar?
+- Create a competitive analysis to inform the messaging?
+- Adjust the plan for a different budget or timeline?"
🧩
Skill-Anpassung
Neu
skills/campaign-plan/SKILL.md
## Inputs
Von Daniel • 2026-04-24 09:26:29.401795
Worum geht es?
Neuer Skill „campaign-plan" wird angelegt
Gather the following from the user. If not provided, ask before proceeding:
Technischen Diff anzeigen
--- a/skills/campaign-plan/SKILL.md
+++ b/skills/campaign-plan/SKILL.md
@@ -0,0 +1,19 @@
+## Inputs
+
+Gather the following from the user. If not provided, ask before proceeding:
+
+1. **Campaign goal** — the primary objective (e.g., drive signups, increase awareness, launch a product, generate leads, re-engage churned users)
+
+2. **Target audience** — who the campaign is aimed at (demographics, roles, industries, pain points, buying stage)
+
+3. **Timeline** — campaign duration and any fixed dates (launch date, event date, seasonal deadline)
+
+4. **Budget range** — approximate budget or budget tier (optional; if not provided, generate a channel-agnostic plan and note where budget allocation would matter)
+
+5. **Additional context** (optional):
+ - Product or service being promoted
+ - Key differentiators or value propositions
+ - Previous campaign performance or learnings
+ - Brand guidelines or constraints
+ - Geographic focus
+
🧩
Skill-Anpassung
Neu
skills/campaign-plan/SKILL.md
## Campaign Brief Structure
Von Daniel • 2026-04-24 09:26:29.400513
Worum geht es?
Neuer Skill „campaign-plan" wird angelegt
Generate a campaign brief with the following sections:
Technischen Diff anzeigen
--- a/skills/campaign-plan/SKILL.md
+++ b/skills/campaign-plan/SKILL.md
@@ -0,0 +1,77 @@
+## Campaign Brief Structure
+
+Generate a campaign brief with the following sections:
+
+### 1. Campaign Overview
+- Campaign name suggestion
+- One-sentence campaign summary
+- Primary objective with a specific, measurable goal
+- Secondary objectives (if applicable)
+
+### 2. Target Audience
+- Primary audience segment with description
+- Secondary audience segment (if applicable)
+- Audience pain points and motivations
+- Where they spend time (channels, communities, publications)
+- Buying stage alignment (awareness, consideration, decision)
+
+### 3. Key Messages
+- Core campaign message (one sentence)
+- 3-4 supporting messages tailored to audience pain points
+- Message variations by channel (if different tones are needed)
+- Proof points or evidence to support each message
+
+### 4. Channel Strategy
+Recommend channels based on audience and goal. For each channel, include:
+- Why this channel fits the audience and objective
+- Content format recommendations
+- Estimated effort level (low, medium, high)
+- Budget allocation suggestion (if budget was provided)
+
+Consider channels from:
+- Owned: blog, email, website, social media profiles
+- Earned: PR, influencer partnerships, guest posts, community engagement
+- Paid: search ads, social ads, display, sponsored content, events
+
+### 5. Content Calendar
+Create a week-by-week (or day-by-day for short campaigns) content calendar:
+- What content to produce each week
+- Which channel each piece targets
+- Key milestones and deadlines
+- Dependencies between pieces (e.g., "landing page must be live before paid ads launch")
+
+Format as a table:
+
+| Week | Content Piece | Channel | Owner/Notes | Status |
+|------|--------------|---------|-------------|--------|
+
+### 6. Content Pieces Needed
+List every content asset required for the campaign:
+- Asset name and type (blog post, email, social post, ad creative, landing page, etc.)
+- Brief description of what it should contain
+- Priority (must-have vs. nice-to-have)
+- Suggested timeline for creation
+
+### 7. Success Metrics
+Define KPIs aligned to the campaign objective:
+- Primary KPI with target number
+- Secondary KPIs (3-5)
+- How each metric will be tracked
+- Reporting cadence recommendation
+
+If ~~product analytics is connected, reference any available historical performance benchmarks to inform targets.
+
+### 8. Budget Allocation (if budget provided)
+- Breakdown by channel or activity
+- Production costs vs. distribution costs
+- Contingency recommendation (typically 10-15%)
+
+### 9. Risks and Mitigations
+- 2-3 potential risks (timeline, audience mismatch, channel underperformance)
+- Mitigation strategy for each
+
+### 10. Next Steps
+- Immediate action items to kick off the campaign
+- Stakeholder approvals needed
+- Key decision points
+
🧩
Skill-Anpassung
Neu
skills/brand-review/SKILL.md
__preamble__
Von Daniel • 2026-04-24 09:26:29.399676
Worum geht es?
Neuer Skill „brand-review" wird angelegt
> If you see unfamiliar placeholders or need to check which tools are connected, see [CONNECTORS.md](../../CONNECTORS.md).
Technischen Diff anzeigen
--- a/skills/brand-review/SKILL.md
+++ b/skills/brand-review/SKILL.md
@@ -0,0 +1,7 @@
+
+# Brand Review
+
+> If you see unfamiliar placeholders or need to check which tools are connected, see [CONNECTORS.md](../../CONNECTORS.md).
+
+Review marketing content against brand voice, style guidelines, and messaging standards. Flag deviations and provide specific improvement suggestions.
+
🧩
Skill-Anpassung
Neu
skills/brand-review/SKILL.md
__frontmatter__
Von Daniel • 2026-04-24 09:26:29.398854
Worum geht es?
Neuer Skill „brand-review" — Review content against your brand voice, style guide, and messaging pillars, flagging deviations by severity with specific before/after fixes.
Technischen Diff anzeigen
--- a/skills/brand-review/SKILL.md
+++ b/skills/brand-review/SKILL.md
@@ -0,0 +1,5 @@
+---
+name: brand-review
+description: Review content against your brand voice, style guide, and messaging pillars, flagging deviations by severity with specific before/after fixes. Use when checking a draft before it ships, when auditing copy for voice consistency and terminology, or when screening for unsubstantiated claims, missing disclaimers, and other legal flags.
+argument-hint: ""
+---
🧩
Skill-Anpassung
Neu
skills/brand-review/SKILL.md
## Trigger
Von Daniel • 2026-04-24 09:26:29.396953
Worum geht es?
Neuer Skill „brand-review" wird angelegt
User runs `/brand-review` or asks to review, check, or audit content against brand guidelines.
Technischen Diff anzeigen
--- a/skills/brand-review/SKILL.md
+++ b/skills/brand-review/SKILL.md
@@ -0,0 +1,4 @@
+## Trigger
+
+User runs `/brand-review` or asks to review, check, or audit content against brand guidelines.
+
🧩
Skill-Anpassung
Neu
skills/brand-review/SKILL.md
## Review Process
Von Daniel • 2026-04-24 09:26:29.396075
Worum geht es?
Neuer Skill „brand-review" wird angelegt
Evaluate the content against each of these dimensions:
Technischen Diff anzeigen
--- a/skills/brand-review/SKILL.md
+++ b/skills/brand-review/SKILL.md
@@ -0,0 +1,59 @@
+## Review Process
+
+### With Brand Guidelines Configured
+
+Evaluate the content against each of these dimensions:
+
+#### Voice and Tone
+- Does the content match the defined brand voice attributes?
+- Is the tone appropriate for the content type and audience?
+- Are there shifts in voice that feel inconsistent?
+- Flag specific sentences or phrases that deviate with an explanation of why
+
+#### Terminology and Language
+- Are preferred brand terms used correctly?
+- Are any "avoid" terms or phrases present?
+- Is jargon level appropriate for the target audience?
+- Are product names, feature names, and branded terms used correctly (capitalization, formatting)?
+
+#### Messaging Pillars
+- Does the content align with defined messaging pillars or value propositions?
+- Are claims consistent with approved messaging?
+- Is the content reinforcing or contradicting brand positioning?
+
+#### Style Guide Compliance
+- Grammar and punctuation per style guide (e.g., Oxford comma, title case vs. sentence case)
+- Formatting conventions (headers, lists, emphasis)
+- Number formatting, date formatting
+- Acronym usage (defined on first use?)
+
+### Without Brand Guidelines (Generic Review)
+
+Evaluate the content for:
+
+#### Clarity
+- Is the main message clear within the first paragraph?
+- Are sentences concise and easy to understand?
+- Is the structure logical and easy to follow?
+- Are there ambiguous statements or unclear references?
+
+#### Consistency
+- Is the tone consistent throughout?
+- Are terms used consistently (no switching between synonyms for the same concept)?
+- Is formatting consistent (headers, lists, capitalization)?
+
+#### Professionalism
+- Is the content free of typos, grammatical errors, and awkward phrasing?
+- Is the tone appropriate for the intended audience?
+- Are claims supported or substantiated?
+
+### Legal and Compliance Flags (Always Checked)
+
+Regardless of whether brand guidelines are configured, flag:
+- **Unsubstantiated claims** — superlatives ("best", "fastest", "only") without evidence or qualification
+- **Missing disclaimers** — financial claims, health claims, or guarantees that may need legal disclaimers
+- **Comparative claims** — comparisons to competitors that could be challenged
+- **Regulatory language** — content that may need compliance review (financial services, healthcare, etc.)
+- **Testimonial issues** — quotes or endorsements without attribution or disclosure
+- **Copyright concerns** — content that appears to be closely paraphrased from other sources
+
🧩
Skill-Anpassung
Neu
skills/brand-review/SKILL.md
## Output Format
Von Daniel • 2026-04-24 09:26:29.395011
Worum geht es?
Neuer Skill „brand-review" wird angelegt
Present the review as:
Technischen Diff anzeigen
--- a/skills/brand-review/SKILL.md
+++ b/skills/brand-review/SKILL.md
@@ -0,0 +1,29 @@
+## Output Format
+
+Present the review as:
+
+### Summary
+- Overall assessment: how well the content aligns with brand standards (or general quality)
+- 1-2 sentence summary of the biggest strengths
+- 1-2 sentence summary of the most important improvements
+
+### Detailed Findings
+
+For each issue found, provide:
+
+| Issue | Location | Severity | Suggestion |
+|-------|----------|----------|------------|
+
+Where severity is:
+- **High** — contradicts brand voice, contains compliance risk, or significantly undermines messaging
+- **Medium** — inconsistent with guidelines but not damaging
+- **Low** — minor style or preference issue
+
+### Revised Sections
+
+For the top 3-5 highest-severity issues, provide a before/after showing the original text and a suggested revision.
+
+### Legal/Compliance Flags
+
+List any legal or compliance concerns separately with recommended actions.
+
🧩
Skill-Anpassung
Neu
skills/brand-review/SKILL.md
## Inputs
Von Daniel • 2026-04-24 09:26:29.394154
Worum geht es?
Neuer Skill „brand-review" wird angelegt
1. **Content to review** — accept content in any of these forms:
Technischen Diff anzeigen
--- a/skills/brand-review/SKILL.md
+++ b/skills/brand-review/SKILL.md
@@ -0,0 +1,12 @@
+## Inputs
+
+1. **Content to review** — accept content in any of these forms:
+ - Pasted directly into the conversation
+ - A file path or ~~knowledge base reference (e.g. Notion page, shared doc)
+ - A URL to a published page
+ - Multiple pieces for batch review
+
+2. **Brand guidelines source** (determined automatically):
+ - If a brand style guide is configured in local settings, use it automatically
+ - If not configured, ask: "Do you have a brand style guide or voice guidelines I should review against? You can paste them, share a file, or describe your brand voice. Otherwise, I'll do a general review for clarity, consistency, and professionalism."
+
🧩
Skill-Anpassung
Neu
skills/brand-review/SKILL.md
## Brand Voice Reference
Von Daniel • 2026-04-24 09:26:29.393302
Worum geht es?
Neuer Skill „brand-review" wird angelegt
Use these frameworks to evaluate content against brand standards or to help the user document their brand voice.
Technischen Diff anzeigen
--- a/skills/brand-review/SKILL.md
+++ b/skills/brand-review/SKILL.md
@@ -0,0 +1,153 @@
+## Brand Voice Reference
+
+Use these frameworks to evaluate content against brand standards or to help the user document their brand voice.
+
+### Brand Voice Documentation Framework
+
+A complete brand voice document should cover these areas:
+
+1. **Brand Personality** — Define the brand as if it were a person. Example: "If our brand were a person, they would be a knowledgeable colleague who explains complex things simply, celebrates your wins genuinely, and never talks down to you."
+2. **Voice Attributes** — 3-5 attributes that define how the brand communicates, each defined with what it means in practice, what it does NOT mean (to prevent misinterpretation), and an example.
+3. **Audience Awareness** — Who the brand is speaking to (primary and secondary), what they care about, their level of expertise, and how they expect to be addressed.
+4. **Core Messaging Pillars** — 3-5 key themes the brand consistently communicates, the hierarchy of these messages, and how each pillar connects to audience needs.
+5. **Tone Spectrum** — How the voice adapts across contexts while remaining recognizably the same brand.
+6. **Style Rules** — Specific grammar, formatting, and language rules.
+7. **Terminology** — Preferred and avoided terms.
+
+### Voice Attribute Spectrums
+
+When defining or evaluating brand voice, position attributes on a spectrum:
+
+| Spectrum | One End | Other End |
+|----------|---------|-----------|
+| Formality | Formal, institutional | Casual, conversational |
+| Authority | Expert, authoritative | Peer-level, collaborative |
+| Emotion | Warm, empathetic | Direct, matter-of-fact |
+| Complexity | Technical, precise | Simple, accessible |
+| Energy | Bold, energetic | Calm, measured |
+| Humor | Playful, witty | Serious, earnest |
+| Innovation | Cutting-edge, forward-looking | Established, proven |
+
+For each chosen attribute, document it in this format:
+
+**[Attribute name]**
+- **We are**: [what this means in practice]
+- **We are not**: [common misinterpretation to avoid]
+- **This sounds like**: [example sentence demonstrating the attribute]
+- **This does NOT sound like**: [example sentence violating the attribute]
+
+Example:
+
+**Approachable**
+- **We are**: friendly, clear, jargon-free, welcoming to beginners and experts alike
+- **We are not**: dumbed-down, overly casual, or lacking substance
+- **This sounds like**: "Here's how to get started — it takes about five minutes."
+- **This does NOT sound like**: "Yo! This is super easy, even a noob can do it lol."
+
+### Tone Adaptation Across Channels and Contexts
+
+The brand voice stays consistent, but tone adapts to context. Tone is the emotional inflection applied to the voice.
+
+#### Tone by Channel
+
+| Channel | Tone Adaptation | Example |
+|---------|----------------|---------|
+| Blog | Informative, conversational, educational | "Let's walk through how this works and why it matters for your team." |
+| Social media (LinkedIn) | Professional, thought-provoking, concise | "Three things we learned from running 50 campaigns this quarter." |
+| Social media (Twitter/X) | Punchy, direct, sometimes witty | "Your landing page has 3 seconds. Make them count." |
+| Email marketing | Personal, helpful, action-oriented | "We put together something we think you'll find useful." |
+| Sales collateral | Confident, benefit-driven, specific | "Teams using our platform reduce reporting time by 40%." |
+| Support/Help docs | Clear, patient, step-by-step | "If you see this error, here's how to fix it." |
+| Press release | Formal, factual, newsworthy | "The company today announced the launch of..." |
+| Error messages | Empathetic, helpful, blame-free | "Something went wrong on our end. We're looking into it." |
+
+#### Tone by Situation
+
+| Situation | Tone Adaptation |
+|-----------|----------------|
+| Product launch | Excited, confident, forward-looking |
+| Incident or outage | Transparent, empathetic, accountable |
+| Customer success story | Celebratory, specific, crediting the customer |
+| Thought leadership | Authoritative, nuanced, evidence-based |
+| Onboarding | Welcoming, encouraging, clear |
+| Bad news (price increase, deprecation) | Honest, respectful, solution-oriented |
+| Competitive comparison | Confident but fair, fact-based, not disparaging |
+
+#### Tone Adaptation Rule
+The voice attributes remain fixed. Tone dials them up or down based on context. For example, if a brand is "bold and warm":
+- In a product launch, dial up boldness
+- In an incident response, dial up warmth
+- Neither attribute disappears; the balance shifts
+
+### Style Guide Enforcement
+
+#### Grammar and Mechanics
+Document and enforce these choices consistently:
+
+| Rule | Options | Example |
+|------|---------|---------|
+| Oxford comma | Yes / No | "fast, reliable, and secure" vs. "fast, reliable and secure" |
+| Sentence case vs. title case (headings) | Sentence / Title | "How to get started" vs. "How to Get Started" |
+| Contractions | Use / Avoid | "we're" vs. "we are" |
+| Em dash spacing | No spaces / Spaces | "this—and more" vs. "this — and more" |
+| Numbers | Spell out 1-9, numerals 10+ / Always numerals | "five features" vs. "5 features" |
+| Percent | % / percent | "50%" vs. "50 percent" |
+| Date format | Month DD, YYYY / DD/MM/YYYY / etc. | "January 15, 2025" |
+| Time format | 12-hour / 24-hour | "3:00 PM" vs. "15:00" |
+| Lists | Periods / No periods on fragments | "Set up your account." vs. "Set up your account" |
+
+#### Formatting Conventions
+- Heading hierarchy (when to use H1, H2, H3)
+- Bold and italic usage (bold for emphasis, italic for titles/terms)
+- Link text (descriptive vs. "click here" — always descriptive)
+- Image alt text requirements
+- Code formatting (for technical brands)
+- Callout or highlight box usage
+
+#### Punctuation and Emphasis
+- Exclamation mark policy (limited use, never more than one)
+- Ellipsis usage (avoid in most professional contexts)
+- ALL CAPS policy (avoid; use bold for emphasis instead)
+- Emoji usage by channel (professional channels: minimal or none; social: where appropriate)
+
+### Terminology Management
+
+#### Preferred Terms
+
+Maintain a list of preferred terms and their incorrect alternatives:
+
+| Use This | Not This | Notes |
+|----------|----------|-------|
+| sign up (verb) | signup (verb) | "signup" is the noun form |
+| log in (verb) | login (verb) | "login" is the noun/adjective form |
+| set up (verb) | setup (verb) | "setup" is the noun/adjective form |
+| email | e-mail | No hyphen |
+| website | web site | One word |
+| data is (singular) | data are | Unless the publication requires plural |
+
+#### Product and Feature Names
+- Official capitalization for product names
+- When to use the full product name vs. shorthand
+- Whether to use "the" before product names
+- How to handle versioning in copy
+- Trademark and registration symbols (when required and when to omit)
+
+#### Inclusive Language
+- Use gender-neutral language (they/them for unknown individuals)
+- Avoid ableist language ("crazy", "blind spot", "lame")
+- Use person-first language where appropriate
+- Avoid culturally specific idioms that may not translate
+- Use "simple" or "straightforward" instead of "easy" (what is easy varies by person)
+
+#### Industry Jargon Management
+- Define which technical terms the audience understands without explanation
+- List jargon that should always be defined or replaced with plain language
+- Specify which acronyms need to be spelled out on first use
+- Audience-specific glossary for terms that mean different things to different readers
+
+#### Competitor and Category Terms
+- How to refer to your product category (use your preferred framing)
+- How to refer to competitors (by name or generically)
+- Terms competitors have coined that you should avoid (to prevent reinforcing their positioning)
+- Your preferred differentiation language
+
🧩
Skill-Anpassung
Neu
skills/brand-review/SKILL.md
## After Review
Von Daniel • 2026-04-24 09:26:29.392307
Worum geht es?
Neuer Skill „brand-review" wird angelegt
Ask: "Would you like me to:
Technischen Diff anzeigen
--- a/skills/brand-review/SKILL.md
+++ b/skills/brand-review/SKILL.md
@@ -0,0 +1,7 @@
+## After Review
+
+Ask: "Would you like me to:
+- Revise the full content with these suggestions applied?
+- Focus on fixing just the high-severity issues?
+- Review additional content against the same guidelines?
+- Help you document your brand voice for future reviews?"
Neuer Abschnitt „## ⚠️ FOLGE-CHAT ÜBERGABE" in CLAUDE.md
Inhalt: **Status:** [Aktueller Stand in einem Satz]
Technischen Diff anzeigen
--- a/CLAUDE.md
+++ b/CLAUDE.md
@@ -0,0 +1,6 @@
+## ⚠️ FOLGE-CHAT ÜBERGABE
+**Status:** [Aktueller Stand in einem Satz]
+**Letzter Fehler:** [Falls vorhanden]
+**Nächster Schritt:** [Was als nächstes zu tun ist]
+```
+
📘
CLAUDE.md-Anpassung
Neu
CLAUDE.md
## Zugriff auf Hetzner Linux Server & Synology DiskStations
Von Daniel • 2026-04-20 08:26:39.133527
Worum geht es?
Neuer Abschnitt „## Zugriff auf Hetzner Linux Server & Synology DiskStations" in CLAUDE.md
Inhalt: | Eigenschaft | Wert |
Technischen Diff anzeigen
--- a/CLAUDE.md
+++ b/CLAUDE.md
@@ -0,0 +1,61 @@
+## Zugriff auf Hetzner Linux Server & Synology DiskStations
+
+### Hetzner Linux Server (ovatics-data)
+
+| Eigenschaft | Wert |
+|---|---|
+| IP | 204.168.134.218 |
+| Standort | Helsinki (hel1-dc2) |
+| OS | Ubuntu 24.04 LTS |
+| SSH | Port 22, User root – nur über WireGuard-VPN (192.168.10.0/24) |
+
+**Claude-Zugriff über Remote API:**
+
+| Parameter | Wert |
+|---|---|
+| URL | https://remote-api.ovatics.de |
+| Auth | Bearer Token (siehe ClickUp-Doku "Linux Server - Server-Steckbrief & Zugaenge") |
+| Funktionen | Shell-Exec (Root), File R/W, Docker-Status, System-Info |
+
+Beispiel:
+```bash
+curl -X POST https://remote-api.ovatics.de/exec \
+ -H "Authorization: Bearer " \
+ -H "Content-Type: application/json" \
+ -d '{"command": "ls /opt"}'
+```
+
+**Wichtige Pfade:**
+
+| Pfad | Inhalt |
+|---|---|
+| /opt/ovatics-stack/ | Docker-Stack (Caddy, MariaDB, n8n, GLS-Webhook, Authelia, etc.) |
+| /opt/plenty_scripts/ | Daten-Scripts |
+| /opt/plenty-sync/ | Daten-Scripts |
+| /var/log/ovatics/ | Logs |
+
+**DB-Passwörter:** Bitwarden-Codes `[OV-536828]`, `[OV-540439]`, `[OV-118663]`
+
+**ClickUp-Doku:** Operations Knowledge Base → Datenquellen & Systeme:
+- "Linux Server - Server-Steckbrief & Zugaenge"
+- "Linux Server - Änderungsprotokoll"
+- "WireGuard VPN & SSH-Firewall - Hetzner Linux Server"
+
+### Synology DiskStations (NAS)
+
+| NAS | Lokale IP | URL | Schutz |
+|---|---|---|---|
+| NAS 1 | 192.168.10.60 | https://nas1.ovatics.de | Authelia |
+| NAS 2 | 192.168.10.61 | https://nas2.ovatics.de | Authelia |
+
+- **Netzwerk:** Nur über WireGuard-Tunnel vom Hetzner-Server aus erreichbar (nicht direkt aus dem Internet)
+- **Caddy:** Reverse Proxy auf Port 5001 (DSM HTTPS) mit tls_insecure_skip_verify
+- **Dateizugriff vom Server:** Via Remote API Shell-Exec, z.B. per SMB-Mount oder direktem Netzwerkzugriff auf 192.168.10.60/61
+
+### Wichtige Hinweise
+
+- SSH zum Hetzner-Server ist aus dem öffentlichen Internet gesperrt (Hetzner Cloud Firewall)
+- Notfall-Zugang: Hetzner Cloud Console (browserbasiert)
+- Bei DSL-Reconnect kann der WireGuard-Tunnel bis zu 5 Min unterbrochen sein (Cronjob löst DynDNS alle 5 Min neu auf)
+- Alte IP 192.168.10.206 und DNS-Eintrag nas.ovatics.de existieren nicht mehr
+
📘
CLAUDE.md-Anpassung
Entfernt
CLAUDE.md
## Task-Handling für Martin
Von Daniel • 2026-04-20 08:26:39.132618
Worum geht es?
Abschnitt „## Task-Handling für Martin" aus CLAUDE.md entfernt
Technischen Diff anzeigen
--- a/CLAUDE.md
+++ b/CLAUDE.md
@@ -1,3 +0,0 @@
-## Task-Handling für Martin
-Aufgaben und Tasks werden in ClickUp in Martins Bereich verwaltet.
-
📘
CLAUDE.md-Anpassung
Neu
CLAUDE.md
## Task-Handling für Daniel
Von Daniel • 2026-04-20 08:26:39.131717
Worum geht es?
Neuer Abschnitt „## Task-Handling für Daniel" in CLAUDE.md
Inhalt: Aufgaben und Tasks werden in ClickUp in Daniels Bereich verwaltet (Space: `Daniels Bereiche`, ID: `90125315748`).
Technischen Diff anzeigen
--- a/CLAUDE.md
+++ b/CLAUDE.md
@@ -0,0 +1,11 @@
+## Task-Handling für Daniel
+
+Aufgaben und Tasks werden in ClickUp in Daniels Bereich verwaltet (Space: `Daniels Bereiche`, ID: `90125315748`).
+
+**Grundregeln:**
+- Haupt-Tasks liegen IMMER in Daniels Bereich — auch bei Subtasks an andere Personen.
+- Standard-Verantwortlicher: Daniel Müller (ID: `93740998`)
+- Subtasks können zugewiesen werden an: Martin Seiler (ID: `158602035`), Nils (ID: `158602009`), Antonia Barzu (ID: `93703065`)
+- Bei „dokumentiere" → IMMER Dokument in Operations KB UND Tasks in Daniels Bereich
+- Bei „Tasks erstellen" → NUR Tasks, keine Dokumentation
+
📘
CLAUDE.md-Anpassung
Neu
CLAUDE.md
## Passwort-Handling
Von Daniel • 2026-04-20 08:26:39.130800
Worum geht es?
Neuer Abschnitt „## Passwort-Handling" in CLAUDE.md
Inhalt: Passwörter dürfen NIEMALS im Klartext in Dokumentationen, Tickets oder anderen internen Texten stehen. Stattdessen wird ein eindeutiger Platzhalter-Code im Form…
Technischen Diff anzeigen
--- a/CLAUDE.md
+++ b/CLAUDE.md
@@ -0,0 +1,14 @@
+## Passwort-Handling
+
+Passwörter dürfen NIEMALS im Klartext in Dokumentationen, Tickets oder anderen internen Texten stehen. Stattdessen wird ein eindeutiger Platzhalter-Code im Format `[OV-XXXXXX]` verwendet (z.B. `[OV-483921]`).
+
+**So funktioniert das System:**
+1. Für jedes neue Passwort einen zufälligen 6-stelligen Code generieren im Format `[OV-XXXXXX]`.
+2. In der Dokumentation diesen Code als Platzhalter verwenden, z.B.: `Passwort: siehe [OV-483921] in Bitwarden`
+3. Der zugehörige Bitwarden-Eintrag trägt denselben Code im Titel, z.B.: `[OV-483921] GREYHOUND RPC-API` — so ist er per Suche sofort auffindbar.
+4. Den Code in der ClickUp-Liste "Passwort-Codes" registrieren (Operations Knowledge Base → Datenquellen & Systeme → Passwort-Codes, List-ID: 901216066260), mit Angabe wofür das Passwort ist und dem Ersteller-Kürzel (M=Martin, N=Nils, D=Daniel).
+
+**Wichtig:** Das Präfix "OV" und die eckigen Klammern stellen sicher, dass Codes nicht mit Telefonnummern, PINs oder anderen Zahlenwerten verwechselt werden. Weder in der Dokumentation noch in der Passwort-Codes-Liste werden jemals echte Passwörter gespeichert — nur Codes und Metadaten. Die Passwörter selbst liegen ausschließlich im Bitwarden-Vault.
+
+**Referenz-Dokument:** "Passwort-Dokumentation mit Platzhalter-Codes" in der Operations Knowledge Base (https://app.clickup.com/9012601234/docs/8ck2rcj-2452)
+
📘
CLAUDE.md-Anpassung
Neu
CLAUDE.md
## Operations Knowledge Base
Von Daniel • 2026-04-20 08:26:39.129889
Worum geht es?
Neuer Abschnitt „## Operations Knowledge Base" in CLAUDE.md
Inhalt: Dokumentationen werden grundsätzlich in ClickUp im Bereich Operations Knowledge Base verwaltet. Für neu entwickelte Tools, Zugangsdaten, technische Dokumentatio…
Technischen Diff anzeigen
--- a/CLAUDE.md
+++ b/CLAUDE.md
@@ -0,0 +1,6 @@
+## Operations Knowledge Base
+
+Dokumentationen werden grundsätzlich in ClickUp im Bereich Operations Knowledge Base verwaltet. Für neu entwickelte Tools, Zugangsdaten, technische Dokumentation, alles was du mit mir neu entwickelst oder veränderst, schreibst du in die Doku. Entweder eine bestehende Dokumentation anpassen oder eine neue Dokumentation erstellen.
+
+Für neue Themen oder notwendigen Kontext, den du benötigst, um Aufgaben zu erarbeiten, nutze die Operations Knowledge Base aktiv.
+
📘
CLAUDE.md-Anpassung
Entfernt
CLAUDE.md
## Martin-spezifische Notizen
Von Daniel • 2026-04-20 08:26:39.128963
Worum geht es?
Abschnitt „## Martin-spezifische Notizen" aus CLAUDE.md entfernt
Technischen Diff anzeigen
--- a/CLAUDE.md
+++ b/CLAUDE.md
@@ -1,3 +0,0 @@
-## Martin-spezifische Notizen
-Diese Section gibt es nur bei Martin (Demo-Delta).
-Keine Anweisungen, die Claude weiter bearbeiten soll — rein Test-Zweck.
📘
CLAUDE.md-Anpassung
Neu
CLAUDE.md
## Entwicklungsworkflow (verbindlich)
Von Daniel • 2026-04-20 08:26:39.128043
Worum geht es?
Neuer Abschnitt „## Entwicklungsworkflow (verbindlich)" in CLAUDE.md
Inhalt: Jede Code-Entwicklung — egal ob Microservice, Webhook, Skript oder Konfigurations-Tool — läuft ausschließlich GitHub-basiert:
Technischen Diff anzeigen
--- a/CLAUDE.md
+++ b/CLAUDE.md
@@ -0,0 +1,19 @@
+## Entwicklungsworkflow (verbindlich)
+
+Jede Code-Entwicklung — egal ob Microservice, Webhook, Skript oder Konfigurations-Tool — läuft ausschließlich GitHub-basiert:
+
+1. Lokales Arbeitsverzeichnis: `~/Git-Repos/` (Mac). Falls Repo noch nicht vorhanden: `git clone` aus dem Ovatics-GitHub-Account.
+2. Feature-Branch: Keine direkten Commits auf `main`. Branch-Schema: `feature/` oder `fix/`.
+3. Lokale Entwicklung & Tests: Alle Änderungen, Dependency-Installs, Unit-Tests lokal. Kein Editieren unter `/opt/*` auf dem Hetzner-Server.
+4. Push & Pull-Request: Push auf Feature-Branch, PR gegen `main`, Review durch Daniel.
+5. Deploy: Erst nach Merge auf `main` wird auf dem Server (ovatics-data, `/opt/ovatics-stack/...`) ausgerollt — per `git pull` im Repo-Verzeichnis und Container-Restart via Remote API.
+
+Was NICHT erlaubt ist:
+- Direkte Bearbeitung von Quellcode auf dem Hetzner-Server (auch nicht „nur kurz")
+- Claude-Code-Sessions, die den Server als Working-Directory nutzen
+- `git pull` auf dem Server ohne vorherigen Merge auf `main`
+
+Prompt-Check: Wenn ein Session-Prompt als Arbeitsverzeichnis einen Server-Pfad nennt (`/opt/...`, `ovatics-data:...`), ist das ein Bug im Prompt — vor Start korrigieren.
+
+Deep-Dive-Doku: https://app.clickup.com/9012601234/docs/8ck2rcj-6352/8ck2rcj-7392
+
📘
CLAUDE.md-Anpassung
Neu
CLAUDE.md
## Dokumentationsstandard für ClickUp Knowledge Base
Von Daniel • 2026-04-20 08:26:39.127083
Worum geht es?
Neuer Abschnitt „## Dokumentationsstandard für ClickUp Knowledge Base" in CLAUDE.md
Inhalt: Jedes Dokument, das in der Operations Knowledge Base erstellt oder aktualisiert wird, MUSS folgendem Standard entsprechen. Das gilt ausnahmslos — auch für schne…
Technischen Diff anzeigen
--- a/CLAUDE.md
+++ b/CLAUDE.md
@@ -0,0 +1,63 @@
+## Dokumentationsstandard für ClickUp Knowledge Base
+
+Jedes Dokument, das in der Operations Knowledge Base erstellt oder aktualisiert wird, MUSS folgendem Standard entsprechen. Das gilt ausnahmslos — auch für schnelle Notizen oder Zwischenstände.
+
+### 1. Metadaten-Block am Dokumentanfang
+
+Jedes Dokument beginnt mit einem strukturierten Kopfbereich im folgenden Format:
+
+```yaml
+---
+Titel: [Dokumenttitel]
+Kategorie: [Ordnername in der Knowledge Base, z.B. Datenquellen & Systeme]
+Status: aktiv | in-entwicklung | veraltet | archiviert
+Erstellt: [YYYY-MM-DD]
+Letztes Update: [YYYY-MM-DD]
+Autor: [Name oder KI-Modell, z.B. Claude / ChatGPT / Martin]
+Zugehörige Systeme: [Kommagetrennte Liste, z.B. PlentyONE, n8n, Hetzner]
+---
+```
+
+Beim Aktualisieren eines bestehenden Dokuments: Immer `Letztes Update` und ggf. `Status` anpassen.
+
+### 2. Dokumentstruktur
+
+- **Heading-Hierarchie:** `#` für Dokumenttitel (max. 1x), `##` für Hauptabschnitte, `###` für Unterabschnitte. Keine Ebene überspringen.
+- **Standardabschnitte** (je nach Dokumenttyp sinnvoll einsetzen):
+ - `## Übersicht` — Kurzbeschreibung in 2-3 Sätzen: Was ist das? Wozu dient es?
+ - `## Infrastruktur` — Server, Pfade, Ports, URLs (als Tabelle)
+ - `## API-Endpunkte` — Endpunkt, Methode, Funktion (als Tabelle)
+ - `## Authentifizierung` — Zugangsmethode, Key-Speicherort (Passwort-Codes nutzen, nie Klartext!)
+ - `## Ablauf / Prozess` — Schritt-für-Schritt-Anleitung oder Workflow-Beschreibung
+ - `## Wartung & Troubleshooting` — Befehle zum Prüfen, Neustarten, Logs anschauen
+ - `## Bekannte Probleme` — Dokumentierte Fehler und Workarounds
+ - `## Verwandte Dokumente` — Links zu anderen ClickUp Docs
+
+### 3. Code-Blöcke
+
+Code-Blöcke IMMER mit Sprachkennung versehen:
+- ` ```bash ` für Shell-Befehle
+- ` ```sql ` für SQL
+- ` ```python ` für Python
+- ` ```javascript ` für JS/Node
+- ` ```json ` für JSON-Konfigurationen
+
+Nie einen Code-Block ohne Sprachkennung verwenden.
+
+### 4. Tabellen statt Fließtext für strukturierte Daten
+
+Für Parameter, Endpunkte, Server-Infos, Zugangsdaten etc. immer Markdown-Tabellen verwenden.
+
+### 5. Passwörter und Zugangsdaten
+
+- Nie Passwörter im Klartext in Dokumente schreiben
+- Platzhalter-Code im Format `[OV-XXXXXX]` verwenden und auf Bitwarden verweisen: `Passwort: siehe [OV-XXXXXX] in Bitwarden`
+- Bei neuen Passwörtern: Code generieren, in Bitwarden-Eintrag-Titel aufnehmen, in der ClickUp-Liste "Passwort-Codes" (901216066260) registrieren
+- API-Keys nur mit Hinweis auf Speicherort referenzieren: `API-Key in /pfad/.env → VARIABLE_NAME`
+- Vollständige Anleitung: siehe Abschnitt "Passwort-Handling" oben in diesem Dokument
+
+### 6. Folge-Chat-Übergaben
+
+Wenn ein Dokument als Übergabe für eine Folge-Session dient, beginnt es mit einem klar markierten Übergabeblock:
+
+```markdown
📘
CLAUDE.md-Anpassung
Neu
CLAUDE.md
## Browser-Automatisierung (verbindlich)
Von Daniel • 2026-04-20 08:26:39.125856
Worum geht es?
Neuer Abschnitt „## Browser-Automatisierung (verbindlich)" in CLAUDE.md
Inhalt: Jede Browser-Interaktion — egal ob Recherche, Login, Formular, Scraping oder Debugging — läuft nach folgender Werkzeug-Priorität:
Technischen Diff anzeigen
--- a/CLAUDE.md
+++ b/CLAUDE.md
@@ -0,0 +1,20 @@
+## Browser-Automatisierung (verbindlich)
+
+Jede Browser-Interaktion — egal ob Recherche, Login, Formular, Scraping oder Debugging — läuft nach folgender Werkzeug-Priorität:
+
+1. Standard: Claude in Chrome. Visuell-agentischer Ansatz (Screenshots, semantisches Verständnis). Für alle normalen Web-Aufgaben: Logins, mehrstufige Workflows, Formulare, Recherche, Drag-and-Drop, Navigation auf unbekannten Layouts.
+2. Ausnahme: Kapture Browser Automation. DOM-/DevTools-basiert. Nur einsetzen, wenn einer dieser Fälle vorliegt:
+ - DevTools-Funktionen nötig (Console-Logs, Network-Requests, DOM-Inspektion)
+ - Reproduzierbare Scraping-Routine auf einer bekannten Seite mit stabilen Selektoren
+ - Gezielte JavaScript-Ausführung in einer laufenden Developer-Session
+ - Ich fordere Kapture explizit an
+3. Tool-Wechsel: Wenn in einer Session das falsche Tool greift (z.B. Kapture öffnet unerwartet Tabs), sofort auf Claude in Chrome umschalten — nicht weiter versuchen.
+
+Was NICHT erlaubt ist:
+- Kapture als Default-Tool für normale Web-Bedienung verwenden
+- Parallel beide Tools auf denselben Tab loslassen
+- Bei Kapture-Registrierungsproblemen einfach neue Tabs öffnen — stattdessen zu Claude in Chrome wechseln
+
+Typische Ovatics-Kapture-Fälle: Plentymarkets-Backend-Debugging, Cockpit-Fehleranalyse (Console/Network), gezielte DOM-Inspektion auf bekannten internen Tools.
+
+Prompt-Check: Wenn ein Session-Prompt „browser", „navigate", „klick auf …" enthält, ohne DevTools-Kontext → Claude in Chrome. Erst bei expliziter DevTools-/Debug-Nennung → Kapture.
🧩
Skill-Anpassung
Entfernt
skills/martin-warenwirtschaft/SKILL.md
__frontmatter__
Von Daniel • 2026-04-20 08:26:39.124544
Worum geht es?
Skill „martin-warenwirtschaft" wird entfernt
Technischen Diff anzeigen
--- a/skills/martin-warenwirtschaft/SKILL.md
+++ b/skills/martin-warenwirtschaft/SKILL.md
@@ -1,4 +0,0 @@
----
-name: martin-warenwirtschaft
-description: Fiktiver Skill für Warenwirtschafts-Abfragen in PlentyONE. Demo-Skill zum Test des WSS-Sync.
----
🧩
Skill-Anpassung
Entfernt
skills/martin-warenwirtschaft/SKILL.md
## Zweck
Von Daniel • 2026-04-20 08:26:39.123212
Worum geht es?
Skill „martin-warenwirtschaft" wird entfernt
Technischen Diff anzeigen
--- a/skills/martin-warenwirtschaft/SKILL.md
+++ b/skills/martin-warenwirtschaft/SKILL.md
@@ -1,3 +0,0 @@
-## Zweck
-Demo-Skill: zeigt, wie Martins neue Skills bei Daniel als Delta auftauchen.
-
🧩
Skill-Anpassung
Entfernt
skills/martin-warenwirtschaft/SKILL.md
## Beispielaufrufe
Von Daniel • 2026-04-20 08:26:39.121805
Worum geht es?
Skill „martin-warenwirtschaft" wird entfernt
Technischen Diff anzeigen
--- a/skills/martin-warenwirtschaft/SKILL.md
+++ b/skills/martin-warenwirtschaft/SKILL.md
@@ -1,3 +0,0 @@
-## Beispielaufrufe
-- `zeig mir bestand für SKU 12345`
-- `welche Artikel haben Retouren-Rate > 10%`
🧩
Skill-Anpassung
Entfernt
skills/martin-lager-analyse/SKILL.md
__frontmatter__
Von Daniel • 2026-04-20 08:26:39.120012
Worum geht es?
Skill „martin-lager-analyse" wird entfernt
Technischen Diff anzeigen
--- a/skills/martin-lager-analyse/SKILL.md
+++ b/skills/martin-lager-analyse/SKILL.md
@@ -1,4 +0,0 @@
----
-name: martin-lager-analyse
-description: Fiktiver Skill für Lager-Tagesreports. Demo-Skill zum Test des WSS-Sync.
----
🧩
Skill-Anpassung
Entfernt
skills/martin-lager-analyse/SKILL.md
## Zweck
Von Daniel • 2026-04-20 08:26:39.118681
Worum geht es?
Skill „martin-lager-analyse" wird entfernt
Technischen Diff anzeigen
--- a/skills/martin-lager-analyse/SKILL.md
+++ b/skills/martin-lager-analyse/SKILL.md
@@ -1,3 +0,0 @@
-## Zweck
-Tagesreports über Warenbestand, Retouren und Lagerdurchlauf.
-