Skip to content

feat: Claude Code plugin for local documentation authoring - #74

Open
Benkapner wants to merge 1 commit into
mainfrom
feat/claude-code-plugin
Open

feat: Claude Code plugin for local documentation authoring#74
Benkapner wants to merge 1 commit into
mainfrom
feat/claude-code-plugin

Conversation

@Benkapner

Copy link
Copy Markdown
Collaborator

Summary

Adds a Claude Code plugin for docs authoring before the PR. New plugin/ directory, no src/ changes.

  • MCP config (.mcp.json): points to the MCP server in src/
  • Update-docs skill: step-by-step instructions emphasizing verification (run CLI, compare output, build, check samples) rather than just generation
  • README: documents the plugin/Action split clearly (complements, not alternatives)

Respects .code-to-docs/style.md and .code-to-docs/ignore so local and CI behavior agree.

Test plan

  • uv run pytest -v passes (417 tests, no source changes)
  • Plugin installs in Claude Code and the skill triggers on doc-update requests

A local agent can verify in ways the Action cannot: run the CLI and
compare --help output against docs, build the site, read git history,
grep for call sites. The Action can only produce plausible text. This
plugin wraps the MCP server and adds an update-docs skill that
emphasizes verification (run the tool, diff behavior, build, check
samples) rather than just generation. Respects .code-to-docs/style.md
and .code-to-docs/ignore so local and CI behavior agree.
@Benkapner Benkapner self-assigned this Aug 17, 2026
@Benkapner
Benkapner requested a review from csoceanu August 17, 2026 05:58
@fullsend-ai-review

fullsend-ai-review Bot commented Aug 17, 2026

Copy link
Copy Markdown

🤖 Finished Review · ✅ Success · Started 5:58 AM UTC · Completed 6:13 AM UTC

Commit: 8bde154 · View workflow run →

@fullsend-ai-review

Copy link
Copy Markdown

Review

Findings

Critical

  • [missing-dependency] plugin/.mcp.json:5 — The MCP server config references src/mcp_server.py, but this file does not exist anywhere in the repository. The src/ directory contains suggest_docs.py, config.py, discovery.py, generation.py, doc_index.py, comments.py, github_ops.py, jira_integration.py, security_utils.py, and utils.py — no mcp_server.py. The plugin is non-functional: launching it will fail with a FileNotFoundError.
    Remediation: Either (1) add src/mcp_server.py implementing the MCP server (including the find_docs_for_code tool referenced in the skill), or (2) remove the .mcp.json config and document that the MCP server is not yet available.

High

  • [missing-authorization] This non-trivial change (3 new files, 117 lines adding a new plugin feature) has no linked issue. Non-trivial changes require explicit authorization via a linked issue.
    Remediation: Create an issue describing the plugin feature, its use case, and architectural impact, then link it to this PR.

  • [architectural-incoherence] plugin/README.md — The plugin README describes an MCP server that wraps code-to-docs functionality for local use, but CLAUDE.md defines this project exclusively as a "Docker-based GitHub Action triggered by issue_comment events." The architecture document makes no mention of MCP servers, local CLI usage, or plugin extensibility.
    Remediation: Update CLAUDE.md to document the dual deployment model (Action + Plugin). Add a section covering the plugin architecture, its relationship to the Action, and the MCP server API surface.

