Przepływy pracy
Osobisty token dostępu sprawia, że Twoje inne narzędzia mogą odczytywać i zapisywać dane w Kombine. Poniżej kilka przykładów, do czego ludzie go używają, z konfiguracjami do skopiowania. Polecenia korzystają z pomocniczej funkcji k z Korzystania z API.
Pozwól agentowi AI zarządzać Twoimi zadaniami
Dział zatytułowany „Pozwól agentowi AI zarządzać Twoimi zadaniami”Agenci AI do kodowania, tacy jak Claude Code, Codex czy Cursor, mogą wywoływać API za Ciebie. Prosisz zwykłymi słowami („co mam do zrobienia w tym tygodniu?”, „dodaj na jutro zadanie przejrzenia PR-a Anny, wysoki priorytet”, „zapisz 45 minut głębokiej pracy nad migracją”), a agent wysyła żądania. Najszybciej jest zainstalować skill Kombine. Poniższe kroki robią to samo ręcznie, dla agentów, które nie obsługują skilli.
- Utwórz token dla agenta. Zacznij od samego Odczytu i dodaj Odczyt i zapis dla obszarów, które agent ma zmieniać.
- Umieść token w zmiennej środowiskowej, z której agent może korzystać, na przykład
KOMBINE_TOKEN. Nie wklejaj go do czatu. - Powiedz agentowi, jak połączyć się z Kombine. Wpisz to do jego pliku z instrukcjami (
CLAUDE.md,AGENTS.mdlub podobnego):
## Kombine (my tasks and focus sessions)- API: https://api.kombine.dev/v1, auth header `Authorization: Bearer $KOMBINE_TOKEN`- Reference: https://api.kombine.dev/v1/openapi.json (read it before your first call)- Creating anything: generate the `id` yourself (a lowercase UUID).- Show me what you're about to create or change, and wait for my OK.- Never print the token.Zostaw linijkę „wait for my OK”, przynajmniej na początku. Agent zapisuje bezpośrednio do Twoich prawdziwych danych.
Żeby korzystać z tego na co dzień, zamknij powtarzalne zadanie w skrypcie i każ agentowi go uruchamiać. Tak zaczął się opisany niżej import z Jiry: skill Claude Code, który uruchamia skrypt z --dry-run, pokazuje listę i importuje po potwierdzeniu.
Import z innego narzędzia
Dział zatytułowany „Import z innego narzędzia”Pobieraj pracę z Jiry, GitHub issues, Lineara lub czegokolwiek z API do Kombine, żeby Twoje sesje skupienia i statystyki ją obejmowały. Uruchamiaj import tak często, jak chcesz: każdy element trafia do Kombine tylko raz.
Umożliwia to pole external_ref zadania: stały odnośnik do elementu, z którego zadanie pochodzi, w formacie <source>:<id>, na przykład jira:PROJ-123 albo github:kombine#42.
- Źródło składa się z małych liter, cyfr i myślników. Identyfikator może być czymkolwiek bez spacji.
- Każdego
external_refmożna użyć raz na konto. Próba utworzenia drugiego zadania z tą samą wartością kończy się błędem409z kodem4010. - Dotyczy to również usuniętych zadań. Usunięcie zaimportowanego zadania oznacza „przestań to śledzić” i importer nie może go przywrócić.
- Ustaw je przy tworzeniu zadania. Później nie da się go zmienić.
- Lista tego, co już zaimportowałeś, łącznie z zarchiwizowanymi i usuniętymi:
k "$API/tasks?external_ref_prefix=jira:"
Zasady, dzięki którym importy są przyjemne:
- Źródło jest właścicielem tytułu, priorytetu i opisu. Ty jesteś właścicielem wszystkiego innego: statusu, terminu, energii, przypomnień. Importer nie powinien ich nadpisywać.
- Dodaj tag, np.
jira, żeby zaimportowane zadania łatwo było znaleźć i przefiltrować.
kombine-jira-import.sh importuje otwarte zgłoszenia z Jiry przypisane do Ciebie:
- Tytuł
PROJ-123: summary, link do zgłoszenia jako opis, tagjira. - Priorytety z Jiry są mapowane na Kombine: Highest i High → Wysoki, Medium → Średni, Low i Lowest → Niski.
- Zgłoszenia już zaimportowane, zarchiwizowane lub usunięte są pomijane.
curl -O https://kombine.dev/examples/kombine-jira-import.sh && chmod +x kombine-jira-import.shexport JIRA_SITE='your-company.atlassian.net' JIRA_EMAIL='you@company.com'export JIRA_TOKEN='…' # id.atlassian.com › Security › API tokensexport KOMBINE_TOKEN='…' # tasks: Read & write, sessions: Read./kombine-jira-import.sh --dry-run # see what would be created./kombine-jira-import.shZmienisz wybór zgłoszeń przez JIRA_JQL, a nowe zadania oznaczysz aktywnością przez KOMBINE_ACTIVITY="Work". Przeczytaj skrypt, zanim go uruchomisz; jest krótki.
Skróty w terminalu
Dział zatytułowany „Skróty w terminalu”Małe funkcje do Twojego .zshrc lub .bashrc. Potrzebują tokena z uprawnieniami zadania: Odczyt i zapis oraz sesje: Odczyt i zapis.
# kadd "Call the bank" [LOW|MEDIUM|HIGH]kadd() { k -X POST "$API/tasks" -d "$(jq -n --arg id "$(uuidgen | tr A-Z a-z)" --arg t "$1" --arg p "${2:-}" \ '{id: $id, title: $t} + (if $p == "" then {} else {priority: $p} end)')" | jq -r '"added: \(.title)"'}
# ktoday: open tasks due today or earlierktoday() { k "$API/tasks?limit=500" | jq -r --arg d "$(date +%F)" ' .data[] | select(.status != "DONE" and .is_archived == false and .due_date != null and .due_date[0:10] <= $d) | "• \(.title)"'}
# klog 45 "Code review": log a finished focus session of N minutes, ending nowklog() { local end start end=$(date -u +%Y-%m-%dT%H:%M:%SZ) start=$(date -u -v-"$1"M +%Y-%m-%dT%H:%M:%SZ 2>/dev/null || date -u -d "-$1 min" +%Y-%m-%dT%H:%M:%SZ) k -X POST "$API/sessions" -d "$(jq -n --arg id "$(uuidgen | tr A-Z a-z)" --arg s "$start" --arg e "$end" \ --argjson ms "$(( $1 * 60000 ))" --arg n "${2:-}" \ '{id: $id, mode: "POMODORO", started_at: $s, ended_at: $e, duration_ms: $ms, note: $n}')" >/dev/null && echo "logged $1 min"}Timer na pasku stanu. Z tokenem timer: Odczyt możesz pokazać, co działa na Twoim telefonie, w tmuxie, narzędziu na pasku menu albo w prompcie:
k "$API/timer/state" | jq -r '"\(.mode) · \(.status)"'Gdy żaden timer nie działa, nic nie wypisuje. Odświeżaj mniej więcej co 30 sekund; token pozwala na 60 żądań na minutę.
Własne dashboardy
Dział zatytułowany „Własne dashboardy”Token z samym statystyki: Odczyt (i sesje: Odczyt, jeśli chcesz szczegółów) to bezpieczny sposób, żeby przesyłać swoje liczby gdzie indziej: do arkusza kalkulacyjnego, Grafany, cotygodniowego maila do siebie.
# sessions per day this month, and whether you hit your daily target, as CSVk "$API/daily-snapshots?from=$(date +%Y-%m-01)&to=$(date +%F)" | jq -r '.snapshots[] | [.date, .sessions_completed, .achieved] | @csv'
# all-time totalsk "$API/stats/all-time" | jq '{totalFocusSessions, hours: ((.totalFocusSeconds // 0) / 3600 | floor), longestStreakLength}'Specyfikacja OpenAPI opisuje każde pole zwracane przez endpointy statystyk i sesji.