KeePassXC Integration
Skill: KeePassXC Integration
KeePassXC is a local password manager: it stores entries (Title, Username, Password, URL, Notes) in an encrypted .kdbx database. There is no cloud API; the database is a single file. Access is via GUI or keepassxc-cli.
Activation Gate
Użyj tego skill gdy:
- Użytkownik potrzebuje pobrać sekret z bazy KeePassXC (hasło, token API, klucz SSH)
- Użytkownik chce użyć
keepassxc-clido zarządzania sekretami - Użytkownik pyta o konfigurację KeePassXC z Cursorem
Before implementing KeePassXC features, verify architecture:
- Keyring (SecretManagement/secret-tool) = database password ONLY
- KeePassXC database = ALL secrets (passwords, tokens, keys)
- No file-based fallbacks
Przegląd
Ten skill umożliwia bezpieczne zarządzanie sekretami przez KeePassXC z poziomu Cursora. Używa osobnej bazy cursor.kdbx z hasłem przechowywanym w PowerShell SecretManagement, SSH Agent dla kluczy SSH, oraz keepassxc-cli dla innych sekretów.
Struktura danych w bazie
- Grupy: używaj hierarchii
{project_name}/{env_name}(np.myapp/prod,myapp/dev). Ścieżka wpisu w CLI to np.ProjectName/EnvName/EntryTitle. - Wpisy: pole Title = nazwa sekretu (np. "GitHub Token", "API Key"); pole Password = wartość sekretu. Dla API key trzymaj wartość w Password, opcjonalnie Username = "api".
- Po co: spójna struktura umożliwia check-before-add (unikanie duplikatów) i skrypty oparte na ścieżce.
Konfiguracja
Zmienne środowiskowe
KEEPASS_DB_PATH- ścieżka do bazy Cursor (ustawiona w~/.profilei~/.bashrc)- WSL:
/mnt/c/Users/janja/OneDrive/Dokumenty/Inne/cursor.kdbx - Windows:
C:\Users\janja\OneDrive\Dokumenty\Inne\cursor.kdbx
- WSL:
Hasło bazy
Hasło bazy jest przechowywane w:
- PowerShell SecretManagement (główna metoda, pozwala na odczyt, dostępne z Windows i WSL)
- secret-tool (opcjonalny fallback dla WSL, jeśli D-Bus dostępny)
- Windows Credential Manager (backup, tylko zapis, nie można odczytać programatycznie)
WAŻNE:
- SecretManagement/secret-tool przechowują TYLKO hasło bazy KeePassXC, nie hasła z bazy
- Wszystkie sekrety (hasła, tokeny API, klucze SSH) są przechowywane wyłącznie w bazie KeePassXC
- Nie ma fallbacku do pliku - wszystkie metody używają bezpiecznych mechanizmów keyring
Hasło jest automatycznie zapisywane przez skrypt save-keepass-password-to-keyring.sh gdy baza jest otwarta w GUI.
Użycie
Podstawowe komendy
Pobieranie sekretu przez skrypt pomocniczy
# Pobierz hasło z wpisu
~/.cursor/scripts/get-keepass-secret.sh "Entry Title" "Password"
# Pobierz token API
~/.cursor/scripts/get-keepass-secret.sh "GitHub Token" "Token"
# Pobierz dowolny atrybut
~/.cursor/scripts/get-keepass-secret.sh "Entry Title" "Attribute Name"
Bezpośrednie użycie keepassxc-cli
# Lista wszystkich wpisów
keepassxc-cli ls "$KEEPASS_DB_PATH"
# Wyświetl szczegóły wpisu
keepassxc-cli show "$KEEPASS_DB_PATH" "Entry Title"
# Pobierz konkretny atrybut
keepassxc-cli show -a "Password" "$KEEPASS_DB_PATH" "Entry Title"
# Pobierz hasło (interaktywnie, jeśli nie jest w SecretManagement)
echo "hasło" | keepassxc-cli show -a "Password" "$KEEPASS_DB_PATH" "Entry Title"
Zapisywanie hasła do keyring
# Uruchom skrypt (wymaga otwartej bazy w GUI)
~/.cursor/scripts/save-keepass-password-to-keyring.sh
Dodawanie i aktualizacja wpisów
Obowiązkowy workflow przed zapisem (check-before-add): Zawsze sprawdź, czy grupa i wpis istnieją; nie dodawaj duplikatu.
- Sprawdzenie:
keepassxc-cli ls "$KEEPASS_DB_PATH" "ProjectName/EnvName"(ew.-R) lubkeepassxc-cli locate "$KEEPASS_DB_PATH" "EntryTitle"— czy wpis już jest? - Jeśli wpis istnieje → użyj edit, nie add:
keepassxc-cli edit "$KEEPASS_DB_PATH" "ProjectName/EnvName/EntryTitle"(opcje-t,-u,--url,-p/-gdla hasła). - Jeśli brak grupy → najpierw mkdir:
keepassxc-cli mkdir "$KEEPASS_DB_PATH" "ProjectName/EnvName". - Jeśli wpisu nie ma → add:
keepassxc-cli add "$KEEPASS_DB_PATH" "ProjectName/EnvName/EntryTitle"z-u username,--url(opcjonalnie),-p(prompt hasła) lub-g(generuj hasło).
Komendy keepassxc-cli: add, edit, show, ls, locate, mkdir, rm. Ograniczenia: w wielu wersjach CLI add i edit nie obsługują custom attributes ani Notes; tylko Title, Username, URL, Password.
Scenariusze:
- Odczyt: istniejący skrypt get-keepass-secret lub
keepassxc-cli show(ścieżka lub tytuł wpisu). - Zapis nowego sekretu: check (ls/locate) → mkdir grupy jeśli brak → add wpisu.
- Aktualizacja sekretu: locate/show → edit (zmiana hasła/username).
- Inicjalizacja struktury: mkdir
ProjectName, mkdirProjectName/EnvName.
Skrypty Pythona: Po wdrożeniu użyj scripts/keepass_ops.py (subkomendy get/add/update) dla spójnego check-before-add; szczegóły w doc/keepass-integration.md. Dla zaawansowanych przypadków nadal możesz wywoływać keepassxc-cli bezpośrednio.
SSH Agent
KeePassXC SSH Agent automatycznie ładuje klucze SSH z bazy do systemowego SSH agenta gdy baza jest otwarta w GUI.
Weryfikacja
# W PowerShell (Windows)
ssh-add -l
# Powinien być widoczny klucz SSH z bazy
Użycie kluczy SSH
Klucze SSH są automatycznie dostępne dla wszystkich połączeń SSH (nie trzeba podawać -i).
Przykłady użycia
Pobieranie tokenu GitHub
GITHUB_TOKEN=$(~/.cursor/scripts/get-keepass-secret.sh "GitHub Token" "Token")
export GITHUB_TOKEN
Pobieranie hasła do bazy danych
DB_PASSWORD=$(~/.cursor/scripts/get-keepass-secret.sh "Database Credentials" "Password")
Pobieranie klucza API
API_KEY=$(~/.cursor/scripts/get-keepass-secret.sh "Service API" "API Key")
Bezpieczeństwo
Best Practices
- Nie commituj haseł do Git - wszystkie sekrety są w bazie KeePassXC
- Używaj SSH Agent - klucze SSH są automatycznie ładowane, nie przechowywane na dysku
- Hasło w SecretManagement - bezpieczniejsze niż w zmiennych systemowych lub plikach
- Osobna baza Cursor - izolacja sekretów Cursora od głównej bazy
- Regularna synchronizacja - używaj KeeShare lub Merge do synchronizacji z główną bazą
- Tylko hasło bazy w keyring - wszystkie inne sekrety są wyłącznie w bazie KeePassXC
Ostrzeżenia
- Hasło bazy jest przechowywane w PowerShell SecretManagement - dostępne tylko dla użytkownika
- Skrypt
get-keepass-secret.shpróbuje w kolejności:- PowerShell SecretManagement (główna metoda)
- secret-tool (jeśli dostępny w WSL)
- Wpis w bazie "Cursor Database Password" (jeśli baza otwarta w GUI)
- Interaktywnie (ostatni fallback)
- Baza musi być otwarta w GUI, aby odczytać hasło z wpisu "Cursor Database Password"
- Nie ma fallbacku do pliku - wszystkie metody używają bezpiecznych mechanizmów keyring
Rozwiązywanie problemów
Problem: "Nie można odczytać hasła z bazy"
Rozwiązanie:
- Upewnij się, że baza
cursor.kdbxjest otwarta w KeePassXC GUI - Sprawdź czy wpis "Cursor Database Password" istnieje w bazie
- Uruchom
save-keepass-password-to-keyring.shaby zapisać hasło do SecretManagement
Problem: "keepassxc-cli: command not found"
Rozwiązanie:
sudo apt update
sudo apt install -y keepassxc
Problem: "Cannot retrieve secret from SecretManagement"
Rozwiązanie:
- Sprawdź czy moduły są zainstalowane:
Get-Module -ListAvailable -Name Microsoft.PowerShell.SecretManagement - Jeśli nie, zainstaluj:
Install-Module -Name Microsoft.PowerShell.SecretManagement -Scope CurrentUser Install-Module -Name Microsoft.PowerShell.SecretStore -Scope CurrentUser - Zarejestruj vault:
Register-SecretVault -Name LocalStore -ModuleName Microsoft.PowerShell.SecretStore -DefaultVault
Problem: Klucze SSH nie są widoczne w ssh-add
Rozwiązanie:
- Upewnij się, że SSH Agent jest włączony w KeePassXC (Tools → Settings → SSH Agent)
- Upewnij się, że Windows OpenSSH Agent jest uruchomiony:
Set-Service ssh-agent -StartupType Automatic Start-Service ssh-agent - Sprawdź czy klucz SSH jest dodany do bazy z konfiguracją SSH Agent
Synchronizacja baz
Baza cursor.kdbx może być synchronizowana z główną bazą jjaszczak.kdbx używając:
- KeeShare (rekomendowane) - GUI-based synchronizacja
- Merge - jednorazowe scalenie baz
Szczegółowe instrukcje w planie integracji.
Dokumentacja
- Runbook (odtworzenie na innej maszynie):
~/.cursor/doc/keepass-integration.md - Plan integracji:
~/.cursor/plans/keepassxc_integration_setup_6191af80.plan.md - Konfiguracja:
~/.cursor/doc/configuration.md - Skrypty:
~/.cursor/scripts/(get-keepass-secret.sh, save-keepass-password-to-keyring.sh, keepass_ops.py)
More from janjaszczak/cursor
vanilla-web
Build or modify plain HTML/CSS/JavaScript (no framework) using modular ES modules (ESM), SRP, minimal global state, and shippable runnable files with lightweight verification. Use for static pages, small UI widgets, vanilla JS refactors, and quick prototypes without React/Vue/Angular.
108mcp-postman
Use Postman MCP to inspect/maintain collections, environments, and API workflows; generate or validate requests and tests. Use when API verification or collections are the source of truth.
14python-backend-fastapi
>
8mcp-memory-recall
Recall and reuse prior decisions, constraints, and artifacts using MCP memory (e.g., Neo4j). Use when the user references past work (“jak ostatnio”, “kontynuuj”), when resuming a project thread, or when a repeated topic suggests existing decisions.
7task-planning-shrimp
Plan, split, and track multi-step work using Shrimp Task Manager MCP (or equivalent). Use for multi-file refactors, migrations, or any work that benefits from task tracking.
7mcp-github-ops
Use GitHub MCP for issue/PR context, diffs, reviews, and automations. Use when the task references PR/issue numbers, review requests, or requires repo metadata beyond local git.
7