Medium

  • [missing-doc] README.md:8 — The PR adds a new usage mode (Claude Code plugin) but the main README.md describes the project only as "AI-powered GitHub Action" with no mention of the plugin.
    Remediation: Add a section to README.md mentioning the plugin and linking to plugin/README.md.

  • [nonexistent-api-reference] plugin/skills/update-docs/SKILL.md:13 — Step 1 references a find_docs_for_code MCP tool that does not exist anywhere in the codebase. The fallback instruction ("look for doc files that reference the changed modules") partially mitigates this.
    Remediation: Either implement the find_docs_for_code tool, or rewrite step 1 to not reference a specific tool name that does not exist yet.

  • [incorrect-behavior-claim] plugin/README.md:63 — The README claims the plugin respects .code-to-docs/ignore for file exclusions, but no such feature exists in the codebase.
    Remediation: Remove the .code-to-docs/ignore reference, or implement the ignore-file feature first.

  • [incorrect-behavior-claim] plugin/skills/update-docs/SKILL.md:24 — Step 4 instructs users to check .code-to-docs/ignore and skip matching files, but this feature does not exist. The conditional phrasing ("If .code-to-docs/ignore exists") makes the instruction non-harmful in practice, but it still documents a non-existent feature.
    Remediation: Remove step 4, or implement the .code-to-docs/ignore feature.

Low

  • [scope-creep] plugin/skills/update-docs/SKILL.md — The verification steps (running CLI, comparing --help output, building docs) are an intentional plugin differentiator vs. the Action, but the distinction should be documented.

  • [naming-inconsistency] plugin/README.md:64 — CLAUDE.md does not mention the .code-to-docs/ configuration directory convention, though it is already used by the Action (in config.py).

  • [missing-doc] CLAUDE.md:11src/mcp_server.py is referenced as a new entry point but is not listed in CLAUDE.md's source modules table (conditional on the file being created).


Labels: PR introduces a new Claude Code plugin feature with documentation and MCP configuration


Next steps:

  • /fs-fix — agent addresses review findings automatically
  • /fs-fix <your instruction> — agent fixes with your specific guidance
  • Push commits directly — review re-runs automatically on push
  • /fs-fix-stop — disable automatic fix runs for this PR

@fullsend-ai-review fullsend-ai-review Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

See the review comment for full details.

Comment thread plugin/.mcp.json
"mcpServers": {
"code-to-docs": {
"command": "uv",
"args": ["run", "python", "src/mcp_server.py"],

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[critical] missing-dependency

The MCP server config references src/mcp_server.py, but this file does not exist anywhere in the repository. The plugin is non-functional: launching it will fail with a FileNotFoundError.

Suggested fix: Either (1) add src/mcp_server.py implementing the MCP server (including the find_docs_for_code tool referenced in the skill), or (2) remove the .mcp.json config and document that the MCP server is not yet available.

- When changing defaults, removing features, or modifying error messages

## Steps

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[medium] nonexistent-api-reference

Step 1 references a find_docs_for_code MCP tool that does not exist anywhere in the codebase. The fallback instruction partially mitigates this.

Suggested fix: Either implement the find_docs_for_code tool, or rewrite step 1 to not reference a specific tool name that does not exist yet.

Comment thread plugin/README.md

## Configuration

The plugin respects the same `.code-to-docs/` configuration as the Action:

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[medium] incorrect-behavior-claim

The README claims the plugin respects .code-to-docs/ignore for file exclusions, but no such feature exists in the codebase.

Suggested fix: Remove the .code-to-docs/ignore reference, or implement the ignore-file feature first.

follow those conventions.

4. **Check ignore list**: If `.code-to-docs/ignore` exists, skip any files that
match the patterns.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[medium] incorrect-behavior-claim

Step 4 instructs users to check .code-to-docs/ignore and skip matching files, but this feature does not exist. The conditional phrasing makes it non-harmful in practice, but it documents a non-existent feature.

Suggested fix: Remove step 4, or implement the .code-to-docs/ignore feature.

Comment thread plugin/README.md
## Configuration

The plugin respects the same `.code-to-docs/` configuration as the Action:

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[low] naming-inconsistency

CLAUDE.md does not mention the .code-to-docs/ configuration directory convention, though it is already used by the Action (in config.py).

@fullsend-ai-review fullsend-ai-review Bot added feature documentation Improvements or additions to documentation labels Aug 17, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

documentation Improvements or additions to documentation feature

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant