Skip to content

feat: standardize README and add workflow templates - #23

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

feat: standardize README and add workflow templates#23
Royal-lobster merged 1 commit into
mainfrom
feat/standardize-readme

Conversation

@Royal-lobster

Copy link
Copy Markdown
Member

Summary

  • Update README structure to match mcp-opinion standard format with emojis and improved organization
  • Add AUTO-GENERATED TOOLS markers for automatic tool documentation synchronization
  • Add push.yml, release.yml, sync-tools.yml workflow templates from mcp-opinion
  • Add generate-mcp-tools action for auto-syncing tool documentation to README

Test plan

  • Verify README renders correctly with new structure
  • Run linting (pnpm run lint) - passes
  • Run unit tests (pnpm test:unit) - all 297 tests pass
  • Build project (pnpm run build) - compiles successfully

🤖 Generated with Claude Code

- Update README structure to match mcp-opinion standard format
- Add emojis and improve section organization
- Add AUTO-GENERATED TOOLS markers for tool documentation sync
- Add push.yml, release.yml, sync-tools.yml workflow templates
- Add generate-mcp-tools action for auto-syncing tool docs

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
@Royal-lobster
Royal-lobster merged commit 00e7a3c into main Jan 27, 2026
6 of 7 checks 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 automation infrastructure. It standardizes the README.md to improve clarity and user experience, while also introducing an automated system to keep the MCP tool documentation up-to-date. Furthermore, new GitHub Actions workflows are integrated to streamline development, testing, and release processes, ensuring a more robust and maintainable codebase.

Highlights

  • README Standardization: The README.md has been updated to a new, standardized format, incorporating emojis and improved section organization for better readability and consistency.
  • Automated Tool Documentation: Implemented AUTO-GENERATED TOOLS markers in the README.md and introduced a new Node.js script (generate-tools.mjs) to automatically generate and synchronize the documentation for MCP tools.
  • New GitHub Actions Workflows: Added push.yml, release.yml, and sync-tools.yml workflow templates to streamline CI/CD processes and automate tasks like tool documentation updates.
  • generate-mcp-tools Action: A new GitHub Action was added to facilitate the automatic synchronization of tool documentation within the README.md based on the project's src/tools directory.
Ignored Files
  • Ignored by pattern: .github/workflows/** (3)
    • .github/workflows/push.yml
    • .github/workflows/release.yml
    • .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

This pull request introduces a new GitHub Action to automatically generate tool documentation in the README.md file, standardizes the README structure, and adds new workflow templates. These changes significantly improve documentation consistency and streamline development workflows. Overall, the changes are well-implemented, but there are a few areas for improvement regarding clarity, efficiency, and consistency with the new automation.

Comment thread README.md
Comment on lines +111 to 148
### Authentication Tools (5 tools)
- **GET_AUTH_STATUS**: Check current authentication status
- **GET_SIGNING_MESSAGE**: Get a signing message with nonce for wallet authentication
- **VERIFY_AUTH**: Verify if the user is authenticated
- **LOGIN**: Authenticate a user with a signed message and create a session
- **LOGOUT**: Log out the user by clearing the session cookie

You: "Here's my signature: 0xabc123..."
### Market Data Tools (13 tools)
- **SEARCH_MARKETS**: Search for prediction markets using semantic similarity
- **GET_MARKET**: Get detailed information about a specific market by slug or address
- **GET_ACTIVE_MARKETS**: Browse active (unresolved) markets with optional filtering
- **GET_ACTIVE_MARKETS_BY_CATEGORY**: Browse active markets filtered by category ID
- **GET_CATEGORIES**: Get all available categories
- **GET_CATEGORIES_COUNT**: Get the number of active markets for each category
- **GET_ACTIVE_SLUGS**: Get slugs, strike prices, tickers, and deadlines for all active markets
- **GET_MARKET_ORDERBOOK**: View current orderbook with bids and asks
- **GET_HISTORICAL_PRICE**: Retrieve historical price data with configurable time intervals
- **GET_FEED_EVENTS**: Get the latest feed events for a specific market
- **GET_MARKET_EVENTS**: Get recent market events including trades and orders
- **GET_LOCKED_BALANCE**: Get funds locked in open orders (requires authentication)
- **GET_USER_ORDERS**: Get all user orders for a specific market (requires authentication)

Claude: [Uses LOGIN tool]
→ ✅ Successfully logged in as 0x742d35Cc...
### Portfolio Tools (8 tools)
- **GET_PORTFOLIO_POSITIONS**: Get user portfolio positions with P&L calculations
- **GET_PORTFOLIO_TRADES**: Retrieve all trades executed by the user
- **GET_PORTFOLIO_HISTORY**: Get paginated history including AMM/CLOB trades, splits/merges
- **GET_PORTFOLIO_POINTS**: Get points breakdown for the user
- **GET_USER_TRADED_VOLUME**: Get total traded volume for a specific user address (public)
- **GET_PUBLIC_USER_POSITIONS**: Get all positions for a specific user address (public)
- **GET_USER_PROFILE**: Get detailed user profile information
- **GET_TRADING_ALLOWANCE**: Check USDC allowance for CLOB or NegRisk trading

You: "Show me my portfolio positions"
### Trading Tools (4 tools)
- **CREATE_ORDER**: Create a buy or sell order for prediction market positions
- **CANCEL_ORDER**: Cancel a specific open order by order ID
- **CANCEL_ORDER_BATCH**: Cancel multiple orders in a single batch operation
- **CANCEL_ALL_ORDERS**: Cancel all user orders in a specific market

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 pull request introduces an automatic tool documentation synchronization feature using AUTO-GENERATED TOOLS markers. The current README.md still contains a manually maintained list of tools within the <!-- AUTO-GENERATED TOOLS START --> and <!-- AUTO-GENERATED TOOLS END --> block. This manual list should be removed entirely, as the generate-tools.mjs script is intended to populate this section automatically. Leaving it will lead to redundant or outdated information once the script runs.

Comment on lines +47 to +49
`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.

medium

When a file exports multiple MCP-like tools, the warning message Warning: ${file} exports multiple MCP-like tools. Using the first one. could be more informative. It would be helpful to specify which tool is being used (e.g., by its name property) and which ones are being ignored. This clarifies the behavior for debugging or understanding why a specific tool might not appear in the generated documentation.

            console.warn(
                `Warning: ${file} exports multiple MCP-like tools. Using the first one: ${matches[0].name}. Other tools found: ${matches.slice(1).map(t => t.name).join(", ")}.`,
            );

Comment on lines +82 to +101
let table = hasDefaults
? "| Parameter | Type | Required | Default | Description |\n|-----------|------|----------|---------|-------------|\n"
: "| Parameter | Type | Required | Description |\n|-----------|------|----------|-------------|\n";

// Build table rows
for (const [key, prop] of Object.entries(properties)) {
const type = Array.isArray(prop.type)
? prop.type.join(" | ")
: (prop.type ?? "unknown");

const requiredStr = required.has(key) ? "✅" : "";
const description = prop.description ?? "";
const defaultVal =
prop.default !== undefined ? JSON.stringify(prop.default) : "";

if (hasDefaults) {
table += `| \`${key}\` | ${type} | ${requiredStr} | ${defaultVal} | ${description} |\n`;
} else {
table += `| \`${key}\` | ${type} | ${requiredStr} | ${description} |\n`;
}

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

Building the table string using repeated += in a loop can be inefficient, especially for schemas with many properties. A more performant and idiomatic approach in JavaScript is to collect the rows in an array and then join them at the end.

    const tableRows = [];
    if (hasDefaults) {
        tableRows.push("| Parameter | Type | Required | Default | Description |");
        tableRows.push("|-----------|------|----------|---------|-------------|");
    } else {
        tableRows.push("| Parameter | Type | Required | Description |");
        tableRows.push("|-----------|------|----------|-------------|");
    }

    for (const [key, prop] of Object.entries(properties)) {
        const type = Array.isArray(prop.type)
            ? prop.type.join(" | ")
            : (prop.type ?? "unknown");

        const requiredStr = required.has(key) ? "✅" : "";
        const description = prop.description ?? "";
        const defaultVal =
            prop.default !== undefined ? JSON.stringify(prop.default) : "";

        if (hasDefaults) {
            tableRows.push(`| \`${key}\` | ${type} | ${requiredStr} | ${defaultVal} | ${description} |`);
        } else {
            tableRows.push(`| \`${key}\` | ${type} | ${requiredStr} | ${description} |`);
        }
    }

    return tableRows.join("\n").trim();

@Royal-lobster
Royal-lobster deleted the feat/standardize-readme branch January 28, 2026 06:45
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