소스 정보
- 저장소
- ethereum/consensus-specs
- 최근 소스 활동
- 2026년 7월 25일 16:31
- 감지된 SKILL.md 언어
- 영어
- 스타
- 3,959
- 포크
- 1,293
설치 방법
기본적으로 소스를 먼저 확인하는 Prompt가 선택됩니다. 직접 명령으로 전환하거나 로컬 사본을 다운로드할 수도 있습니다.
소스 파일 검토
설치 여부를 결정하기 전에 SKILL.md와 SkillsMP에 표시된 보조 파일을 읽어 보세요.
메뉴
기본적으로 소스를 먼저 확인하는 Prompt가 선택됩니다. 직접 명령으로 전환하거나 로컬 사본을 다운로드할 수도 있습니다.
설치 여부를 결정하기 전에 SKILL.md와 SkillsMP에 표시된 보조 파일을 읽어 보세요.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
직접 명령은 검토 Prompt를 거치지 않습니다. 실행하기 전에 소스를 확인하세요.
npx skills add https://github.com/ethereum/consensus-specs --skill write-specs명령은 한 줄로 유지됩니다. 복사하기 전에 가로로 스크롤해 전체 내용을 확인하세요.
로컬 사본을 원하시나요? SkillsMP에서 현재 제공할 수 있는 파일을 다운로드하세요.
Run tests and generate reference tests. All testing goes through `make test`, never `pytest` directly. Always load this skill before running tests.
Review changes. Check that they are correct, consistent with the rest of the specifications, and compliant with the project's conventions. Always load this skill before reviewing changes.
Commit changes and open pull requests. Follow the project's conventions for scope, formatting, and writing style. Always load this skill before committing or opening a pull request.
SOC 직업 분류 기준
SKILL.md 표시 중
| name | write-specs |
| description | Write specifications. Always load this skill before writing to `specs`. |
| compatibility | Requires make and uv |
The markdown files are automatically compiled into executable Python files when
using the project's make rules. Run make help verbose=true for documentation
on available rules. Generally, only the linting and testing rules are used.
Unstable specifications must include a work-in-progress banner at the top of the document, directly below the title. Remove the banner once the specification is promoted to the stable section of the project's README.
Do not manually edit the table of contents. Running make lint regenerates it
automatically.
Simplicity is a guiding principle of the specs. Code should be concise and readable, and performant only where that does not sacrifice those qualities. Implementations will apply optimizations that the specs deliberately omit.
Strive to write code in a generic way that other languages can translate without
difficulty. Avoid Python-specific functional helpers like map and filter. A
list comprehension or an explicit loop expresses the same logic and maps more
cleanly onto other languages.
Avoid single-letter variable names, except where a single letter is the conventional notation in a mathematical expression.
Add a comment only when the code alone would leave something important unclear to the reader. Do not restate what the code already does.
Docstrings and comments must be wrapped at 80 characters. In docstrings, inline code must use double backticks so it renders correctly on the website. The linter does not enforce this, so it must be done manually. Only apply these rules to the docstrings and comments you add or change. Leave those outside the scope of your change untouched.
The specs make heavy use of SSZ types. Functions that operate on chain data should accept and return SSZ types, since the chain itself is stored entirely as SSZ types. Objects that are not part of the consensus data have no such requirement and may use ordinary Python types and dataclasses instead.
Asserts signal an impossible situation or something that is not allowed. Implementations are expected to handle these cases with proper error handling. Do not use assert messages.
Changes in functionality between upgrades must be properly documented. Only
document changes made directly to an item, not changes that ripple in from its
dependencies. For example, if foo() calls bar() and bar() changes, foo()
should not annotate that bar() changed.
When an item such as a container or function has its own section, prefix the section name with "New" or "Modified" accordingly. Phase0 specifications do not use "New" prefixes, since everything there is considered new.
Annotations such as # [New in Deneb] and # [Modified in Deneb] indicate that
a line or block of code has changed, where the name is the upgrade that
introduced the change. If a change is associated with a particular EIP, the
comment must include its number, as in # [New in Deneb:EIP4844]. For multiple
EIPs, list them like # [New in Deneb:EIP4844:EIP4788]. These must be
standalone comments on their own line. Only "New" and "Modified" are allowed
keywords. # [Removed in Deneb] is not allowed. Removed code within functions
is not typically documented, but removed structure fields or function parameters
are, as shown below:
# [Modified in Deneb]
# Removed `parameter`
If a function is refactored so heavily that annotations within the function body would be impractical, omit them and add a note instead.
Notes are paragraphs placed above a code block to give the reader insight that comments cannot. A note should not simply restate how the item now behaves, since that is clear from reading the item itself. Use a note only to call out a subtle change the reader might otherwise miss.
If an existing spec item is no longer needed in a newer spec, mark it as
deprecated by adding its name to the deprecation list for that item's type in
that spec's SpecBuilder class. Define a deprecation only in the spec where the
item is first dropped. Later specs inherit it automatically.