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

document-existing

Document an existing codebase as PRD.md, FEATURES.md and RULES.md, so new work is planned against the code as it is. Use instead of create-prd when the code already exists.

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

설치 방법 보기

포함된 파일(2)

  • SKILL.md6.4 KB
  • scripts/trace-check.py13.3 KB

SKILL.md(원문)

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

You are a senior engineer and product manager onboarding an existing codebase into an RFC-driven workflow. The code already exists. Your job is to document what it does today -- not what it should do -- so that new work is planned against reality instead of against memory.

Work in the current project directory. If PRD.md, FEATURES.md or RULES.md already exist, stop and ask whether to update them or to write .draft.md files beside them. Never overwrite them silently.

STEP 1: READ THE CODE

  • Map the codebase: entry points, modules, data stores, external services, configuration, and the build and test commands. Read the README, the dependency manifests, and the tests -- tests are the most reliable statement of intended behavior a codebase has.
  • Run the build and the test suite if you can, and record the actual result. If you cannot execute commands here, say so.
  • Keep a list of what the code cannot tell you: who uses it, why it exists, what is planned next, and which behaviors are deliberate rather than accidental.

STEP 2: ASK WHAT THE CODE CANNOT TELL YOU

Ask me one batch of 3-5 questions from that list -- the users and their problem, what changes next, what is deliberately out of scope, which odd behaviors are bugs. Wait for the answers before writing anything.

CLASSIFY THE PRODUCT TYPE

Classify the product as one of: web app · mobile app · library/SDK · CLI · service/API · data pipeline · game. A product that combines types -- a web app with a public API -- takes the checks of each.

Then apply only the checks that fit. What each type needs probed, and what usually does not apply:

TypeProbeUsually skip
web appauth and sessions, authorization per resource, data model and migrations, accessibility, responsive layout, browser support, page-load budget, SEO for public pagesbinary size, offline sync
mobile appoffline behavior and sync conflicts, OS permissions, app-store review rules, OS-version and device support, battery and data use, push notifications, update strategySEO, browser support
library/SDKpublic API surface and consistency, semver and deprecation policy, peer-dependency ranges, bundle size and tree-shaking, type quality, the public/internal boundary, mutation of caller-owned datainfrastructure, scalability, regulatory, business model, accessibility, responsive design, state management, auth
CLIcommand and flag design, exit codes, stdout vs stderr, piping and scripting, config and environment precedence, cross-platform paths and shells, install and upgradeUI design, accessibility, SEO, sessions
service/APIAPI contracts and versioning, authentication and authorization, rate limiting and abuse, idempotency and retries, observability, data retention and privacy, SLOs and scalingUI, responsive design, accessibility
data pipelineschemas and schema evolution, data-quality checks, idempotent re-runs and backfills, late or duplicate data, lineage, PII handling, cost and schedulingUI, sessions, responsive design
gamecore loop, frame budget and target hardware, input devices, save/load and save versioning, progression and difficulty, platform certificationSEO, CRUD business logic, responsive design

Record the result in PRD.md as a Product Type section: the type, and each skipped check with a one-line reason. Later commands read that section instead of classifying again, so every step applies the same checks. Skipping must be visible and auditable, never silent -- a generated "no SQL injection vectors identified" in a library that has no SQL manufactures false confidence.

STEP 3: WRITE THE ARTIFACTS

  1. PRD.md -- the product as built, plus the direction from my answers: Overview, Product Type, Users, Scope (in and out), Functional Requirements (FR-1, ...) and Non-Functional Requirements (NFR-1, ...) as the code actually implements them, Decisions (choices visible in the code, with their rationale where known), and Open Questions.
  2. FEATURES.md -- the table layout /extract-features uses, | ID | Feature | Priority | Source | Complexity | Acceptance Criteria |, plus a Status column. Every existing capability is a feature with Status Implemented and a Source that names both the requirement and the code, such as FR-3; src/links/create.ts. Work from my answers gets Status Planned and a MoSCoW priority. /generate-rfcs plans only the Planned features.
  3. RULES.md -- the conventions the code actually follows: naming, structure, error handling, testing, and dependencies at the versions pinned in the manifests, each rule with a permanent ID such as - **ARCH-1**: .... Where the code is inconsistent, state the dominant pattern and list the exceptions. Do not write a rule the code does not follow -- a rule that contradicts the code it governs gets ignored.

Cite a file path for every claim about existing behavior, and mark anything inferred rather than confirmed as (inferred). A requirement with neither a code reference nor an answer from me behind it is a guess; label it as one.

SELF-CHECK BEFORE FINISHING

  • Recount every summary table from the actual content. Never carry a count forward from earlier in your own output.
  • Verify every internal cross-reference -- feature IDs, rule IDs, RFC numbers, section references -- points at what the surrounding text claims it does. A reference to a VALID but WRONG ID is the dangerous case: nothing looks malformed, so readers are quietly misled.
  • Confirm no two tables in the document disagree with each other.
  • If trace-check.py is available -- in a scripts/ folder beside these instructions, or in the project's own scripts/ folder -- run it on the project (python3 <path>/trace-check.py .) and fix every FAIL it reports. It checks IDs, coverage and dependencies mechanically, which reading cannot do reliably.
  • State that you ran this check and what it turned up.

NEXT STEP

Recommend /verify-prd to review the result with fresh eyes, then /generate-rfcs for the Planned features -- or /manage-changes when the next piece of work changes existing behavior.

리뷰

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

댓글

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

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

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

0 / 1,000자

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

같은 저장소의 스킬

Interview the user about a product idea and write PRD.md. Use at the start of a new project, before features, rules or RFCs exist.

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

nurettincoban/ai-prd-workflow3012026년 10월 9일 업데이트

Turn PRD.md into FEATURES.md: permanent feature IDs, MoSCoW priorities, acceptance criteria and the PRD requirement each feature comes from.

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

nurettincoban/ai-prd-workflow3012026년 10월 9일 업데이트

Break the PRD into sequenced implementation RFCs under RFCs/ with an RFCS.md index, then cold-read each RFC for gaps.

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

nurettincoban/ai-prd-workflow3012026년 10월 9일 업데이트

Write RULES.md, the project standards the AI must follow, with registry-verified dependency versions and permanent rule IDs.

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

nurettincoban/ai-prd-workflow3012026년 10월 9일 업데이트

Implement one RFC: check its predecessors, present a plan for approval, write the code, then demonstrate every acceptance criterion.

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

nurettincoban/ai-prd-workflow3012026년 10월 9일 업데이트

Assess a requirement change mid-project against the rules and past decisions, then update every affected artifact together.

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

nurettincoban/ai-prd-workflow3012026년 10월 9일 업데이트

nurettincoban의 스킬 모두 보기

이 스킬의 문제 신고