Agent skill

Raven Feature Workflow

by marinasundstrom in marinasundstrom/raven

End-to-end workflow for Raven language and compiler feature work.

MITAuto-check passedTesting & QA

Install Raven Feature Workflow

skills CLI
$ npx skills add marinasundstrom/raven --skill raven-feature-workflow -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install marinasundstrom/raven raven-feature-workflow --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/marinasundstrom/raven.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/raven-feature-workflow .claude/skills/raven-feature-workflow && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
raven-feature-workflow
GitHub stars
108
Token cost
~2.5k tokens
SKILL.md length
1,280 words
Files
1
Skills in repo
5
Repo updated
First seen
Licence
MIT

At a glance

End-to-end workflow for Raven language and compiler feature work.

  • Works in 3 steps: Inspect docs/ to confirm intended syntax… → Identify which compiler layers are… → Decide whether scripts/codex-build.sh is…
  • Modifying syntax
  • SKILL.md covers Start, Feature Checklist, Compiler Architecture Direction and Testing, plus 2 more sections
  • Calls dotnet

What it does

Raven Feature Workflow is an agent skill from marinasundstrom/raven. End-to-end workflow for Raven language and compiler feature work. Use when adding or modifying syntax, parsing, binding, lowering, code generation, operations, language service support, or feature documentation. Covers lazy binder-owned semantic state, Roslyn-like compiler APIs, incremental compilation, language-service performance, generator rebuild decisions, docs/spec sync, changelog updates, and focused test coverage.

Its SKILL.md is about 2.5k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.

It sits in Testing & QA, covering Test coverage and Changelog and release notes. The repository describes itself as: Raven is a pragmatic, typed, general-purpose programming language for .NET. The licence is MIT.

When your agent uses it

  • Modifying syntax
  • Code generation
  • Language service support
  • Feature documentation

Example prompts

  • “/raven-feature-workflow”

Workflow steps

3 steps, taken from the first numbered list in SKILL.md.

  1. Inspect docs/ to confirm intended syntax and semantics before changing behavior.
  2. Identify which compiler layers are affected.
  3. Decide whether scripts/codex-build.sh is required

What it can do on your machine

Read from SKILL.md and the folder at commit 3ad067d. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Shell commands in SKILL.md call:

    • dotnet

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Raven Feature Workflow loads about 2.5k tokens when it runs. Until then it costs about 112 tokens; SKILL.md has 1,280 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~112
When it runs · the whole SKILL.md, loaded when a task matches
~2.5k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from marinasundstrom/raven at commit 3ad067d, republished under its MIT licence (© marinasundstrom). 1,280 words, ~2,494 tokens.

Download SKILL.mdSave it as .claude/skills/raven-feature-workflow/SKILL.md (or your agent's skills folder).
name
raven-feature-workflow
description
End-to-end workflow for Raven language and compiler feature work. Use when adding or modifying syntax, parsing, binding, lowering, code generation, operations, language service support, or feature documentation. Covers lazy binder-owned semantic state, Roslyn-like compiler APIs, incremental compilation, language-service performance, generator rebuild decisions, docs/spec sync, changelog updates, and focused test coverage.

Raven Feature Workflow

Use this skill when the task changes Raven language behavior or compiler support for a construct.

Start

For large feature or stabilization efforts, work as a planned task sequence: define concrete slices, keep one step active, verify each slice before moving on, and re-evaluate the plan after each result. Tell the user what the next step is after each verified slice. Prefer proving behavior at the owning compiler layer first, then add broader language-service, sample, or baseline coverage when that broader layer is actually involved.

  1. Inspect docs/ to confirm intended syntax and semantics before changing behavior.
  2. Identify which compiler layers are affected.
  3. Decide whether scripts/codex-build.sh is required:
    • required after changes to syntax or bound model inputs, generator definitions, or generator config
    • otherwise prefer targeted project builds

Feature Checklist

Walk the feature through every affected layer:

  • Syntax model: update syntax definitions or models and regenerate nodes or factories if needed.
  • Tokens and keywords: update token kinds, lexer handling, and keyword classification.
  • Parser: parse the construct, including precedence, associativity, and recovery.
  • Bound model: add or update bound nodes and generated visitor or rewriter artifacts if applicable.
  • Binding and semantics: bind the construct, enforce rules, and report diagnostics instead of throwing.
  • Lowering: implement behavior in lowering where appropriate; prefer lowering for new features when it keeps semantics cleaner.
  • Code generation: ensure emit and runtime paths handle the feature or intentionally reject it with diagnostics.
  • Operations API: update operation kinds, interfaces or nodes, factory logic, and tests or docs.
  • Language service and editor: evaluate symbol lookup, hover, completion, diagnostics, and TextMate grammar coverage when relevant.
  • Grammar, spec, and docs: keep docs/ aligned with the final supported behavior; if the behavior should be documented but lacks coverage in docs/, add it.
  • Changelog: update CHANGELOG.md for user-visible behavior changes.

Compiler Architecture Direction

  • Use docs/compiler/architecture/live-semantic-model.md as the canonical direction for live-editing architecture: binder-owned semantic state, incremental snapshots, analyzer diagnostic lanes, and LSP scheduling.
  • Keep public semantic APIs Roslyn-like unless Raven intentionally diverges: callers should ask GetSymbolInfo, GetTypeInfo, GetDeclaredSymbol, diagnostics, operations, etc.
  • Treat binders as execution units. A binder owns the derived semantic state for the syntax/scope it binds, such as method parameters, local declarations, labels, pattern variables, and binder-produced diagnostics.
  • Treat Compilation/SemanticModel as the semantic service layer. Each edit should produce a stable solution/project/document snapshot, and each semantic request should run against one snapshot instead of mutable shared state.
  • Treat lazy binding as the normal model. Any semantic query path may trigger a bind when the answer is not already available; after that, the resolved information should be cached in compiler-owned state and reused by later queries.
  • Treat available-state APIs as opportunistic, not authoritative. They may answer from already-known compiler state, but must return no answer rather than a partial or guessed one when context is missing. Authoritative semantic APIs may bind to produce the correct answer.
  • Keep semantic caching and incremental reuse inside Raven.CodeAnalysis. The language server, analyzers, completion, and refactorings should not depend on cache-specific helper APIs or choose invalidation policy.
  • Keep analyzers and code fixes out of broad diagnostic production unless that is their explicit job. Analyzers may use SyntaxTree.GetDiagnostics() as a syntax-error guard, but should avoid Compilation.GetDiagnostics, SemanticModel.GetDiagnostics, workspace diagnostic APIs, and diagnostics-with-analyzers APIs from callbacks because they can force binding or re-enter analyzer work. Code fixes should use diagnostics supplied by CodeFixContext.
  • Treat analyzer execution as a Roslyn-like workspace service. Analyzers register narrow syntax/symbol actions and should be stateless; the workspace/analyzer driver owns traversal, caching, cancellation, and invalidation. A cold analysis can walk a document once, while later edits should rerun only actions affected by invalidated syntax or symbol scopes.
  • Treat syntax-node analyzer invalidation conservatively. Existing syntax-node actions are document-scoped by default; only opt into node-scoped reuse when the diagnostic is truly local to the analyzed node and its stable semantic context. Do not make analyzer infrastructure assumptions based on current flaws in a broad analyzer such as unused-variable analysis.
  • For analyzer performance isolation, project options may disable individual built-in analyzers with RavenDisabledAnalyzers by analyzer type name. Treat this as a diagnostic participation switch, not as a substitute for fixing broad analyzer logic.
  • Favor binder-owned state over broad syntax-node caches when the state is logically scoped to that binder. External caches may decide whether a binder is still valid for a syntax tree/compilation increment, but stale binders should not self-heal.
  • Use snapshot-level invalidation for binder reuse. Reuse is valid only when the syntax identity and semantic context are still equivalent: parent binder/member signature/import scope/compilation options must still match. If that context changes, recreate the binder and let its owned symbols and diagnostics be recreated lazily.
  • Design changes so one-shot compilation remains authoritative, while incremental compilation can reuse valid binders and cheaply recreate invalidated binders.
  • Full binding is acceptable when required for correctness, including cold language-service queries. Prefer cheap available-state paths only when they are sound, deterministic, and fall back to the normal bind path when information is missing or ambiguous.
  • For language-service performance, fix the compiler API path first. The VS Code extension and LSP layer should mainly schedule, cancel, and present deterministic compiler answers; they should not suppress semantic features because a compiler answer might require binding.
  • Features such as hover, inlays, completion, diagnostics, and symbol lookup should converge on the same compiler-owned semantic facts. If one path can resolve a symbol/type, the other paths should be able to obtain the same answer through public semantic APIs.
  • Keep language-service request lanes distinct. Foreground requests such as hover, completion, signature help, definition, and rename may preempt or bypass stale background work. Background diagnostics, analyzers, semantic tokens, and broad inlay passes should be cancellable, versioned, and allowed to skip/requeue.
  • The LSP may cache rendered presentation per document version, such as hover markdown or inlay labels, but not semantic truth. Compiler APIs own semantic state and correctness.
Show full SKILL.md (311 more words)Show less

Testing

Add focused coverage at the right layer:

  • syntax tests for parse shape and recovery
  • semantic tests for diagnostics and symbol or model behavior
  • operations tests when operation shape changes
  • codegen or runtime tests for observable behavior
  • binder or semantic-model tests for binder-owned state, invalidation behavior, and cheap public semantic queries
  • incremental edit-shape tests for recovery scenarios users hit in the editor, especially wrapping top-level statements in func Main by typing an opening wrapper and later adding }, or by creating an empty block and pasting statements into it
  • language-server tests for request presentation, cancellation/scheduling, and editor-facing regressions after compiler behavior is covered

Do not add stable tests that assert emitted opcodes or exact lowered instruction sequences. Prefer observable behavior, metadata shape, symbol shape, operation shape, and diagnostics.

If temporary emitted-instruction tests are needed during development, keep them under test/Raven.CodeAnalysis.Tests/CodeGen/Development.

Validation

  1. Run the baseline test split if this is the first code change in the task.
  2. Build only what is necessary.
  3. Run focused tests for the changed feature area.
  4. Run runtime or emission-heavy tests separately if the change affects those paths.
  5. Format touched files with dotnet format whitespace ... --include ... --no-restore. Use dotnet format style or dotnet format analyzers only when intentionally applying those fixes; analyzer/style formatters can rewrite code beyond whitespace.

Use the current tool split when validating behavior:

  • rvnc / Raven.Compiler is the compiler driver for one-shot compiles, project builds, sample builds, and MSBuild-facing behavior.
  • rvn / Raven owns developer commands such as rvn dev syntax, rvn dev dump pretty, and rvn dev bound-tree.
  • Do not use rvn as evidence that compiler-driver behavior is correct; use rvnc, the sample build scripts, or targeted compiler tests for that.

Notes

  • Keep compiler components immutable.
  • Prefer diagnostics over exceptions.
  • If current compiler behavior is clearly wrong for intended Raven semantics, fix the compiler rather than encoding the wrong behavior in tests.

© marinasundstrom, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

Just SKILL.md in .agents/skills/raven-feature-workflow of marinasundstrom/raven.

Open the folder on GitHubat commit 3ad067d

Compare with similar skills

Raven Feature Workflow next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Raven Feature Workflow compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Raven Feature Workflow this skillmarinasundstrom/raven108—~2.5kAutomated safety check: PassMIT
Review Envoy Gateway PRenvoyproxy/gateway3.1k—~850Automated safety check: PassApache-2.0
Verify Releaseillegalstudio/elephc616—~2.5kAutomated safety check: PassMIT
Evaluate PR Testsdotnet/maui23k—~2.9kAutomated safety check: PassMIT
Test Guidelinesgetsentry/sentry-dart873—~3.1kAutomated safety check: PassMIT
Testingdoorkeeper-gem/doorkeeper5.5k—~1.6kAutomated safety check: PassMIT

