refactor: remove links, tags, and status fields from TPMJS spec

These fields are redundant as they already exist in package.json:
- links: Use package.json repository/homepage fields
- tags: Use package.json keywords field
- status: Not needed in tool metadata

Changes:
- Remove TpmjsLinksSchema type definition
- Remove links, tags, and status from TpmjsRichSchema
- Update validation logic to not check these fields
- Update all documentation (spec page, publish page, HOW_TO_PUBLISH_A_TOOL.md)
- Update example tool package.json
- Simplify field reference tables

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
Ajax Davis 2025-12-01 05:53:48 +10:00
parent 054bac9a53
commit 8e8e511e5a
5 changed files with 4 additions and 163 deletions

View file

@ -55,18 +55,6 @@ export const TpmjsEnvSchema = z.object({
export type TpmjsEnv = z.infer<typeof TpmjsEnvSchema>;
/**
* External links schema
*/
export const TpmjsLinksSchema = z.object({
documentation: z.string().url().optional(),
playground: z.string().url().optional(),
repository: z.string().url().optional(),
homepage: z.string().url().optional(),
});
export type TpmjsLinks = z.infer<typeof TpmjsLinksSchema>;
/**
* AI Agent guidance schema
*/
@ -102,9 +90,6 @@ export const TpmjsRichSchema = TpmjsMinimalSchema.extend({
frameworks: z
.array(z.enum(['vercel-ai', 'langchain', 'llamaindex', 'haystack', 'semantic-kernel']))
.optional(),
links: TpmjsLinksSchema.optional(),
tags: z.array(z.string().min(2).max(30)).max(10).optional(),
status: z.enum(['experimental', 'beta', 'stable', 'deprecated']).optional(),
aiAgent: TpmjsAiAgentSchema.optional(),
});
@ -135,14 +120,7 @@ export function validateTpmjsField(tpmjs: unknown): ValidationResult {
// Check if it has any rich-tier fields
const data = richResult.data;
const hasRichFields =
data.parameters ||
data.returns ||
data.env ||
data.frameworks ||
data.links ||
data.tags ||
data.status ||
data.aiAgent;
data.parameters || data.returns || data.env || data.frameworks || data.aiAgent;
return {
valid: true,