Pod

Yes, this is on purpose. Pod is built for agents, so the default page is plain HTML.
Human? View the normal website.
Agent? You probably prefer /mcp/canicode/issues.md or /mcp/canicode/issues.json, or Pod over MCP.

Reported issues for canicode

Pod holds 21 of 47 problems reported by people outside the maintainer team. Issues filed by the project's own owners, members and collaborators are excluded entirely — a maintainer's release checklist is not a warning to a prospective user.

Back to canicode.

Most discussed

test: 통합 테스트 및 누락된 테스트 추가

문제

현재 모든 테스트가 유닛 테스트이며, 다음 영역에 테스트가 없습니다:

1. 통합 테스트 부재

2. 플러그인 코드 무테스트

3. 웹앱 비즈니스 로직 무테스트

4. HTML 리포트 스냅샷 테스트 없음

제안

Phase 1: 통합 테스트

// cli.integratio

[Read the thread](https://github.com/let-sunny/canicode/issues/50) · 2026-03-25 · closed · 5 comments

### feat: Figma MCP 에이전트 연동 — 디자인 리뷰 자동화

## 배경

Figma MCP가 에이전트 기반 디자인 읽기/쓰기를 지원:
- `use_figma`: Plugin API JavaScript 실행으로 디자인 직접 create/edit/delete (2026-03-24 런칭)
- `generate_figma_design`: 웹 UI 캡처 → flat Figma 레이어 변환
- `get_design_context` + `get_metadata`: 디자인 구조/스타일 읽기

이 파이프라인에 canicode를 끼워넣으면 **코드리뷰처럼 디자인 리뷰를 자동화**할 수 있음.

## 유스케이스 3가지

### 1. 바이브코딩 시 디자인 품질 게이트
에이전트가 Figma MCP로 디자인을 수정할 때, 수정 전후로 canicode를 자동 실행하여 품질 저하 방지.

에이전트가 Figma 디자인 수정 (use_figma) ↓ canicode analyze (자동 실행) ↓ 점수 하락 시 → 에이전트에게 "이 수정으로 Struct

Read the thread · 2026-03-26 · closed · 4 comments

User-flow test: claude plugin add canicode registers skills + MCP server (C)

Why

#489 Phase 1 (#493) shipped `.claude-plugin/plugin.json` declaring three skill roots and the `canicode-mcp` MCP server. Published as part of v0.11.4 on npm. The hypothesis: a fresh Claude Code user can run one command (`claude plugin add canicode`) and have the three skills + MCP server registered — no `canicode init`, no manual MCP add, no copying files.

This issue is the user-flow test for that hypothesis. We hand the test plan below to **a fresh agent that knows nothing a

Read the thread · 2026-04-25 · closed · 3 comments

chore: 캘리브레이션 파이프라인 고도화

배경

6개 픽스처 전체 캘리브레이션을 돌린 결과, 파이프라인 자체는 설계 의도대로 작동하지만 효율성과 수렴성에 개선이 필요한 3가지 문제가 발견됨.

캘리브레이션 결과 요약

Fixture Grade Similarity Proposals Applied Rejected
figma-ui3-kit B (75%) 81% 2 0 2
material3-kit-1 B (79%) 93% 5 0 5
material3-kit-2 B (77%) 97% 8 3 5
simple-ds-card-grid C+ (71%) 95% 9 1 7
simple-ds-page-sections B+ (80%) 98% 9 2 7
simple-ds

Read the thread · 2026-03-24 · closed · 3 comments

[UX] Onboarding & tooling friction tracker (1st pass)

[UX] Onboarding & tooling friction tracker (1st pass)

Labels: enhancement (consider documentation for doc-only items)

Summary: Meta-issue tracking first-pass UX pain points around canicode init, Claude vs Cursor paths, MCP file locations, Figma reload, agent limits,

Read the thread · 2026-04-22 · closed · 2 comments

MCP get_metadata no longer expands instance internals — design-tree quality degraded

Problem

Figma MCP get_metadata no longer returns the internal structure of instance nodes. Instead of expanding the full subtree, it returns self-closing tags:

<!-- Expected (previously) -->
<instance id="562:10932" name="Header" x="0" y="0" width="375" height="84">
  <frame id="..." name="Block" ...>
    <frame id="..." name="Figma" ...>
      <vector id="..." name="Icon" ... />
    </frame>
  </frame>
  ...
</instance>

<!-- Actual (now) -->
<instance id="562:10932" name="Heade

[Read the thread](https://github.com/let-sunny/canicode/issues/120) · 2026-03-27 · closed · 2 comments

### feat: failedRules를 Sentry/PostHog에 전송

## 문제

#49에서 `AnalysisResult.failedRules`로 룰 실행 실패를 수집하게 되었지만, 이 데이터가 Sentry/PostHog으로 전송되지 않습니다. 프로덕션에서 어떤 룰이 얼마나 자주 실패하는지 추적할 수 없습니다.

## 설계 방향

**룰 엔진은 건드리지 않는다.** `rule-engine.ts`는 순수 분석 엔진으로 유지하고, 모니터링 의존성은 소비자 레이어(CLI, MCP)에만 둡니다.

`failedRules` 데이터가 이미 `AnalysisResult`에 반환되므로, 소비자가 후처리하면 됩니다:

```typescript
// cli/index.ts 또는 mcp/server.ts — 이미 monitoring import 있는 곳
const result = engine.analyze(file);

for (const f of result.failedRules) {
  captureError(new Error(f.error), { ruleId: f.

[Read the thread](https://github.com/let-sunny/canicode/issues/65) · 2026-03-25 · closed · 2 comments

### verify: end-to-end live run of canicode-roundtrip Code Connect close-out (#509 promotion gate)

Phase 1 ([#509](https://github.com/let-sunny/canicode/issues/509)) Workflow 1 promotion gate. The four sub-tasks are shipped but `docs/WORKFLOWS.md` Workflow 1 stays at 🚧 until a human runs the full Code Connect close-out flow on a real Figma file with a real Code Connect setup, and the observed behavior matches what the SKILL.md + docs claim.

## Setup the validator needs

- A **fresh empty directory** outside the canicode repo (so `.claude/skills/` is a clean install).
- A **Figma URL** pointi

[Read the thread](https://github.com/let-sunny/canicode/issues/525) · 2026-04-27 · closed · 1 comment

## Most recent

### Step 7d: send_code_connect_mappings errors as duplicate after add_code_connect_map already publishes

## Observed

During #527 Section A Pass B mapping registration (2026-04-28), the agent reported:

> Mapping confirmed live: 3384:3 → src/Button.tsx. The send_code_connect_mappings error was a no-op duplicate (the add_* call already persisted it).

So the contract is:
- \`add_code_connect_map\` already publishes the mapping (server-side persistence happens at this call).
- \`send_code_connect_mappings\` then errors because the mapping is already there.

Result is correct (\`Code Connect: ✅ mapped

[Read the thread](https://github.com/let-sunny/canicode/issues/534) · 2026-04-27 · closed · 0 comments

### doctor: pre-flight check for Figma component publish status before Step 7 mapping attempt

## Observed friction

During #527 Section A Pass B live verification (2026-04-28), Step 7 attempted \`add_code_connect_map\` + \`send_code_connect_mappings\` on a COMPONENT node and got \`Code Connect: ❌ failed — Published component not found. Please make sure component/component set is published before mapping.\`

The wrap-up's friendly remediation hint (\"publish the Figma library, then re-invoke\") is good, but **the user only learns about the prereq after a failed API attempt**. They have al

[Read the thread](https://github.com/let-sunny/canicode/issues/532) · 2026-04-27 · closed · 0 comments

### feat(rules): unmapped-component analyze rule (#509 sub-task 3)

Phase 1 (#509) sub-task 3 — add an analyze rule that flags Figma main components without a Code Connect mapping, so users notice unmapped components during normal `canicode analyze` runs and can fix them via `/canicode-roundtrip` (which now closes with mapping registration, #515 / #516).

## Why now (no base-rate gating)

Originally this was deferred behind a base-rate measurement ("how often does this fire on real designs?"). Decision: ship it without that gate. The closing-step roundtrip (#515

[Read the thread](https://github.com/let-sunny/canicode/issues/520) · 2026-04-27 · closed · 0 comments

### feat(skill): canicode-componentize — guide Claude through Figma Code Connect MCP tools (#509 sub-task 2)

Phase 1 (#509) sub-task 2 — the actual user-facing flow for **single component → Code Connect mapping**.

## Why this is a skill-only sub-task

The Figma MCP tools (`get_code_connect_suggestions`, `add_code_connect_map`, `send_code_connect_mappings`, `get_code_connect_map`) are called by the host (Claude Code) directly — canicode is not a Figma MCP client. The mapping registration + code-side wiring is owned by Figma's Code Connect tool itself. canicode's job here is **only to author the SKILL.m

[Read the thread](https://github.com/let-sunny/canicode/issues/514) · 2026-04-27 · closed · 1 comment

### feat(doctor): canicode doctor — Code Connect prerequisite check (#509 sub-task 1)

Phase 1 (#509) sub-task 1 — the prerequisite check that gates every other Code Connect step.

## Why this is sub-task 1

Code Connect requires the user's code repo to have `@figma/code-connect` installed and `figma.config.json` configured. Without these, every other Phase 1 step (MCP wrapper, invoke surface, match-confirmation UX) silently dead-ends with a confusing error from the Figma MCP tools. Surfacing the missing prerequisites with clear remediation is the cheapest, highest-leverage first 

[Read the thread](https://github.com/let-sunny/canicode/issues/512) · 2026-04-27 · closed · 0 comments

### feat(componentization): Phase 1 — single component → Code Connect mapping (Workflow 1 epic)

## Roadmap context

This is **Phase 1** of the canicode bootstrap roadmap (see `docs/WORKFLOWS.md`):

| Phase | Workflow | Status | Tracking |
|---|---|---|---|
| 1 | Component-to-code mapping | 🚧 Partial — this issue | **(this epic)** |
| 2 | Screen-to-code handoff | ✅ Largely shipped | (separate epic) |
| 3 | Bootstrap a design system from screens | 🗺️ Planned | #508 |

## User scenario

A designer/developer runs `canicode-roundtrip` on a Figma component → answers gotchas → annotations are wri

[Read the thread](https://github.com/let-sunny/canicode/issues/509) · 2026-04-27 · closed · 1 comment

### docs: "Other agents" install guide for non-Claude/Cursor hosts (manual skill copy)

## Why

Post-#496/#500 decision (see memory `project_init_vs_plugin.md`): canicode is **Claude-first**, no plugin/host abstractions. But we still ship 3 AgentSkills-compatible skills via npm — non-Claude users *can* use them by copying SKILL.md files into their host's scan path. We just need to document it instead of building flags for it.

## Scope

Add a short section to `docs/CUSTOMIZATION.md` (and a one-line README pointer) titled something like **"Other agents (manual install)"** covering:

[Read the thread](https://github.com/let-sunny/canicode/issues/501) · 2026-04-25 · closed · 0 comments

### Distribute canicode as a multi-host plugin (Claude Code bundle) instead of per-host `init` flags

> **Scope for `/develop` run (Phase 1 only — added 2026-04-25):**
> Land Phase 1 in this PR only: (1) `.claude-plugin/plugin.json` at repo root with id/version, three skill roots (`./skills/canicode`, `./skills/canicode-gotchas`, `./skills/canicode-roundtrip`), and `canicode-mcp` MCP server, plus (2) `.claude-plugin/` added to `package.json#files`. **Do NOT touch** SKILL.md frontmatter, README.md, or `docs/CUSTOMIZATION.md` — those overlap with the parallel #490 run. **Defer** Phase 2 (Cursor ma

[Read the thread](https://github.com/let-sunny/canicode/issues/489) · 2026-04-24 · closed · 1 comment

### feat: make codegen-ready grade threshold user-configurable

## Problem

The threshold that decides whether a design is "ready for code generation" — surfaced as \`isReadyForCodeGen\` in the gotcha-survey output — is **hardcoded** in \`src/core/engine/scoring.ts:153-155\`:

\`\`\`ts
export function isReadyForCodeGen(grade: Grade): boolean {
  return grade === "S" || grade === "A+" || grade === "A";
}
\`\`\`

So any design at A (≥85%) or above auto-passes the gotcha survey ("you can generate code, no questions needed"). Users cannot tighten or relax this c

[Read the thread](https://github.com/let-sunny/canicode/issues/480) · 2026-04-24 · closed · 1 comment

### docs: agent mistakes /canicode-roundtrip for an MCP tool during onboarding

## Problem

When a user asks an AI agent (Claude Code / Cursor) to "run canicode-roundtrip", the agent inspects the MCP tool list, doesn't find a `canicode-roundtrip` tool there (only `analyze`, `gotcha-survey`, `visual-compare`, `list-rules`, `docs`, `version`), and concludes the user must register it as an MCP tool — when in fact it's a **Skill** (slash command).

## Reproduction (from real session, 2026-04-24)

User: "라운드트립 돌려줘" (run the roundtrip)
Agent:
> 사용 가능한 툴 ✅ analyze, gotcha-survey, 

[Read the thread](https://github.com/let-sunny/canicode/issues/477) · 2026-04-24 · closed · 0 comments

### fix: server.json metadata stale (39 rules / v0.5.2)

## Problem

`server.json` (MCP registry manifest) has stale metadata. When an AI agent reads it during onboarding/roundtrip, it surfaces wrong info to the user.

Yesterday a user ran the roundtrip and the agent reported "39 rules" — actual rule count is **16**.

## Stale fields

- `server.json:4` — `"description": "...39 rules..."` → actual: 16 rules across 6 categories (see README.md:33)
- `server.json:9` — `"version": "0.5.2"` → current: 0.11.2 (package.json)
- `server.json:14` — package `"ver

[Read the thread](https://github.com/let-sunny/canicode/issues/476) · 2026-04-24 · closed · 0 comments

### docs: Cursor MCP + roundtrip debugging (CUSTOMIZATION + canicode-roundtrip Step 0)

## Background

Users and agents often report “MCP / roundtrip doesn’t work” without a clear channel (canicode vs Figma), host state (settings, reload), or Step 4 delivery (helpers prepend, payload limits). `docs/CUSTOMIZATION.md` already documents **where** to put `.cursor/mcp.json` and a short checklist; the **roundtrip** skill Step 0 covers **pre-flight** for `use_figma` but not a **structured debug** path when something still fails.

## What to add (not duplicate)

### A) `docs/CUSTOMIZATION.

[Read the thread](https://github.com/let-sunny/canicode/issues/464) · 2026-04-22 · closed · 1 comment

### investigate: Figma MCP tool identifier may have project prefix in Cursor

## Observation
Cursor session noted: the actual Figma MCP identifier inside Cursor may not literally be \`figma\` — it can carry a project prefix. Our skill prose references \`use_figma\` / 'figma' by assumption, which can cause 'connected but skill can't find it' failures.

## Ask
- Repro in Cursor: after \`init --cursor-skills\`, check the effective MCP identifier Cursor surfaces
- If prefix is applied, update SKILL.md references to use a variable or documented resolution rule, OR document the

[Read the thread](https://github.com/let-sunny/canicode/issues/437) · 2026-04-21 · closed · 0 comments

The remaining reports are on [the project's issue tracker](https://github.com/let-sunny/canicode/issues).