Przejdź do głównej zawartości

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.

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.

  1. Utwórz token dla agenta. Zacznij od samego Odczytu i dodaj Odczyt i zapis dla obszarów, które agent ma zmieniać.
  2. Umieść token w zmiennej środowiskowej, z której agent może korzystać, na przykład KOMBINE_TOKEN. Nie wklejaj go do czatu.
  3. Powiedz agentowi, jak połączyć się z Kombine. Wpisz to do jego pliku z instrukcjami (CLAUDE.md, AGENTS.md lub 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.

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_ref można użyć raz na konto. Próba utworzenia drugiego zadania z tą samą wartością kończy się błędem 409 z kodem 4010.
  • 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, tag jira.
  • 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.
Okno terminala
curl -O https://kombine.dev/examples/kombine-jira-import.sh && chmod +x kombine-jira-import.sh
export JIRA_SITE='your-company.atlassian.net' JIRA_EMAIL='you@company.com'
export JIRA_TOKEN='…' # id.atlassian.com › Security › API tokens
export KOMBINE_TOKEN='…' # tasks: Read & write, sessions: Read
./kombine-jira-import.sh --dry-run # see what would be created
./kombine-jira-import.sh

Zmienisz 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.

Małe funkcje do Twojego .zshrc lub .bashrc. Potrzebują tokena z uprawnieniami zadania: Odczyt i zapis oraz sesje: Odczyt i zapis.

Okno terminala
# 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 earlier
ktoday() {
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 now
klog() {
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:

Okno terminala
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ę.

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.

Okno terminala
# sessions per day this month, and whether you hit your daily target, as CSV
k "$API/daily-snapshots?from=$(date +%Y-%m-01)&to=$(date +%F)" | jq -r '.snapshots[] | [.date, .sessions_completed, .achieved] | @csv'
# all-time totals
k "$API/stats/all-time" | jq '{totalFocusSessions, hours: ((.totalFocusSeconds // 0) / 3600 | floor), longestStreakLength}'

Specyfikacja OpenAPI opisuje każde pole zwracane przez endpointy statystyk i sesji.