Skip to content

feat: add Avian coding assistant support#772

Open
avianion wants to merge 3 commits into
Fission-AI:mainfrom
avianion:feat/add-avian-tool-support
Open

feat: add Avian coding assistant support#772
avianion wants to merge 3 commits into
Fission-AI:mainfrom
avianion:feat/add-avian-tool-support

Conversation

@avianion

@avianion avianion commented Feb 27, 2026

Copy link
Copy Markdown

Summary

  • Add Avian as a supported AI coding tool in OpenSpec
  • Avian uses .avian/ config directory with nested commands/opsx/<id>.md command paths and YAML frontmatter (name, description, category, tags)
  • Follows the same adapter pattern as Claude Code and Crush

Changes

  • src/core/config.ts — add Avian to AI_TOOLS array (skillsDir: .avian)
  • src/core/command-generation/adapters/avian.ts — new command adapter
  • src/core/command-generation/adapters/index.ts — export adapter
  • src/core/command-generation/registry.ts — register adapter
  • docs/supported-tools.md — add Avian to tool directory table and available tool IDs
  • test/core/command-generation/adapters.test.ts — 5 new tests for adapter (all passing)

Test plan

  • pnpm run build compiles successfully
  • pnpm test — all 87 adapter tests pass (5 new Avian tests included)
  • Registry test passes (Avian adapter registered)
  • available-tools.test.ts passes
  • Init test passes with Avian in tool list

cc @TabishB

Summary by CodeRabbit

  • New Features

    • Avian tool is now available in the product, enabling use of Avian alongside existing AI tools.
  • Documentation

    • Added Avian to the Tool Directory Reference and to the list of available tool IDs.
  • Tests

    • Added tests verifying Avian’s command formatting and path handling for consistent behavior.

@avianion avianion requested a review from TabishB as a code owner February 27, 2026 04:44
@coderabbitai

coderabbitai Bot commented Feb 27, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: b3b0b031-524a-47ee-9560-619dd942ed03

📥 Commits

Reviewing files that changed from the base of the PR and between 86e1e7a and 98cdbed.

📒 Files selected for processing (2)
  • docs/supported-tools.md
  • src/core/config.ts
✅ Files skipped from review due to trivial changes (1)
  • docs/supported-tools.md
🚧 Files skipped from review as they are similar to previous changes (1)
  • src/core/config.ts

📝 Walkthrough

Walkthrough

Adds an Avian ToolCommandAdapter and wires it into the adapters barrel and CommandAdapterRegistry, registers Avian in AI_TOOLS, updates supported-tools docs, and adds adapter tests.

Changes

Avian adapter integration

Layer / File(s) Summary
Adapter Barrel Export
src/core/command-generation/adapters/index.ts
Re-exports avianAdapter from ./avian.js. (barrel export)
Registry Registration
src/core/command-generation/registry.ts
Imports and registers avianAdapter in CommandAdapterRegistry static initializer.
Tests
test/core/command-generation/adapters.test.ts
Adds describe('avianAdapter') tests for toolId, getFilePath (including .avian/commands/opsx), formatFile YAML frontmatter and empty-tags behavior; includes adapter in path.join validation list.
Documentation
docs/supported-tools.md
Adds Avian (avian) to the Tool Directory Reference and avian to the non-interactive --tools list.
Configuration
src/core/config.ts
Adds Avian entry to AI_TOOLS: { name: 'Avian', value: 'avian', available: true, successLabel: 'Avian', skillsDir: '.avian' }.

Sequence Diagram(s)

sequenceDiagram
  participant User
  participant CommandGenerator
  participant CommandAdapterRegistry
  participant AvianAdapter
  participant FileSystem

  User->>CommandGenerator: request generation for 'avian'
  CommandGenerator->>CommandAdapterRegistry: lookup 'avian' adapter
  CommandAdapterRegistry-->>CommandGenerator: avianAdapter
  CommandGenerator->>AvianAdapter: getFilePath(commandId)
  AvianAdapter-->>CommandGenerator: ".avian/commands/opsx/<commandId>.md"
  CommandGenerator->>AvianAdapter: formatFile(content)
  AvianAdapter-->>CommandGenerator: formatted markdown with YAML frontmatter
  CommandGenerator->>FileSystem: write formatted file
  FileSystem-->>User: file created
Loading

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

Possibly related PRs

  • Fission-AI/OpenSpec#556: Main PR’s Avian tool support (adding avianAdapter, registering it in CommandAdapterRegistry, and extending AI_TOOLS with skillsDir: '.avian') directly builds on the retrieved PR’s multi-provider command-generation framework and registry/config changes.
  • Fission-AI/OpenSpec#707: Both PRs extend the same command-adapter system by adding a new tool entry and wiring it into shared locations (AI_TOOLS, adapters barrel, registry).
  • Fission-AI/OpenSpec#217: Also adds a new AI tool entry to AI_TOOLS, touching the same configuration mechanism.

