Skip to main content

ecs-rfc-guide

Guides contributors through the Elastic Common Schema (ECS) RFC (Proposal) process: template sections, target maturity (alpha/beta), rfcs/text artifacts, and optional OTel mapping. Use when a change needs an RFC, when drafting or reviewing RFC PRs, or when the user asks how to propose new ECS field sets or substantial schema changes.

소스 정보

저장소
elastic/ecs
최근 소스 활동
2026년 4월 29일 15:42
감지된 SKILL.md 언어
영어
스타
1,123
포크
458

설치 방법

기본적으로 소스를 먼저 확인하는 Prompt가 선택됩니다. 직접 명령으로 전환하거나 로컬 사본을 다운로드할 수도 있습니다.

소스 파일 검토

설치 여부를 결정하기 전에 SKILL.md와 SkillsMP에 표시된 보조 파일을 읽어 보세요.

SKILL.md 표시 중

SKILL.md
소스 지침 · 읽기 전용 미리보기
name
ecs-rfc-guide
description
Guides contributors through the Elastic Common Schema (ECS) RFC (Proposal) process: template sections, target maturity (alpha/beta), rfcs/text artifacts, and optional OTel mapping. Use when a change needs an RFC, when drafting or reviewing RFC PRs, or when the user asks how to propose new ECS field sets or substantial schema changes.
# ECS RFC (Proposal) guide ## When this applies Use after **ecs-pr-triage** (or equivalent judgment) says **Needs RFC**, or when the user is starting a **new field set**, **breaking** change, **novel use case**, or **ECS-wide** design. Authoritative process: [rfcs/PROCESS.md](../../../rfcs/PROCESS.md). Template: [rfcs/0000-rfc-template.md](../../../rfcs/0000-rfc-template.md). High-level triggers: [rfcs/README.md](../../../rfcs/README.md). ## Current process (short) 1. Single **Proposal** stage — template must keep `Stage: **Proposal**`. 2. Contributor opens a **PR** that adds the RFC markdown under `rfcs/` (name like `0000-<dash-separated-name>.md` until numbered). 3. Specify **Target maturity:** `alpha`, `beta`, or `mixture` (see [Field stability](../../../docs/reference/ecs-principles-design.md#_field_stability)). 4. The PR author assigns the **next available RFC number** (scan `rfcs/text/` for the highest existing number). ECS team reviews holistically and merges on approval. 5. If applicable, the RFC PR **should include** the schema changes (`schemas/*.yml`, generated artifacts, docs) at the agreed maturity level — proposal and implementation land together in a single PR. ## Template walkthrough Copy [rfcs/0000-rfc-template.md](../../../rfcs/0000-rfc-template.md). Remove HTML comments as sections are filled. | Section | What “good” looks like | |--------|-------------------------| | **Summary** | 2–5 sentences: what, why, impact. | | **Usage** | End-to-end: producer → storage → queries/dashboards/detections. | | **Fields** | Every proposed field: name, type, description, level/maturity, example. Prefer YAML blocks. If `object`/`flattened` without children, justify shape and conflict avoidance (see [schemas/README.md](../../../schemas/README.md)). | | **Source data** | ≥2 real examples (JSON/logs); link or place large payloads under `rfcs/text/<n>/`. | | **Scope of impact** | Ingestion (Beats/Agents), Kibana/apps, ECS repo (docs/tooling). | | **Concerns** | Risks + **resolved** mitigations; OTel overlap; naming; adoption. | | **People** | Author, SMEs, reviewers. | | **References** | Prior art, semconv links, related issues/PRs. | ## `rfcs/text/<number>/` folder When the RFC adds or changes fields: - Create **`rfcs/text/<number>/`** with standalone **YAML** snippets, large JSON examples, or mappings — especially when the markdown would be huge. - Use the **next free** folder number (scan `rfcs/text/`; duplicates get fixed at merge per template notes). - Align filenames with affected field sets (e.g. `faas.yml`, `gen_ai.yaml`) for reviewer navigation. ## OTel alignment (optional) ECS tracks relationships between its fields and OTel semconv via `otel:` metadata tags in `schemas/*.yml`. - When a new or changed field has a clear OTel semconv counterpart, adding an `otel:` block (with `relation: match | equivalent | related | conflict | na`) is encouraged but **not required**. - The `otel:` metadata is used to generate alignment documentation — it is not a gate for merging. - If unsure whether an OTel mapping applies, omit it; it can be added later. ## Maturity choice (alpha vs beta) - **Alpha** — earlier, may change more; good for exploratory or fast-moving domains. - **Beta** — clearer adoption path; still subject to change before GA. - **Mixture** — some fields alpha, some beta; explain per field or group. Promotion after merge is **out of band** from the RFC (team process per PROCESS.md). ## PR hygiene - Link the **Proposal PR** at the bottom of the RFC (`### RFC Pull Requests`). - Do **not** replace process with old multi-stage labels found in historical RFCs under `rfcs/text/*.md`; those are legacy examples only. ## Example RFCs (depth reference) - **FaaS + service reuse:** [rfcs/text/0027-faas-fields.md](../../../rfcs/text/0027-faas-fields.md) + folder `rfcs/text/0027/`. - **GenAI security fields:** [rfcs/text/0050-gen_ai-security-fields.md](../../../rfcs/text/0050-gen_ai-security-fields.md). ## Implementation in the RFC PR The RFC PR itself should include the schema implementation: `schemas/*.yml` changes, `make`-generated artifacts, and a **CHANGELOG.next.md** entry. There is no separate "handoff" — proposal and schema land together. ## Related - Triage and routing: **ecs-pr-triage** skill; [ecs-contribution-routing rule](../../rules/ecs-contribution-routing.mdc). - YAML details: [ecs-schema-standards rule](../../rules/ecs-schema-standards.mdc).
GitHub에서 보기