Turn raw project notes into a structured weekly Steering-Update with
fixed sections (Status traffic light, Fortschritt, Top-Risiken,
Entscheidung, Nächster Schritt, GF-Summary). Calendar week and today's
date are injected automatically so KW [Nummer] resolves correctly.
The optional trigger phrases from the prompt ("Mach mir auch eine
GF-Mail dazu.", "Wo sind blinde Flecken?", "Kürzer.") flow through the
existing "Zusätzliche Anweisungen" textarea, so the user can append
them per call without leaving the form. Signature name comes from
userFullName preference, falling back to "Raphael".
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
226 lines
7.3 KiB
JSON
226 lines
7.3 KiB
JSON
{
|
|
"$schema": "https://www.raycast.com/schemas/extension.json",
|
|
"name": "velum",
|
|
"title": "Velum",
|
|
"description": "Text per Velum-API pseudonymisieren und wiederherstellen.",
|
|
"icon": "extension-icon.png",
|
|
"author": "raphael",
|
|
"license": "MIT",
|
|
"categories": [
|
|
"Productivity",
|
|
"Developer Tools"
|
|
],
|
|
"commands": [
|
|
{
|
|
"name": "summarize-email",
|
|
"title": "Email-Konversation zusammenfassen",
|
|
"description": "Markierte Email pseudonymisieren, per Raycast-KI zusammenfassen und wiederherstellen.",
|
|
"mode": "view"
|
|
},
|
|
{
|
|
"name": "reply-email",
|
|
"title": "Email-Antwort generieren",
|
|
"description": "Antwort auf eine markierte Email/einen Mailverlauf per Raycast-KI verfassen — pseudonymisiert.",
|
|
"mode": "view"
|
|
},
|
|
{
|
|
"name": "briefing-from-notes",
|
|
"title": "Briefing aus Notizen",
|
|
"description": "Aus Notizen, Stichpunkten oder einem Transkript ein strukturiertes Briefing per Raycast-KI erstellen — pseudonymisiert.",
|
|
"mode": "view"
|
|
},
|
|
{
|
|
"name": "extract-action-items",
|
|
"title": "Action Items extrahieren",
|
|
"description": "Action Items aus einem Transkript, Thread oder Notizen als Markdown-Tabelle extrahieren — pseudonymisiert.",
|
|
"mode": "view"
|
|
},
|
|
{
|
|
"name": "extract-structured-data",
|
|
"title": "Strukturierte Daten extrahieren",
|
|
"description": "Strukturierte Daten (JSON oder Tabelle) aus Freitext gemäß einem Schema extrahieren — pseudonymisiert.",
|
|
"mode": "view"
|
|
},
|
|
{
|
|
"name": "project-status",
|
|
"title": "Projektstatusbericht erstellen",
|
|
"description": "Aus Rohnotizen ein Steering-Update für den Lenkungsausschuss erstellen — pseudonymisiert.",
|
|
"mode": "view"
|
|
},
|
|
{
|
|
"name": "pseudonymize-text",
|
|
"title": "Text pseudonymisieren",
|
|
"description": "Eingegebenen, markierten oder Zwischenablage-Text pseudonymisieren.",
|
|
"mode": "view"
|
|
},
|
|
{
|
|
"name": "pseudonymize-selected-text",
|
|
"title": "Markierten Text pseudonymisieren",
|
|
"description": "Aktuell markierten Text pseudonymisieren und das Ergebnis kopieren oder einfügen.",
|
|
"mode": "no-view"
|
|
},
|
|
{
|
|
"name": "pseudonymize-clipboard",
|
|
"title": "Zwischenablage pseudonymisieren",
|
|
"description": "Aktuellen Zwischenablage-Text pseudonymisieren und das Ergebnis kopieren oder einfügen.",
|
|
"mode": "no-view"
|
|
},
|
|
{
|
|
"name": "depseudonymize-text",
|
|
"title": "Text wiederherstellen",
|
|
"description": "Platzhalter mit einer gespeicherten Velum-Zuordnung wiederherstellen.",
|
|
"mode": "view"
|
|
},
|
|
{
|
|
"name": "depseudonymize-selected-text",
|
|
"title": "Markierten Text wiederherstellen",
|
|
"description": "Aktuell markierten Text mit der aktiven Sitzung wiederherstellen und das Ergebnis kopieren oder einfügen.",
|
|
"mode": "no-view"
|
|
},
|
|
{
|
|
"name": "depseudonymize-clipboard",
|
|
"title": "Zwischenablage wiederherstellen",
|
|
"description": "Aktuellen Zwischenablage-Text mit der aktiven Sitzung wiederherstellen und das Ergebnis kopieren oder einfügen.",
|
|
"mode": "no-view"
|
|
},
|
|
{
|
|
"name": "manage-sessions",
|
|
"title": "Sitzungen verwalten",
|
|
"description": "Velum-Sitzungen mit Zuordnungen anlegen, aktivieren, ansehen und löschen.",
|
|
"mode": "view"
|
|
}
|
|
],
|
|
"preferences": [
|
|
{
|
|
"name": "velumBaseUrl",
|
|
"title": "Velum Basis-URL",
|
|
"description": "Basis-URL der Velum-Installation, z. B. https://velum.example.com.",
|
|
"type": "textfield",
|
|
"required": true,
|
|
"placeholder": "https://velum.example.com"
|
|
},
|
|
{
|
|
"name": "authentikTokenUrl",
|
|
"title": "Authentik Token-URL",
|
|
"description": "OAuth2-Token-Endpunkt, üblicherweise https://auth.example.com/application/o/token/.",
|
|
"type": "textfield",
|
|
"required": true,
|
|
"placeholder": "https://auth.example.com/application/o/token/"
|
|
},
|
|
{
|
|
"name": "clientId",
|
|
"title": "OAuth Client-ID",
|
|
"description": "Client-ID des Authentik-Providers, der Tokens für Velum ausstellt.",
|
|
"type": "textfield",
|
|
"required": true
|
|
},
|
|
{
|
|
"name": "serviceAccountUsername",
|
|
"title": "Dienstkonto-Benutzername",
|
|
"description": "Benutzername des Authentik-Dienstkontos, z. B. svc-velum-raycast.",
|
|
"type": "textfield",
|
|
"required": true
|
|
},
|
|
{
|
|
"name": "serviceAccountPassword",
|
|
"title": "Dienstkonto App-Passwort",
|
|
"description": "App-Passwort/Token des Authentik-Dienstkontos.",
|
|
"type": "password",
|
|
"required": true
|
|
},
|
|
{
|
|
"name": "scope",
|
|
"title": "OAuth Scope",
|
|
"description": "Scopes, die von Authentik angefordert werden.",
|
|
"type": "textfield",
|
|
"required": false,
|
|
"default": "profile"
|
|
},
|
|
{
|
|
"name": "sessionMode",
|
|
"title": "Standard-Sitzungsmodus",
|
|
"description": "Bestimmt, wie Schnellbefehle eine Zuordnungs-Sitzung wählen.",
|
|
"type": "dropdown",
|
|
"required": true,
|
|
"default": "reuse-active",
|
|
"data": [
|
|
{
|
|
"title": "Aktive Sitzung wiederverwenden",
|
|
"value": "reuse-active"
|
|
},
|
|
{
|
|
"title": "Neue Sitzung pro Anfrage",
|
|
"value": "new-each-request"
|
|
},
|
|
{
|
|
"title": "Tagessitzung",
|
|
"value": "daily"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "quickOutput",
|
|
"title": "Ausgabe der Schnellbefehle",
|
|
"description": "Was die Befehle für markierten Text und Zwischenablage mit dem Ergebnis machen.",
|
|
"type": "dropdown",
|
|
"required": true,
|
|
"default": "copy",
|
|
"data": [
|
|
{
|
|
"title": "In die Zwischenablage kopieren",
|
|
"value": "copy"
|
|
},
|
|
{
|
|
"title": "Am Cursor einfügen",
|
|
"value": "paste"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "userFullName",
|
|
"title": "Eigener Name",
|
|
"description": "Dein Name in der Signatur generierter Email-Antworten (z. B. „Raphael“). Wird im Antwort-Befehl vorbefüllt und kann pro Aufruf überschrieben werden.",
|
|
"type": "textfield",
|
|
"required": true,
|
|
"placeholder": "Raphael"
|
|
},
|
|
{
|
|
"name": "maxSessions",
|
|
"title": "Maximale Anzahl gespeicherter Sitzungen",
|
|
"description": "Älteste Sitzungen werden entfernt, wenn dieses Limit überschritten wird.",
|
|
"type": "textfield",
|
|
"required": true,
|
|
"default": "20"
|
|
},
|
|
{
|
|
"name": "closeAfterAction",
|
|
"title": "Verhalten nach Abschluss",
|
|
"label": "Raycast nach Kopieren/Einfügen schließen",
|
|
"description": "Schließt das Raycast-Fenster und kehrt zum Root-Search zurück, sobald in einem AI-Workflow Kopieren oder Einfügen ausgelöst wurde.",
|
|
"type": "checkbox",
|
|
"required": true,
|
|
"default": true
|
|
}
|
|
],
|
|
"scripts": {
|
|
"build": "ray build -e dist",
|
|
"dev": "ray develop",
|
|
"fix-lint": "ray lint --fix",
|
|
"lint": "ray lint",
|
|
"publish": "ray publish"
|
|
},
|
|
"dependencies": {
|
|
"@raycast/api": "^1.104.17",
|
|
"@raycast/utils": "^2.2.5",
|
|
"marked": "^18.0.3"
|
|
},
|
|
"devDependencies": {
|
|
"@raycast/eslint-config": "^2.0.4",
|
|
"@types/node": "^22.15.3",
|
|
"@types/react": "^19.1.2",
|
|
"eslint": "^9.26.0",
|
|
"prettier": "^3.5.3",
|
|
"typescript": "^5.8.3"
|
|
}
|
|
}
|