Suggested reviewers

  • TabishB

Poem

🐰 A tiny rabbit scripts away,
In .avian paths it makes a play,
Frontmatter neat and commands that sing,
Files take flight on silvery wing,
Hooray — a feathered tool’s new day!

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title 'feat: add Avian coding assistant support' directly and accurately summarizes the main change: adding Avian as a new AI tool to the codebase.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@greptile-apps

greptile-apps Bot commented Feb 27, 2026

Copy link
Copy Markdown

Greptile Summary

Adds Avian as a supported AI coding tool following OpenSpec's adapter pattern, consistent with other tools like Crush and Claude Code.

  • New command adapter formats files with YAML frontmatter (name, description, category, tags) and uses nested .avian/commands/opsx/<id>.md path structure
  • Adapter registered in CommandAdapterRegistry alongside 24 other tool adapters
  • Tool configuration added to AI_TOOLS array with .avian skillsDir
  • 5 comprehensive tests validate adapter behavior (toolId, file paths, frontmatter formatting, empty tags)
  • Documentation updated with Avian in tool reference table and available tool IDs list

Confidence Score: 5/5

  • This PR is safe to merge with no identified issues
  • Implementation perfectly follows established patterns (identical structure to crushAdapter), all changes are additive with no modifications to existing functionality, comprehensive test coverage validates behavior, and documentation is properly updated
  • No files require special attention

Important Files Changed

Filename Overview
src/core/command-generation/adapters/avian.ts New adapter implementation following established pattern, matches Crush adapter structure
src/core/command-generation/registry.ts Imported and registered avianAdapter correctly in alphabetical order
src/core/config.ts Added Avian tool configuration with correct metadata and skillsDir
test/core/command-generation/adapters.test.ts Added 5 comprehensive tests for Avian adapter following existing test patterns

Class Diagram

%%{init: {'theme': 'neutral'}}%%
classDiagram
    class ToolCommandAdapter {
        <<interface>>
        +string toolId
        +getFilePath(commandId: string) string
        +formatFile(content: CommandContent) string
    }
    
    class CommandAdapterRegistry {
        -Map~string, ToolCommandAdapter~ adapters
        +register(adapter: ToolCommandAdapter) void
        +get(toolId: string) ToolCommandAdapter
        +getAll() ToolCommandAdapter[]
        +has(toolId: string) boolean
    }
    
    class avianAdapter {
        +toolId: "avian"
        +getFilePath(commandId)
        +formatFile(content)
    }
    
    class claudeAdapter {
        +toolId: "claude"
        +getFilePath(commandId)
        +formatFile(content)
    }
    
    class crushAdapter {
        +toolId: "crush"
        +getFilePath(commandId)
        +formatFile(content)
    }
    
    ToolCommandAdapter <|.. avianAdapter : implements
    ToolCommandAdapter <|.. claudeAdapter : implements
    ToolCommandAdapter <|.. crushAdapter : implements
    CommandAdapterRegistry o-- ToolCommandAdapter : registers
    avianAdapter --> CommandAdapterRegistry : registered in static block
Loading

Last reviewed commit: 952533d

Add Avian as a supported AI coding tool with skill and command
generation. Follows the same adapter pattern as Claude Code and Crush
with nested opsx command directories and YAML frontmatter.
@avianion avianion force-pushed the feat/add-avian-tool-support branch from 952533d to b899e0a Compare February 27, 2026 21:08
@avianion

avianion commented Mar 5, 2026

Copy link
Copy Markdown
Author

Friendly follow-up — this PR is still active and ready for review. Would appreciate a look when you get a chance! cc @TabishB

@avianion

avianion commented Mar 5, 2026

Copy link
Copy Markdown
Author

Friendly follow-up — this PR is still active and ready for review. All feedback has been addressed. Would appreciate a look when you get a chance! cc @TabishB

@avianion

avianion commented Mar 5, 2026

Copy link
Copy Markdown
Author

Hey @TabishB — friendly follow-up on this PR. Avian is an OpenAI-compatible inference provider that's already live and powering apps like ISEKAI ZERO. This is a lightweight integration (standard OpenAI-compatible endpoint) and we're happy to address any feedback or make adjustments. Would love to get this merged if you have a moment to review. Thanks!

@avianion

avianion commented May 7, 2026

Copy link
Copy Markdown
Author

Resolved merge conflicts with latest upstream main.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant