Skip to content

docs: add asana README and per-service emulator skills#14

Merged
amondnet merged 2 commits into
mainfrom
amondnet/docs
Jun 19, 2026
Merged

docs: add asana README and per-service emulator skills#14
amondnet merged 2 commits into
mainfrom
amondnet/docs

Conversation

@amondnet

@amondnet amondnet commented Jun 19, 2026

Copy link
Copy Markdown
Contributor

Summary

Documentation-only change. No source or test changes.

  • packages/asana/README.md — adds a README for the Asana emulator package, covering bearer-token auth, request/response envelope conventions, the full emulated endpoint table, seed config, and programmatic use. Grounded in the package source (index.ts, store.ts, helpers.ts, routes/*) and the CLI registry.
  • skills/ — adds SKILL.md for asana, kakao, naver, tosspayments, firebase, and supabase, mirroring the existing skills/linear/SKILL.md convention (frontmatter → overview → Start → Auth → Flow/Example → Seed Config).

Each skill's auth mechanism, route paths, CI shortcuts, and seed config were verified against the respective package implementation:

Service Auth Notes
kakao Bearer (kapi); client_id/secret (token) ?user_id= auto-approve on authorize
naver Bearer (profile); OAuth grants ?user= auto-approve; issue/refresh/delete
tosspayments Basic base64(secret_key:) PAYMENT_STATUS_CHANGED webhooks
firebase ?key= (Identity Toolkit/Secure Token); Bearer (FCM) googleapis.com path variants accepted
supabase apikey / Bearer (anon vs service_role) PostgREST filters; RLS not emulated
asana fallback Bearer me keyword resolution

Test plan

  • Docs render correctly on GitHub
  • Example commands/ports match the CLI behavior

Summary by cubic

Adds documentation for the Asana emulator and per‑service SKILL guides to simplify local testing and CI. Also fixes ESLint formatting in the new docs.

  • New Features

    • packages/asana/README.md: explains bearer‑token auth, request/response envelopes, endpoint coverage, pagination, seed config, and programmatic usage with asanaPlugin.
    • skills/*/SKILL.md: Start/Auth/Flow/Seed guides with example commands for asana, kakao, naver, tosspayments, firebase, and supabase.
  • Bug Fixes

    • Fixed ESLint formatting: no-multi-spaces in skills/asana/SKILL.md and packages/asana/README.md, and YAML spacing in skills/supabase/SKILL.md.

Written for commit 0ffba9b. Summary will update on new commits.

Summary by CodeRabbit

Documentation

  • Added/expanded end-user guides for local API emulators, including Asana, Firebase, Kakao, Naver, Supabase, and Toss Payments.
  • Each guide documents how to start and configure the emulator, the supported request/response conventions and authentication expectations, key example request flows, pagination behavior where applicable, and how to seed emulator data for repeatable testing.

- packages/asana: add README covering auth, endpoints, seed config, and
  programmatic use
- skills: add SKILL.md for asana, kakao, naver, tosspayments, firebase, and
  supabase, mirroring the existing linear skill
@coderabbitai

coderabbitai Bot commented Jun 19, 2026

Copy link
Copy Markdown

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: dcd00b0b-1fda-4cd4-b435-a6c2a62da805

📥 Commits

Reviewing files that changed from the base of the PR and between c78d3ce and 0ffba9b.

📒 Files selected for processing (3)
  • packages/asana/README.md
  • skills/asana/SKILL.md
  • skills/supabase/SKILL.md
✅ Files skipped from review due to trivial changes (1)
  • packages/asana/README.md

📝 Walkthrough

Walkthrough

Adds documentation for six API emulators: Asana (both a package README and a skill doc), Firebase, Kakao, Naver, Supabase, and Toss Payments. Each document covers startup commands, port behavior, auth conventions, example curl flows, and emulate.config.yaml seed configuration schemas.

Changes

Emulator documentation

Layer / File(s) Summary
Asana emulator docs
packages/asana/README.md, skills/asana/SKILL.md
Adds the @pleaseai/emulate-asana package README (install, programmatic middleware/plugin wiring, TypeScript store inspection, endpoint table, seed config) and a matching skill doc (startup, auth, request/response conventions, curl examples, seed config).
Firebase, Kakao, Naver, Supabase, and Toss Payments skill docs
skills/firebase/SKILL.md, skills/kakao/SKILL.md, skills/naver/SKILL.md, skills/supabase/SKILL.md, skills/tosspayments/SKILL.md
Adds five SKILL.md files, each documenting emulator capabilities, startup/port-slot behavior, auth requirements (bearer token, Basic auth, API key query param), end-to-end curl usage flows, and emulate.config.yaml seed configuration schemas.

Estimated code review effort

🎯 1 (Trivial) | ⏱️ ~5 minutes

Poem

🐇 Hop, hop, the docs arrive!
Six emulators, all alive,
With curl examples, seeds, and ports,
Auth conventions of all sorts.
No more guessing how they run —
The rabbit wrote it, and we're done! ✨

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title 'docs: add asana README and per-service emulator skills' accurately describes the main change—adding documentation for Asana emulator and skill files for multiple services.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch amondnet/docs

Comment @coderabbitai help to get the list of available commands and usage tips.

@codacy-production

codacy-production Bot commented Jun 19, 2026

Copy link
Copy Markdown

Up to standards ✅

🟢 Issues 0 issues

Results:
0 new issues

View in Codacy

NEW Get contextual insights on your PRs based on Codacy's metrics, along with PR and Jira context, without leaving GitHub. Enable AI reviewer
TIP This summary will be updated as you push new changes.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@skills/asana/SKILL.md`:
- Line 54: The line containing `login: dev@example.com` has multiple spaces
before the comment marker, which violates the ESLint no-multi-spaces rule.
Replace the multiple spaces between `dev@example.com` and the `#` character with
a single space to comply with the style formatting rule.

In `@skills/supabase/SKILL.md`:
- Around line 104-105: The YAML flow mappings on the lines containing the task
entries (the lines with `{ id: 1, title: 장보기, completed: false }` and `{ id: 2,
title: 청소하기, completed: true }`) have improper spacing that violates the
yaml/flow-mapping-curly-spacing rule. Remove the space immediately after the
opening curly brace and the space immediately before the closing curly brace in
both flow mapping objects to conform to the YAML linting standards.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: bf0f77a9-cbb0-4d38-b084-d6c69831db16

📥 Commits

Reviewing files that changed from the base of the PR and between 102f65d and c78d3ce.

📒 Files selected for processing (7)
  • packages/asana/README.md
  • skills/asana/SKILL.md
  • skills/firebase/SKILL.md
  • skills/kakao/SKILL.md
  • skills/naver/SKILL.md
  • skills/supabase/SKILL.md
  • skills/tosspayments/SKILL.md

Comment thread skills/asana/SKILL.md Outdated
Comment thread skills/supabase/SKILL.md Outdated

@cubic-dev-ai cubic-dev-ai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

No issues found across 7 files

Architecture diagram
sequenceDiagram
    participant Dev as Developer
    participant CLI as Emulate CLI
    participant Cfg as emulates.config.yaml
    participant Core as @emulators/core
    participant Store as In-Memory Store
    participant Webhook as Webhook Dispatcher
    participant Plugin as Service Plugin (asana)
    participant Auth as Auth Middleware
    participant API as Emulated Routes
    participant Client as curl / SDK

    Note over Dev,Client: NEW: Documentation describes this runtime flow

    Dev->>CLI: bun packages/emulate/dist/index.js --service asana
    CLI->>Cfg: Read config file
    Cfg-->>CLI: YAML (seeds, tokens, service config)
    CLI->>Core: Initialize with config
    Core->>Store: Create in-memory store
    Core->>Webhook: Create webhook dispatcher
    Core->>Plugin: Register service plugin
    Plugin->>Core: Register routes (users, tasks, ...)
    Plugin->>Plugin: Seed default workspace / users
    Plugin->>Store: Insert seed data (workspaces, users...)
    Core->>Auth: Register auth middleware (bearer-token)

    Note over Client,API: External Request Flow

    Client->>API: GET /api/1.0/users/me (Authorization: Bearer test-token)
    API->>Auth: Validate token
    alt Token mapped to specific user
        Auth->>Store: Lookup token in tokenMap
        Store-->>Auth: User gid or email
    else Token unknown
        Auth->>Auth: Default to first seeded user (me keyword support)
    end
    Auth-->>API: Authenticated context (user gid)

    API->>Store: Query user by gid (or "me")
    Store-->>API: User object
    API-->>Client: {"data":{...}} (Asana envelope)

    Note over API,Client: List with pagination

    Client->>API: GET /api/1.0/tasks?limit=50&offset=abc
    API->>API: Apply limit and offset
    API->>Store: Query tasks with pagination
    Store-->>API: Task slice + next_page metadata
    API-->>Client: {"data":[...], "next_page":{...}}

    Note over API,Webhook: Write operations trigger webhooks

    Client->>API: POST /tasks (create task)
    API->>API: Validate input, resolve references
    API->>Store: Insert new task
    API->>Webhook: Dispatch PAYMENT_STATUS_CHANGED (for tosspayments) or similar
    Webhook-->>API: (async)
    API-->>Client: {"data":{...}, "gid": ...}

    Note over Dev,CLI: Seed config loading (documented in SKILL.md)

    Dev->>Cfg: Edit asana: section with workspaces/users/teams...
    dev->>CLI: (re)start with same config
    CLI->>Core: Pass seed config to plugin
    Plugin->>Plugin: Resolve cross-references by name
    Plugin->>Store: Insert pre-seeded entities
Loading

Re-trigger cubic

@amondnet amondnet self-assigned this Jun 19, 2026
Fix ESLint formatting flagged by CodeRabbit on PR #14:
- style/no-multi-spaces in asana SKILL.md and README.md
- yaml/flow-mapping-curly-spacing in supabase SKILL.md
@sonarqubecloud

Copy link
Copy Markdown

@amondnet amondnet merged commit a5adeba into main Jun 19, 2026
8 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant