본문으로 건너뛰기
cccskills
무료GitHub에 공개

add-integration

Add a new third-party integration (Jira/Linear-style) — per-workspace credentials, 90s auth-health poller, settings page, link/import buttons. Use when scaffolding a new external service integration.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

kdlbs/kandev스타 1,020(GitHub 1,020 + cccskills 0)
연동 도구Jira

실행 점수 미검증

설치 방법 보기

포함된 파일(1)

  • SKILL.md3.8 KB

SKILL.md(원문)

설치하기 전에 에이전트에게 전달되는 지시 내용을 확인할 수 있습니다.

Adding a new third-party integration

Planner Entry

Load /spec-driven-development for a substantial integration. The primary session plans, investigates existing patterns, and may directly implement a small localized slice. Delegate only independent backend, frontend, test, or documentation packets whose isolation clearly helps; workers do not spawn.

Jira and Linear are the model: per-workspace credentials, a 90s auth-health poller, a settings page with status banner + reconnect CTA, link/import buttons that gate on availability. New integrations should reuse the shared shapes rather than copying either.

Backend (apps/backend/internal/<name>/)

  • Mirror the package layout: service.go, store.go, client.go, provider.go, handlers.go, models.go, poller.go. Expose Provide(writer, reader *sqlx.DB, secrets SecretStore, eventBus bus.EventBus, log *logger.Logger) (*Service, func() error, error). Pass nil for eventBus when the integration doesn't publish events; both Jira and Linear take and use it for issue-watch publishing.
  • Use internal/integrations/secretadapter instead of writing your own upsert wrapper around secrets.SecretStore. The adapter satisfies any per-integration SecretStore interface shaped as {Reveal, Set, Delete, Exists}.
  • Use internal/integrations/healthpoll for the auth-health loop. Implement the Prober interface (ListConfiguredWorkspaces + RecordAuthHealth) on a small adapter and let healthpoll.New("name", prober, log) own Start/Stop/ticker. Keep integration-specific loops (JQL polling, webhook reconciliation, etc.) separate, like jira's issue-watch loop.
  • Wire the service via a per-domain init<Name>Service(...) helper in cmd/kandev/services.go, not inline in provideServices.
  • Ship a mock_client.go + mock_controller.go next to the real client. Provide branches on KANDEV_MOCK_<NAME>=true and returns the in-memory client; RegisterMockRoutes(router, svc, log) mounts /api/v1/<name>/mock/* only when the service was built with the mock. The e2e backend fixture sets the env var so Playwright tests drive the mock via apiClient.mock<Name>*() helpers — see jira/linear for the layout.

Frontend

  • Hooks live under hooks/domains/<name>/, not components/<name>/.
  • Use hooks/domains/integrations/use-integration-availability.ts and use-integration-enabled.ts — each integration's useXAvailable / useXEnabled should be a one-line wrapper passing the storage key + sync event + config-fetch function.
  • Settings page reuses <IntegrationAuthStatusBanner> (components/integrations/auth-status-banner.tsx).
  • "Auth required / reconnect" UI reuses <IntegrationAuthErrorMessage> (components/integrations/auth-error-message.tsx) — supply the integration's display name, regex check, and reconnect href.
  • Link / import popovers reuse <ValidatedPopover> (components/integrations/validated-popover.tsx) — supply the icon, label, key regex, fetch function, and success callback.

Where Jira and Linear deliberately diverge

  • Issue model: Jira uses transitions + JQL; Linear uses state IDs + structured filters. Don't merge these schemas — the upstream APIs are genuinely different.
  • Watch filter persistence: Jira stores the JQL string verbatim; Linear stores the structured SearchFilter as JSON in filter_json (Linear has no JQL equivalent). The orchestrator emits NewJiraIssueEvent / NewLinearIssueEvent respectively and dedups by issue key (Jira) vs identifier (Linear).
  • Health column extras: Linear's linear_configs row carries an org_slug captured from successful probes; Jira's row does not.

리뷰

아직 리뷰가 없습니다. 사용해 본 소감을 남겨 주세요.

댓글

로그인 없이 쓸 수 있습니다. 사용 후기, 질문, 작동하지 않은 환경 등을 편하게 남겨 주세요.

아직 댓글이 없습니다. 첫 댓글을 남겨 보세요.

보내면 바로 공개됩니다. 이메일 주소나 전화번호 같은 개인 정보는 쓰지 마세요. URL은 2개까지입니다.

0 / 1,000자

이 양식은 reCAPTCHA로 보호되며 Google 개인정보처리방침 및 서비스 약관이 적용됩니다.

같은 저장소의 스킬

acp-debug

무료

Debug an ACP agent CLI by spawning it, speaking raw JSON-RPC, and capturing every frame to a JSONL file. Use when the user asks to probe an agent's capabilities, compare agents, test a prompt against an agent, inspect raw ACP wire frames, or investigate why an agent fails to initialize.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

kdlbs/kandev1천2026년 10월 26일 업데이트

Delete local branches whose remote has been deleted ([gone]), including their worktrees. Use for branch cleanup after merging PRs.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

kdlbs/kandev1천2026년 10월 26일 업데이트

Review changed code for quality, security, and architecture compliance. Use only when the user explicitly requests local review or a PR finding requires it.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

kdlbs/kandev1천2026년 10월 26일 업데이트

commit

무료

Stage and commit changes using Conventional Commits. Use when there are dirty/staged files to commit, the user says "commit", or before pushing a PR.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

kdlbs/kandev1천2026년 10월 26일 업데이트

Curate the right project context before coding or debugging. Use when starting a new session, switching areas of the codebase, output quality is drifting, a task spans backend/frontend/docs, or external instructions need to be reconciled with Kandev conventions.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

kdlbs/kandev1천2026년 10월 26일 업데이트

Create, modify, debug, test, package, or publish a Kandev runtime plugin in its dedicated repository. Use only when the requested work targets a Kandev plugin implementation or its release and marketplace lifecycle, including fixing a bug in an existing plugin. Do not use for agent skills, MCP servers, general integrations, or Kandev host, SDK, loader, and registry changes that do not also change a plugin.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

kdlbs/kandev1천2026년 10월 26일 업데이트

kdlbs의 스킬 모두 보기

이 스킬의 문제 신고