Skip to content

skill#220

Merged
RomKadria merged 4 commits intomasterfrom
feature/romka/tool-skill
Mar 3, 2026
Merged

skill#220
RomKadria merged 4 commits intomasterfrom
feature/romka/tool-skill

Conversation

@RomKadria
Copy link
Collaborator

No description provided.

@RomKadria RomKadria merged commit 5f86b93 into master Mar 3, 2026
1 check passed
Copy link
Collaborator

@arutkowski00 arutkowski00 left a comment

Choose a reason for hiding this comment

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

Solid addition. The mcp-tool.md guide is detailed and covers the full workflow clearly — the codegen reminder especially is the kind of thing that gets missed and causes confusing type errors. Main thing I'd flag is the duplication: CLAUDE.md has a condensed version of the same "Adding a New Platform API Tool" steps that mcp-tool.md already covers thoroughly. That's going to drift. Either have CLAUDE.md defer to the command (see /mcp-tool) or pick one as the canonical source. The README's new Development section only mentions the Cursor skill but not the Claude command, even though the Cursor SKILL.md is just a thin pointer to the Claude command anyway.


## Architecture Overview

All platform API tools live under `src/core/tools/platform-api-tools/`. Each tool extends `BaseMondayApiTool<InputSchema, Output>` from `base-monday-api-tool.ts`, which itself implements the `Tool` interface from `src/core/tool.ts`.
Copy link
Collaborator

Choose a reason for hiding this comment

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

The type parameter name InputSchema here doesn't match the actual class definition, which uses Input extends ZodRawShape | undefined. Minor, but since this is a reference doc it'd be cleaner to match the real signature.

abstract annotations: ToolAnnotations;
abstract getDescription(): string;
abstract getInputSchema(): Input;
protected abstract executeInternal(input): Promise<ToolOutputType<Output>>;
Copy link
Collaborator

Choose a reason for hiding this comment

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

The real executeInternal signature has input? (optional), not input. Matches the base class: protected abstract executeInternal(input?: ToolInputType<Input>).


protected async executeInternal(
input: ToolInputType<typeof myToolSchema>
): Promise<ToolOutputType<never>> {
Copy link
Collaborator

Choose a reason for hiding this comment

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

ToolOutputType<never> works fine since never is the default for the Output type parameter, but it reads as a bit cryptic to someone unfamiliar with the type. Worth adding a short comment like // 'never' = no typed metadata or just using ToolOutputType<Record<string, never>>.

Tools are organized into three groups (see `src/core/tools/index.ts`):

- **`platform-api-tools/`** — GraphQL-based tools for boards, items, columns, workforms, docs, dashboards, search, etc. Registered via `allGraphqlApiTools`.
- **`monday-apps-tools/`** — REST-based tools for app management, features, versions, deployment, and storage. Registered via `allMondayAppsTools`.
Copy link
Collaborator

Choose a reason for hiding this comment

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

This "Adding a New Platform API Tool" section is essentially a condensed version of what mcp-tool.md already covers in detail. Two sources for the same process will drift. Could simplify this to a one-liner pointing to /mcp-tool instead of maintaining parallel step lists.


When modifying an existing tool's behavior, review and update `getDescription()` to reflect the new capabilities. The description is what LLMs see when selecting tools — stale descriptions lead to incorrect tool usage.

### Version Bumping
Copy link
Collaborator

Choose a reason for hiding this comment

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

"Document changes in CHANGELOG.md" — the CHANGELOG.md in this package is empty. If that's the intended convention going forward, fine, but worth noting that it's currently unpopulated.


## Development

A Cursor skill is available at `.cursor/skills/agent-toolkit-api-tools/SKILL.md` with detailed guidance on creating and modifying platform API tools, including the GraphQL codegen pipeline, tool registration, and version bumping.
Copy link
Collaborator

Choose a reason for hiding this comment

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

This only mentions the Cursor skill but the Cursor SKILL.md is just a thin pointer to .claude/commands/mcp-tool.md. Might be worth referencing the Claude command too (or the Claude command as the primary, since Cursor just delegates to it).

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.

2 participants