Skip to content

feat: Standardize README structure - #3

Merged
Royal-lobster merged 1 commit into
mainfrom
feat/standardize-readme
Jan 27, 2026
Merged

feat: Standardize README structure#3
Royal-lobster merged 1 commit into
mainfrom
feat/standardize-readme

Conversation

@Royal-lobster

Copy link
Copy Markdown
Member

Summary

  • Updated README to follow standardized template with badges, sections for Overview, Features, Installation, Configuration, Usage Examples, MCP Tools, Development, Resources, Disclaimer, and License
  • Added AUTO-GENERATED TOOLS markers for dynamic tool documentation
  • Copied sync-tools.yml workflow for auto-syncing MCP tool docs on push to main
  • Added generate-tools.mjs action script for tool documentation generation
  • Added zod-to-json-schema devDependency for schema conversion

Test plan

  • Build passes: pnpm run build
  • Lint passes: pnpm run lint
  • Verify README renders correctly on GitHub
  • Verify sync-tools workflow runs on merge to main

🤖 Generated with Claude Code

- Update README to follow standardized template with badges, sections for
  Overview, Features, Installation, Configuration, Usage Examples, etc.
- Add AUTO-GENERATED TOOLS markers for dynamic tool documentation
- Copy sync-tools.yml workflow for auto-syncing MCP tool docs
- Add generate-tools.mjs action for tool documentation generation
- Add zod-to-json-schema devDependency for schema conversion

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
@Royal-lobster
Royal-lobster merged commit 953cd67 into main Jan 27, 2026
1 check passed
@gemini-code-assist

Copy link
Copy Markdown

Summary of Changes

Hello @Royal-lobster, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed!

This pull request significantly enhances the project's documentation and developer experience by implementing a standardized README structure and automating the generation of tool documentation. It introduces a new GitHub Action to dynamically update the "MCP Tools" section in the README, ensuring that information about available tools and their parameters is always current. This automation, coupled with a more organized README, aims to streamline onboarding and usage for both new and existing contributors and users.

Highlights

  • Standardized README Structure: The README.md has been completely revamped to follow a consistent template, including new sections like Overview, Features, Installation, Configuration, Usage Examples, MCP Tools, Development, Resources, Disclaimer, and License. This significantly improves readability and information organization.
  • Automated MCP Tool Documentation: A new GitHub Action script (generate-tools.mjs) has been introduced to dynamically generate and update the "MCP Tools" section in the README.md based on the project's src/tools directory. This ensures that the tool documentation is always up-to-date with the code.
  • zod-to-json-schema Integration: The generate-tools.mjs script utilizes zod-to-json-schema to convert Zod schemas (if present in tool definitions) into JSON Schema, which is then used to render detailed parameter tables in the README. This enhances the clarity of tool parameters.
Ignored Files
  • Ignored by pattern: .github/workflows/** (1)
    • .github/workflows/sync-tools.yml
Using Gemini Code Assist

The full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips.

Invoking Gemini

You can request assistance from Gemini at any point by creating a comment using either /gemini <command> or @gemini-code-assist <command>. Below is a summary of the supported commands on the current page.

Feature Command Description
Code Review /gemini review Performs a code review for the current pull request in its current state.
Pull Request Summary /gemini summary Provides a summary of the current pull request in its current state.
Comment @gemini-code-assist Responds in comments when explicitly tagged, both in pull request comments and review comments.
Help /gemini help Displays a list of available commands.

Customization

To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a .gemini/ folder in the base of the repository. Detailed instructions can be found here.

Limitations & Feedback

Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for Github and other Google products, sign up here.

You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension.

Footnotes

  1. Review the Privacy Notices, Generative AI Prohibited Use Policy, Terms of Service, and learn how to configure Gemini Code Assist in GitHub here. Gemini can make mistakes, so double check it and use code with caution.

@gemini-code-assist gemini-code-assist 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.

Code Review

The pull request introduces a new script to standardize the README structure by dynamically generating MCP tool documentation. The README itself has been significantly updated to follow a more structured template, improving clarity and readability. New dependencies for schema conversion have been added to support the tool generation process. Overall, the changes enhance the project's documentation and automation capabilities.

Comment on lines +46 to +49
console.warn(
`Warning: ${file} exports multiple MCP-like tools. Using the first one.`,
);
}

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

high

The current logic silently uses only the first MCP-like tool found if a file exports multiple. This could lead to unexpected behavior where other valid tools are ignored without explicit configuration or warning to the user that they are not being processed. Consider either processing all found tools or throwing an error if only one is expected, to prevent silent failures and make the script's behavior more predictable.

Comment on lines +25 to +26
const files = fs
.readdirSync(TOOLS_DIR)

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

Using fs.readdirSync performs synchronous I/O, which can block the Node.js event loop. For better performance and to avoid blocking, especially in a script that might run in a CI/CD environment, it's recommended to use the asynchronous fs.promises.readdir.

const files = (await fs.promises.readdir(TOOLS_DIR))
		.filter((f) => f.endsWith(".ts") && f !== "index.ts");

.filter((f) => f.endsWith(".ts") && f !== "index.ts");

const toolPromises = files.map(async (file) => {
const mod = await import(path.join(TOOLS_DIR, file));

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

When using dynamic import() with paths constructed via path.join, there can be issues with URL resolution in ESM contexts. It's generally safer and more robust to use new URL for dynamic imports to ensure correct resolution relative to the current module.

const mod = await import(new URL(path.join(TOOLS_DIR, file), import.meta.url).href);

Comment on lines +128 to +131
return readme.replace(
new RegExp(`${START}[\\s\\S]*?${END}`, "m"),
`${START}\n\n${toolsMd}\n\n${END}`,
);

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

The replacement string adds \n\n before and after toolsMd. While this ensures spacing, if toolsMd itself already contains leading/trailing newlines (e.g., from renderMarkdown().trim() which might leave a trailing newline), it could result in excessive blank lines. It might be more consistent to ensure toolsMd is strictly trimmed of all leading/trailing whitespace and then explicitly add the desired number of newlines around it.

return readme.replace(
		new RegExp(`${START}[\s\S]*?${END}`, "m"),
		`${START}\n\n${toolsMd.trim()}\n\n${END}`,
	);

Comment thread README.md
Install the package globally to make the `mcp-abi` command available system-wide:
To use this server without installing it globally:

```bash

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

The npx command often requires the -y flag for non-interactive execution, especially in CI/CD pipelines or automated scripts, to automatically approve package installation. Adding -y would make the command more robust for such use cases.

Suggested change
```bash
npx -y @iqai/mcp-abi

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