Similar skills

  • Review Envoy Gateway PR

    envoyproxy/gateway

    Review an Envoy Gateway pull request for essential API, implementation, status, and test coverage requirements.

    3.1k GitHub stars~850 tokensUpdated today
    DevelopmentAuto-check passed
  • Verify Release

    illegalstudio/elephc

    Pre-release verification that first requires a complete release-changelog audit, then checks README, docs, roadmap, test coverage, examples, and the full test suite for regressions.

    616 GitHub stars~2.5k tokensUpdated today
    DevelopmentAuto-check passed
  • Official

    Reviews the tests added in a pull request for fix coverage, quality, edge cases and test type, and recommends lighter test types where they would do.

    23k GitHub stars~2.9k tokensUpdated today
    Testing & QAAuto-check passed
  • Test Guidelines

    getsentry/sentry-dart

    Official

    Enforce Sentry Dart/Flutter SDK test conventions for naming, structure, and fixtures.

    873 GitHub stars~3.1k tokensUpdated yesterday
    Testing & QAAuto-check passed
  • Testing

    doorkeeper-gem/doorkeeper

    Write correct and complete RSpec tests for Doorkeeper. An agent skill from doorkeeper-gem/doorkeeper.

    5.5k GitHub stars~1.6k tokensUpdated yesterday
    Testing & QAAuto-check passed
  • Review

    webern/cargo-readme

    Reviews a GitHub pull request for correctness, architecture, security, backward compatibility, and test coverage.

    385 GitHub stars~2k tokensUpdated 2 days ago
    Testing & QAAuto-check: notes

More from marinasundstrom/raven

  • Raven Debug Compiler

    marinasundstrom/raven

    Debug workflow for Raven compiler analysis and emission issues using rvn frontend tooling and the rvnc compiler driver.

    108 GitHub stars~1.6k tokensUpdated yesterday
    Auto-check passed
  • Raven Lsp Debug

    marinasundstrom/raven

    Troubleshooting workflow for Raven language service and editor failures.

    108 GitHub stars~3.7k tokensUpdated yesterday
    Auto-check passed
  • Raven Test Triage

    marinasundstrom/raven

    Testing and stabilization workflow for the Raven compiler test suite.

    108 GitHub stars~1.4k tokensUpdated yesterday
    Auto-check passed
  • Raven Test Cleanup

    marinasundstrom/raven

    Coverage-improvement workflow for Raven tests through cleanup.

    108 GitHub stars~2.2k tokensUpdated yesterday
    Auto-check passed

Questions about Raven Feature Workflow

What does Raven Feature Workflow do?

End-to-end workflow for Raven language and compiler feature work. Raven Feature Workflow is an agent skill from marinasundstrom/raven. End-to-end workflow for Raven language and compiler feature work.

When should I use Raven Feature Workflow?

Raven Feature Workflow fits situations like: modifying syntax; code generation; language service support; feature documentation.

How do I install Raven Feature Workflow in Claude Code?

Run `npx skills add marinasundstrom/raven --skill raven-feature-workflow -a claude-code`. Or copy the skill folder (.agents/skills/raven-feature-workflow in marinasundstrom/raven) into .claude/skills/raven-feature-workflow in your project. Claude Code loads it when a task matches its description.

How do I install Raven Feature Workflow in Codex?

Run `npx skills add marinasundstrom/raven --skill raven-feature-workflow -a codex`. Or copy the skill folder (.agents/skills/raven-feature-workflow in marinasundstrom/raven) into .agents/skills/raven-feature-workflow in your project. Codex loads it when a task matches its description.

Can I use Raven Feature Workflow in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add marinasundstrom/raven --skill raven-feature-workflow -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/raven-feature-workflow, .gemini/skills/raven-feature-workflow, .github/skills/raven-feature-workflow and .opencode/skills/raven-feature-workflow in your project.

What does Raven Feature Workflow need to run?

Going by SKILL.md and its folder, Raven Feature Workflow needs the command-line tools its instructions call (dotnet).

Does Raven Feature Workflow access the network?

SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.

Is Raven Feature Workflow safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Raven Feature Workflow use?

Raven Feature Workflow is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Raven Feature Workflow use?

About 2.5k tokens (SKILL.md is roughly 10k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Raven Feature Workflow?

Skills that share tags, products or a category with Raven Feature Workflow: Review Envoy Gateway PR (envoyproxy/gateway, 3.1k stars), Verify Release (illegalstudio/elephc, 616 stars), Evaluate PR Tests (dotnet/maui, 23k stars) and Test Guidelines (getsentry/sentry-dart, 873 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Raven Feature Workflow?

marinasundstrom (a GitHub user) maintains it in marinasundstrom/raven, which has 108 GitHub stars. The repository holds 5 skills in this directory. The repository was last updated on October 9, 2026.

Source: marinasundstrom/raven on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.