Skip to main content

specmap

Map relationships between a web spec section, its Firefox implementation code, and Web Platform Tests. Use when starting work on a spec feature, checking implementation coverage, or finding which WPTs to enable.

معلومات المصدر

المستودع
mozilla-firefox/firefox
آخر نشاط في المصدر
٢١ أبريل ٢٠٢٦ في ٢٣:٢٥
لغة SKILL.md المكتشفة
الإنجليزية
النجوم
١٢٬٨٢٥
التفرعات
١٬٤٠٠

خيارات التثبيت

يُحدَّد Prompt الذي يراجع المصدر أولًا بشكل افتراضي. يمكنك التبديل إلى أمر مباشر أو تنزيل نسخة محلية.

مراجعة ملفات المصدر

اقرأ SKILL.md وأي ملفات مرافقة يعرضها SkillsMP قبل أن تقرر التثبيت.

عرض SKILL.md

SKILL.md
تعليمات المصدر · معاينة للقراءة فقط
name
specmap
description
Map relationships between a web spec section, its Firefox implementation code, and Web Platform Tests. Use when starting work on a spec feature, checking implementation coverage, or finding which WPTs to enable.
argument-hint
[spec-url-or-fragment] [optional: specific-algorithm]
allowed-tools
["Bash(searchfox-cli:*)","Bash(webspec-index:*)","Bash(curl:*)","Bash(jq:*)","Read","Grep","Glob"]
# SpecMap: Spec-Code-WPT Mapping **Spec URL or fragment**: $0 **Specific algorithm** (optional): $1 ## Step 1: Identify the Spec Target and Read Spec Content If you have a spec URL (from a bug report, code comment, etc.), query it directly: ```bash webspec-index query 'https://html.spec.whatwg.org/#navigate' --format markdown webspec-index refs 'https://html.spec.whatwg.org/#navigate' ``` If you only have a feature name, search for it: ```bash webspec-index search "FEATURE_NAME" --limit 5 webspec-index search "FEATURE_NAME" --spec HTML --limit 5 ``` If the exact fragment is unknown, find it by pattern or by listing sections: ```bash webspec-index anchors '*navigate*' --spec HTML webspec-index list HTML ``` For WebIDL interface definitions (not provided by webspec-index), use the spec shortname (visible in search results or derivable from the URL hostname/path): ```bash curl -s "https://w3c.github.io/webref/ed/idl/SHORTNAME.idl" ``` ## Step 2: Query Searchfox for References Use `searchfox-cli` to find files referencing the spec section, split by file type: ```bash # Implementation code (excludes test and generated files) searchfox-cli -q "DOMAIN.*#FRAGMENT" --only-normal -l 200 searchfox-cli -q "#FRAGMENT" --only-normal --path "dom\|html\|layout\|widget" -l 200 searchfox-cli --id InterfaceName --only-normal -l 100 # Test files only searchfox-cli -q "DOMAIN.*#FRAGMENT" --only-tests -l 200 searchfox-cli -q "#FRAGMENT" --only-tests -l 200 ``` If results are sparse, try alternative fragment spellings or the IDL interface/method name from the webref IDL extract. If results are too broad, narrow with `--path`. ## Step 3: Analyze Gaps Cross-reference the webref algorithm steps from Step 1 against the searchfox results from Step 2 to identify: - Spec steps with no corresponding implementation code - Spec steps with implementation but no test coverage in WPT - WPT tests that are currently failing or disabled WPT is the preferred test location for web platform features. Do NOT flag the absence of Mozilla-specific tests (mochitest, browser-chrome, etc.) as a gap when there is adequate WPT coverage. Mozilla tests are only expected for Firefox-specific behavior that WPT cannot cover (e.g. chrome-privileged APIs, internal pref gating, process architecture). To check WPT status, look for `.ini` expectation files using dedicated tools (avoid bash loops which trigger permission prompts): 1. Use Glob to find `.ini` files: `testing/web-platform/meta/PATH/*.ini` 2. For each `.ini` file found, use Grep with `output_mode: "count"` to count `expected:` and `disabled:` lines. No `.ini` file means the test fully passes. An `.ini` with `disabled:` lines means skipped tests. Count `expected:` lines for the number of non-default expectations. ## Step 4: Present the Map Output a structured report: ``` ## SpecMap: [Feature Name] Spec: [full spec URL with fragment] ### Implementation Code | File | Function/Class | Line | Notes | |------|---------------|------|-------| | dom/Foo.cpp | Foo::Bar() | 123 | Step 4 of algorithm | ### Web Platform Tests | Test File | Status | Tests | |-----------|--------|-------| | .../feature.html | PASS (no .ini) | 12 subtests | | .../feature-edge.html | PARTIAL (.ini has 3 expected fails) | 8 subtests | ### Mozilla Tests | Test File | Type | Notes | |-----------|------|-------| | dom/tests/mochitest/test_feature.html | mochitest | ... | ### Coverage Summary - Spec steps with implementation: N/M - WPT files found: N (K passing, J partial, L failing) - Gaps: [list spec steps or areas with no code or test coverage] ``` Split test results: files under `testing/web-platform/` are WPT, other test files are Mozilla tests (mochitest, browser-chrome, xpcshell). ## Step 5: Offer to Add Missing References If implementation code lacks a spec URL comment or step annotations, offer to add them. Ask for confirmation before making edits. Before inserting any spec URL, verify the anchor exists: ```bash webspec-index exists 'SHORTNAME#FRAGMENT' && echo "valid" # e.g.: webspec-index exists 'HTML#navigate' && echo "valid" ``` Examples of references to add: - `// https://spec.example.org/#section` at the top of an implementing function - `// Step N.` comments for algorithm implementations - Spec URL references in `.webidl` files next to interface/method definitions ## Tips - WHATWG fragments follow patterns: `#dom-interface-method`, `#the-element-name-element`, `#concept-name` - Firefox code references specs as `// https://html.spec.whatwg.org/#fragment` or `// Step N of https://...` - When a spec URL is in a code comment, you can pass it directly to `webspec-index query 'URL'` to read the referenced section
عرض على GitHub