coding skill
✓ 인증됨고품질 소프트웨어 변경을 보장하기 위해 코드 탐색, 계획, 원자적 구현 및 검증을 위한 언어 중립적 프레임워크를 제공합니다.
- GitHub 스타
- 23
- 파일
- 6
- 마지막 커밋
- 2026년 11월 11일
- 라이선스
- MIT
- 허용된 도구
- —
coding skill은 무엇을 하나요?
coding은(는) agent skill입니다. 고품질 소프트웨어 변경을 보장하기 위해 코드 탐색, 계획, 원자적 구현 및 검증을 위한 언어 중립적 프레임워크를 제공합니다.
skill의 SKILL.md에서 생성된 요약입니다.
coding skill 정보
소프트웨어 엔지니어링을 위한 구조화된 방법론이 필요한 개발자는 이 SKILL을 사용하여 코드 변경의 전체 라이프사이클을 관리할 수 있습니다. 이 SKILL은 에이전트가 탐색, 계획, 구현 및 검증을 수행할 수 있도록 안내하는 언어 중립적 프레임워크를 제공합니다. 단순히 구문 작성으로 바로 넘어가는 대신, 이 SKILL은 수정이 이루어지기 전에 의존성을 매핑하고, 계약을 확인하며, 영향을 평가하는 엄격한 탐색 프로토콜을 강제합니다.
에이전트에게 코드베이스 작성, 디버깅, 리팩터링 또는 읽기 작업이 할당되면, 언어별 도구를 사용하기 전에 이 SKILL을 먼저 로드해야 합니다. 엄격한 분해 규칙과 크기 체크포인트를 준가하여 매우 조직적이고 원자적인 커밋을 생성합니다. 워크플로우는 재사용 사다리(reuse ladder)를 통해 단순성을 강조하며, 새로운 코드보다 삭제 및 기존 유틸리티 사용을 우선시합니다. 또한 가정 중단(assumption interrupt)을 강제함으로써, 실제 소스 정의를 읽는 대신 메모리에 의존하여 발생하는 버그를 방지하고 모든 변경 사항이 검증된 근거를 바탕으로 이루어지도록 보장합니다.
agent가 수행할 수 있는 작업
- 1복잡한 리팩터링 작업 분해대규모 아키텍처 변경을 트리 구조를 유지하는 일련의 작고 단일 목적을 가진 커밋으로 분해합니다.
- 2탐색 중 API 계약 확인시그니처를 추측하는 대신 실제 소스를 읽음으로써 제안된 변경 사항이 기존 인터페이스를 준수하는지 확인합니다.
- 3풀 리퀘스트의 범위 확장 방지diff에 추가된 모든 코드 라인이 원래 사용자의 요청을 직접적으로 해결하는지 확인합니다.
- 4코드베이스 복잡도 최소화새로운 기능을 구현할 때 기존 코드를 삭제하거나 기존 라이브러리 함수를 사용하여 구현할 수 있는지 평가합니다.
skill의 SKILL.md를 기반으로 작성되었습니다. 모든 사용 사례는 해당 문서의 인용구와 대조 확인되었습니다.
coding skill 설치 방법
각 명령은 skill 폴더를 클라이언트의 skills 디렉터리에 복사합니다. 클라이언트를 재시작하거나 새 세션을 시작하여 로드하세요.플러그인에 coding skill 설치
/plugin marketplace add xobotyi/cc-foundry /plugin install the-coder@foundry
Claude Code에 coding skill 설치
~/.claude/skills/coding/SKILL.md
$ npx degit xobotyi/cc-foundry/plugins/the-coder/skills/coding ~/.claude/skills/codingClaude Code (project)에 coding skill 설치
.claude/skills/coding/SKILL.md
$ npx degit xobotyi/cc-foundry/plugins/the-coder/skills/coding .claude/skills/codingCodex에 coding skill 설치
~/.agents/skills/coding/SKILL.md
$ npx degit xobotyi/cc-foundry/plugins/the-coder/skills/coding ~/.agents/skills/codingGemini CLI에 coding skill 설치
~/.gemini/skills/coding/SKILL.md
$ npx degit xobotyi/cc-foundry/plugins/the-coder/skills/coding ~/.gemini/skills/codingClaude.ai에 coding skill 설치
npx degit xobotyi/cc-foundry/plugins/the-coder/skills/coding coding && zip -r coding.zip coding # claude.ai → Customize → Skills → + → Create skill → Upload a skill → coding.zip
자동 검사
2026년 11월 14일에 실행됨전체 보고서 →자동 검사를 통과했습니다. 보안 감사는 아닙니다. 에이전트가 실행하기 전에 스크립트를 읽어 보세요. 검사 방식 · 점수를 높이기 위해 수정할 항목
- 소스 저장소 연결 및 접근 가능xobotyi/cc-foundry/plugins/the-coder/skills/coding is public and reachablegithub.com/xobotyi/cc-foundry/tree/HEAD/plugins/the-coder/sk ↗통과
- 오픈 소스 라이선스 (OSI)MITspdx.org/licenses/MIT.html ↗통과
- 최근 1년 내 커밋 또는 릴리스Last commit 2026-11-11github.com/xobotyi/cc-foundry/commits ↗통과
- 스크립트에 다운로드 후 실행이나 자격 증명 탈취가 없음No scripts in the skill folder통과
- SKILL.md에 숨겨진 지침 없음No override phrases, safeguard switches, credential requests or hidden charactersgithub.com/xobotyi/cc-foundry/blob/HEAD/plugins/the-coder/sk ↗통과
- 사전 허용 도구가 제한됨No pre-approved tools; the agent asks before using onegithub.com/xobotyi/cc-foundry/blob/HEAD/plugins/the-coder/sk ↗통과
- SKILL.md가 Agent Skills 형식을 따름the description does not say when to use the skillgithub.com/xobotyi/cc-foundry/blob/HEAD/plugins/the-coder/sk ↗결함 발견
SKILL.md
GitHub에서 보기Coding
Discover before assuming. Verify before shipping.
Less code, less execution. Of two correct changes, take the one that leaves less code, runs less, and allocates less; a deletion beats an addition. Count concepts a reader holds, never characters. Never add code to run less: a cache, a pool, or a memo waits for a measurement.
Core Loop
Discover → Plan → Implement → Verify
The threshold: if you can describe the diff in one sentence, skip planning. Otherwise, plan first.
The Assumption Interrupt
- Using a method, type, or interface without having read its definition
- Recalling an API from memory instead of reading current source
- Planning changes to code you haven't read in this session
- Assuming a method signature, type structure, or interface shape
When you catch one, read the source before continuing.
Discovery Protocol
Read the Scars
Intent leaves no trace in code, but change does. Each shape below is a question, never a conclusion — the provenance rule binds here, so nothing read off code shape is a fact until a witness outside the code confirms it.
- An exported symbol nobody calls — possibly a fossil of whatever replaced it. Look for the successor.
- Armor bolted on — a guard, a retry, a sanitizing pass, a defensive copy around code that would not obviously need one. Something may have failed here.
- A hack where a clean path exists — serializing an object to text and parsing it back where a copy would do. Ask what blocked the clean path.
- Redundant repairs — two layers fixing the same thing. One of them may be dead.
Chase each with git history, the tracker, or the person who owns the code. A confirmed answer narrows what your change must not break; an unconfirmed one stays a question and constrains nothing.
Planning Discipline
-
Success criteria — restate the task as something you can check. "Add validation" becomes "invalid inputs have tests, and those tests pass." "Fix the bug" becomes "a test reproduces it, and that test passes." A criterion you cannot run is not a criterion, and it is what forces you back to the user mid-task.
-
Scope — what files change, what stays untouched. Bound it explicitly. Don't "helpfully improve" adjacent code.
-
Decomposition — before writing any code, write the ordered list of changes you will make, one commit each. This is where the work gets split. Splitting at commit time means untangling a diff that was never built to come apart, and that rarely succeeds — the pieces are already interleaved across the same files and lines.
Name each entry by its kind of work, because a change carries only one kind: refactor, new code, integration, fix, formatting, docs. Two sources feed the list:
- The task statement, before you read any code. "Implement and integrate X" is already two entries: the new code standalone, then the wiring that puts it to use.
- Discovery, once you have read the code. If the existing code needs a refactor to make room, that refactor is entry one, committed on its own, before any new code exists.
A dummy layer that integrates end to end and does nothing is usually entry one or two; after it, one capability at a time in dependency order — storage standalone and verified, then the handler that calls it, then the surface above.
Then work the list one entry at a time. Never write code for the next entry until the current one is committed. That rule is what makes the plan binding — without it the list is a note you abandon at the first opportunity.
-
Risks — what could break. If modifying shared code, trace all callers first.
Implementation Discipline
One Change at a Time
An uncommitted working tree is the unit nobody can review and nobody can bisect. Commit at each verified step during the work, not once at the end. A large change is not one hard review — it is a review nobody does, and the defect that survives it costs more than the whole change saved.
Atomic is a code boundary, not a task boundary. An atomic change is the smallest change that leaves the tree working: it builds, its tests pass, nothing is half-wired. It is not the smallest change that satisfies the request. One task is normally many atomic changes.
The second test catches what the first cannot see. A refactor and the feature it enables build and pass together, so deliverability alone keeps them in one diff — and the reviewer then separates "what moved" from "what is new" by hand, which is the review that silently does not happen. At equal correctness, take the finer split.
Both tests belong to planning. They decide the change list before code exists; here they only confirm the list held. Applying them for the first time to a finished diff is already the failure. If it happens, say so, salvage what separates cleanly, and start the next task from a change list.
Three things trigger a commit. Any one is enough, and they are not a sequence — most commits fire on the first.
Four rules qualify all three:
The git-commit plugin's commit skill carries the pipeline for each of these — unit boundaries, message, validation.
Stay Inside the Change
- Every changed line traces to the request. Run that test over the finished diff; a line that traces to nothing is scope creep that got in while you were somewhere else.
- Keep the original code. Edit the lines the change needs; never rewrite the function around them.
- Clean up the orphans your change created — an import, a variable, a helper that your edit made unused — and delete what it supersedes: the old path, the flag choosing between them, the shim no caller needs. A path used outside this repository stays; say so. Pre-existing dead code is not yours to delete: mention it and leave it.
- Wear one hat at a time. Refactor first with behavior identical, verify, then change behavior. A diff that does both can't be reviewed or bisected.
Write Simple Code
Agents overcomplicate by default. Before writing new code, climb the reuse ladder and stop at the first rung that holds. The ladder runs after you understand the problem — read the code the change touches and trace the real flow first, then climb. It shortens the solution, never the reading: a small diff you don't understand is laziness dressed up as efficiency.
Two rungs hold → take the higher one and move on.
Follow Existing Patterns
Search the codebase for an existing pattern before inventing one. Match the error handling, the testing patterns in adjacent tests, and the naming conventions. Read CLAUDE.md and the lint config for project-specific rules. When two patterns contradict, pick one (more recent, more tested), explain the choice, and flag the other for cleanup — never blend them into an average. If you think an existing convention is harmful, surface it; don't fork it silently.
Read references/patterns.md when writing error paths, introducing a seam for testability, pinning behavior no test
covers, reshaping a function whose body reads worse than it works, improving existing code rather than changing its
behavior, or writing a loop, a request path, or an unbounded read.
Naming
A name is read at every use site; a comment is read once — so a vague name is the defect that forces the explanation
above it. Read references/naming.md when naming a new symbol, when writing a diagnostic a user will read, when a
comment's payload would fit in an identifier, or when a name in code you touch reads two ways. It carries the naming
rules and the limits on renaming what already exists.
Comments
The default is zero comments, and it is not a judgment call. Five kinds may exist and nothing outside the list does: a
doc comment on a public symbol, the justification on an escape hatch, shortcut:, constraint:, why?:. There is no
sixth kind and no "this one is genuinely useful" exception.
Before writing a comment, climb the routing ladder and stop at the first rung that holds: a better name, a test, a doc comment, a rule in the project's rule document, a design note in the architecture doc, one of the five markers, or drown it. Drown is the default verdict and it is silent.
Read references/comments.md before writing, repairing, or reviewing any comment or doc comment. It carries the full
closed set, the marker grammar, the provenance rule for a WHY, the doc-comment contract, and the repair scope.
Debugging
Read references/debugging.md when a test fails, a bug is reported, or behavior surprises you — before proposing a fix.
It carries the ordered protocol, the multi-component localization step, and the counter that turns a third failed fix
into a design question rather than a fourth fix.
Verification Discipline
Verification is the highest-leverage activity in the loop. Code that "looks right" but hasn't been run is unverified.
Never Silence the Signal
A failing check is information about the code, not an obstacle to green. Make checks pass by fixing the code — never by weakening the check.
Before Declaring Done
- Run the tests. If none cover the code you changed, write them. If you modified existing behavior, run the full relevant suite, not just the new tests. A removal gets a test that fails while the removed code remains.
- Check both axes. Spec: does it do what was asked — the success criteria from planning — not merely something plausible? Standards: does it follow this repo's conventions (CLAUDE.md, lint and type config, ADRs)? Check them separately: code can satisfy every convention and implement the wrong thing, and a correct result can still violate the conventions.
- Review your own diff as if it were someone else's. Leftover debug code, comments outside the five kinds, docs describing the old contract, missing error handling, hardcoded values, uncovered edge cases, dead code from earlier attempts, code a deletion or a reuse could replace.
- Type-check and lint. Don't ship with known warnings.
- Disclose gaps. "Done" means fully verified. "Done, but I didn't verify X" beats a silent gap.
Evidence, Not Assertion
Every claim below needs its own proof. The third column is what people submit instead.
| Claim | Proof | Not proof |
|---|---|---|
| Tests pass | this run's summary line and exit code | a previous run, "should pass" |
| Lint or types clean | the tool's own exit code | the tests passing |
| Build succeeds | the build's exit code | lint passing |
| Bug fixed | a test of the original symptom, passing | the code changed |
| Regression test works | it went red with the fix reverted, green with it in | it passes once |
| Nothing calls this | the search command and its output, over the whole tree | a grep in one directory |
| A subagent finished | the diff it left behind | its report |
The last two are the ones most often asserted and least often checked. An absence you cannot show a sweep for is an absence you do not claim, and an agent's success report is a claim like any other.
Self-Verification Patterns
- Write a failing test first, then implement until it passes.
- A test must be able to fail. One that cannot fail when the business logic changes is testing nothing.
- For UI changes, exercise the feature in a browser. Type checks and test suites verify code correctness, not feature correctness; if you can't test it, say so rather than claiming success.
Context Management
- Don't pre-load files "just in case" — retrieve context when the need for it arrives, not before.
- After two failed corrections on the same issue, start fresh rather than accumulating failed approaches in context.
Application
Apply these disciplines silently. Don't narrate the protocol, announce which step you are on, or report a check that found nothing.
When writing code: run discovery, work the change list, commit as each trigger fires, verify before reporting.
When reviewing code: cite the specific violation with file:line and show the fix. Don't lecture.
If the codebase contradicts a rule here, follow the codebase and flag the divergence once. The comment default is the exception: a commented-out-everything codebase is a convention you neither match nor sweep. Match the code's patterns, not its prose.
Integration
This skill runs before the language skill and again before you declare done. It governs the shape of the work. The language skill governs syntax, idiom, toolchain, and which symbols need a doc, and it wins on anything language-specific.
이 스킬의 파일
6coding skill 질문
Claude Code에 coding skill을 어떻게 설치하나요?
npx degit xobotyi/cc-foundry/plugins/the-coder/skills/coding ~/.claude/skills/coding를 실행합니다. Claude Code는 ~/.claude/skills(모든 프로젝트) 또는 .claude/skills(한 프로젝트)에서 skills를 로드하며, 설명이 작업과 일치할 때 skill을 사용합니다.
coding skill을 사용할 수 있는 클라이언트는 무엇인가요?
Agent Skills 형식을 읽는 모든 클라이언트(Claude Code, Codex, Gemini CLI, claude.ai(ZIP으로 업로드))가 사용할 수 있습니다. skill 내 스크립트는 클라이언트가 코드 실행을 허용하는 경우에만 실행됩니다.
이 코딩 SKILL은 언제 사용해야 하나요?
코드 작성, 수정, 디버깅, 리팩터링 또는 코드베이스 이해를 위한 읽기 작업을 포함하여 코드를 다루는 모든 상황에서 이 SKILL을 호출하십시오.
변경 사항이 원자적(atomic)인지 어떻게 알 수 있나요?
변경 사항이 트리 구조를 유지하고, 빌드되며, 테스트를 통과하는 가장 작은 단위라면 원자적이라고 할 수 있습니다. 변경 사항을 두 부분으로 나누었을 때 두 부분 모두 빌드되고 테스트를 통과하는지 확인하여 이를 테스트할 수 있습니다.