Skip to content

Ship Knowject Skills issues 5-9#10

Merged
lynxlangya merged 6 commits into
mainfrom
codex/skills-issues-5-9
May 24, 2026
Merged

Ship Knowject Skills issues 5-9#10
lynxlangya merged 6 commits into
mainfrom
codex/skills-issues-5-9

Conversation

@lynxlangya
Copy link
Copy Markdown
Owner

Summary by issue

Verification

  • bash skills/scripts/verify.sh -> 50 checks, 0 failures
  • bash skills/scripts/test-install.sh -> pass
  • git diff --check -> pass
  • README/manifest consistency check -> pass
  • workflow path check -> pass
  • shared relative path check -> pass
  • new Skill fixture presence check -> pass
  • generated/temp files in diff check -> pass
  • overclaiming grep for complete Agent platform / production-grade MCP platform -> no matches

Remaining risks

None known. Day-1 scopes for #8 and #9 remain file-based/design-artifact only: no live model calls, no Chroma/MongoDB, no platform API/UI, no MCP server, no runtime handlers, and no external network scoring.

Closes #5
Closes #6
Closes #7
Closes #8
Closes #9

Why:
- Knowject Skills reference ../_shared support files, but the installer only linked knowject-* Skill directories.

What:
- Install skills/_shared into Claude Code and Codex Skill roots with the same symlink safety model.
- Extend install tests to verify _shared symlinks, schema.py, Skill-relative shared docs, idempotency, and non-symlink refusal.
- Update install docs to describe official _shared installation.

Validation:
- OK: install.sh is correct and idempotent -> pass
- → manifest.yaml parses
✓ manifest.yaml
→ skill directory: knowject-context-init
✓ knowject-context-init/ exists
→ skill directory: knowject-read-api
✓ knowject-read-api/ exists
→ skill directory: knowject-prd-to-mock
✓ knowject-prd-to-mock/ exists
→ skill directory: knowject-read-design
✓ knowject-read-design/ exists
→ skill directory: knowject-api-to-types
✓ knowject-api-to-types/ exists
→ skill directory: knowject-memory-capture
✓ knowject-memory-capture/ exists
→ SKILL.md frontmatter: knowject-context-init
✓ knowject-context-init/SKILL.md frontmatter
→ SKILL.md frontmatter: knowject-read-api
✓ knowject-read-api/SKILL.md frontmatter
→ SKILL.md frontmatter: knowject-prd-to-mock
✓ knowject-prd-to-mock/SKILL.md frontmatter
→ SKILL.md frontmatter: knowject-read-design
✓ knowject-read-design/SKILL.md frontmatter
→ SKILL.md frontmatter: knowject-api-to-types
✓ knowject-api-to-types/SKILL.md frontmatter
→ SKILL.md frontmatter: knowject-memory-capture
✓ knowject-memory-capture/SKILL.md frontmatter
→ Codex adapter shape: knowject-context-init
✓ knowject-context-init/agents/openai.yaml structure
→ Codex adapter shape: knowject-read-api
✓ knowject-read-api/agents/openai.yaml structure
→ Codex adapter shape: knowject-prd-to-mock
✓ knowject-prd-to-mock/agents/openai.yaml structure
→ Codex adapter shape: knowject-read-design
✓ knowject-read-design/agents/openai.yaml structure
→ Codex adapter shape: knowject-api-to-types
✓ knowject-api-to-types/agents/openai.yaml structure
→ Codex adapter shape: knowject-memory-capture
✓ knowject-memory-capture/agents/openai.yaml structure
→ README.md coverage: knowject-api-to-types
✓ knowject-api-to-types/README.md coverage
→ README.md coverage: knowject-context-init
✓ knowject-context-init/README.md coverage
→ README.md coverage: knowject-memory-capture
✓ knowject-memory-capture/README.md coverage
→ README.md coverage: knowject-prd-to-mock
✓ knowject-prd-to-mock/README.md coverage
→ README.md coverage: knowject-read-api
✓ knowject-read-api/README.md coverage
→ README.md coverage: knowject-read-design
✓ knowject-read-design/README.md coverage
→ context.yaml schema validates all examples
✓ all example yamls validate
→ context.yaml schema rejects non-mapping project
✓ non-mapping project reports validation error
→ context.yaml schema rejects forbidden env fields
✓ forbidden env fields report validation errors
→ extract-express-routes.py matches fixture
✓ express extractor matches expected
→ extract-openapi-endpoints.py matches fixture
✓ openapi extractor matches expected
→ generate-typed-client.py matches fixture
✓ typed client generator matches expected
→ extract-brand-brief.py matches fixture
✓ brand brief extractor matches expected
→ extract-framework-profile.py matches antd fixture
✓ framework profile (antd) matches expected
→ extract-framework-profile.py matches shadcn fixture
✓ framework profile (shadcn) matches expected
→ extract-types-from-openapi.py matches fixture
✓ types extractor matches expected
→ extract-types-from-openapi.py quotes invalid property names
✓ invalid property names are quoted
→ rewrite-typed-client.py matches fixture
✓ client rewriter matches expected
→ validate-project-memory.py accepts memory example
✓ memory-capture example validates
→ validate-project-memory.py rejects uncited memory
✓ uncited memory reports validation error

Checks: 39 | Failures: 0
All checks passed. -> 39 checks, 0 failures
-  -> pass
-  -> pass

Risk:
- Low - installer-only symlink hardening; no Skill behavior or context schema changes.

Refs: #5
Why:
- The root README files lagged the shipped Knowject Skills catalog and omitted memory capture.

What:
- Add knowject-memory-capture to the English and Chinese Skill tables, flows, usage examples, and Skill boundaries.
- Update validation descriptions to mention README coverage, typed-client generation, memory validation, and install checks.
- Keep Day-1 memory wording source-cited and file-based without DB/vector store/UI claims.

Validation:
-  -> pass
- → manifest.yaml parses
✓ manifest.yaml
→ skill directory: knowject-context-init
✓ knowject-context-init/ exists
→ skill directory: knowject-read-api
✓ knowject-read-api/ exists
→ skill directory: knowject-prd-to-mock
✓ knowject-prd-to-mock/ exists
→ skill directory: knowject-read-design
✓ knowject-read-design/ exists
→ skill directory: knowject-api-to-types
✓ knowject-api-to-types/ exists
→ skill directory: knowject-memory-capture
✓ knowject-memory-capture/ exists
→ SKILL.md frontmatter: knowject-context-init
✓ knowject-context-init/SKILL.md frontmatter
→ SKILL.md frontmatter: knowject-read-api
✓ knowject-read-api/SKILL.md frontmatter
→ SKILL.md frontmatter: knowject-prd-to-mock
✓ knowject-prd-to-mock/SKILL.md frontmatter
→ SKILL.md frontmatter: knowject-read-design
✓ knowject-read-design/SKILL.md frontmatter
→ SKILL.md frontmatter: knowject-api-to-types
✓ knowject-api-to-types/SKILL.md frontmatter
→ SKILL.md frontmatter: knowject-memory-capture
✓ knowject-memory-capture/SKILL.md frontmatter
→ Codex adapter shape: knowject-context-init
✓ knowject-context-init/agents/openai.yaml structure
→ Codex adapter shape: knowject-read-api
✓ knowject-read-api/agents/openai.yaml structure
→ Codex adapter shape: knowject-prd-to-mock
✓ knowject-prd-to-mock/agents/openai.yaml structure
→ Codex adapter shape: knowject-read-design
✓ knowject-read-design/agents/openai.yaml structure
→ Codex adapter shape: knowject-api-to-types
✓ knowject-api-to-types/agents/openai.yaml structure
→ Codex adapter shape: knowject-memory-capture
✓ knowject-memory-capture/agents/openai.yaml structure
→ README.md coverage: knowject-api-to-types
✓ knowject-api-to-types/README.md coverage
→ README.md coverage: knowject-context-init
✓ knowject-context-init/README.md coverage
→ README.md coverage: knowject-memory-capture
✓ knowject-memory-capture/README.md coverage
→ README.md coverage: knowject-prd-to-mock
✓ knowject-prd-to-mock/README.md coverage
→ README.md coverage: knowject-read-api
✓ knowject-read-api/README.md coverage
→ README.md coverage: knowject-read-design
✓ knowject-read-design/README.md coverage
→ context.yaml schema validates all examples
✓ all example yamls validate
→ context.yaml schema rejects non-mapping project
✓ non-mapping project reports validation error
→ context.yaml schema rejects forbidden env fields
✓ forbidden env fields report validation errors
→ extract-express-routes.py matches fixture
✓ express extractor matches expected
→ extract-openapi-endpoints.py matches fixture
✓ openapi extractor matches expected
→ generate-typed-client.py matches fixture
✓ typed client generator matches expected
→ extract-brand-brief.py matches fixture
✓ brand brief extractor matches expected
→ extract-framework-profile.py matches antd fixture
✓ framework profile (antd) matches expected
→ extract-framework-profile.py matches shadcn fixture
✓ framework profile (shadcn) matches expected
→ extract-types-from-openapi.py matches fixture
✓ types extractor matches expected
→ extract-types-from-openapi.py quotes invalid property names
✓ invalid property names are quoted
→ rewrite-typed-client.py matches fixture
✓ client rewriter matches expected
→ validate-project-memory.py accepts memory example
✓ memory-capture example validates
→ validate-project-memory.py rejects uncited memory
✓ uncited memory reports validation error

Checks: 39 | Failures: 0
All checks passed. -> 39 checks, 0 failures
- overclaiming grep for complete Agent platform / production-grade MCP platform -> no matches

Risk:
- Low - documentation-only README catalog sync.

Refs: #6
Why:
- Skills verification only ran locally, so manifest, README, extractor, memory validator, and installer regressions had no PR gate.

What:
- Add a GitHub Actions workflow for pull requests and pushes to main.
- Set up Python 3.12, install PyYAML, and run verify.sh, test-install.sh, and git diff --check.
- Document the Skills CI gate in the Skills README.

Validation:
- → manifest.yaml parses
✓ manifest.yaml
→ skill directory: knowject-context-init
✓ knowject-context-init/ exists
→ skill directory: knowject-read-api
✓ knowject-read-api/ exists
→ skill directory: knowject-prd-to-mock
✓ knowject-prd-to-mock/ exists
→ skill directory: knowject-read-design
✓ knowject-read-design/ exists
→ skill directory: knowject-api-to-types
✓ knowject-api-to-types/ exists
→ skill directory: knowject-memory-capture
✓ knowject-memory-capture/ exists
→ SKILL.md frontmatter: knowject-context-init
✓ knowject-context-init/SKILL.md frontmatter
→ SKILL.md frontmatter: knowject-read-api
✓ knowject-read-api/SKILL.md frontmatter
→ SKILL.md frontmatter: knowject-prd-to-mock
✓ knowject-prd-to-mock/SKILL.md frontmatter
→ SKILL.md frontmatter: knowject-read-design
✓ knowject-read-design/SKILL.md frontmatter
→ SKILL.md frontmatter: knowject-api-to-types
✓ knowject-api-to-types/SKILL.md frontmatter
→ SKILL.md frontmatter: knowject-memory-capture
✓ knowject-memory-capture/SKILL.md frontmatter
→ Codex adapter shape: knowject-context-init
✓ knowject-context-init/agents/openai.yaml structure
→ Codex adapter shape: knowject-read-api
✓ knowject-read-api/agents/openai.yaml structure
→ Codex adapter shape: knowject-prd-to-mock
✓ knowject-prd-to-mock/agents/openai.yaml structure
→ Codex adapter shape: knowject-read-design
✓ knowject-read-design/agents/openai.yaml structure
→ Codex adapter shape: knowject-api-to-types
✓ knowject-api-to-types/agents/openai.yaml structure
→ Codex adapter shape: knowject-memory-capture
✓ knowject-memory-capture/agents/openai.yaml structure
→ README.md coverage: knowject-api-to-types
✓ knowject-api-to-types/README.md coverage
→ README.md coverage: knowject-context-init
✓ knowject-context-init/README.md coverage
→ README.md coverage: knowject-memory-capture
✓ knowject-memory-capture/README.md coverage
→ README.md coverage: knowject-prd-to-mock
✓ knowject-prd-to-mock/README.md coverage
→ README.md coverage: knowject-read-api
✓ knowject-read-api/README.md coverage
→ README.md coverage: knowject-read-design
✓ knowject-read-design/README.md coverage
→ context.yaml schema validates all examples
✓ all example yamls validate
→ context.yaml schema rejects non-mapping project
✓ non-mapping project reports validation error
→ context.yaml schema rejects forbidden env fields
✓ forbidden env fields report validation errors
→ extract-express-routes.py matches fixture
✓ express extractor matches expected
→ extract-openapi-endpoints.py matches fixture
✓ openapi extractor matches expected
→ generate-typed-client.py matches fixture
✓ typed client generator matches expected
→ extract-brand-brief.py matches fixture
✓ brand brief extractor matches expected
→ extract-framework-profile.py matches antd fixture
✓ framework profile (antd) matches expected
→ extract-framework-profile.py matches shadcn fixture
✓ framework profile (shadcn) matches expected
→ extract-types-from-openapi.py matches fixture
✓ types extractor matches expected
→ extract-types-from-openapi.py quotes invalid property names
✓ invalid property names are quoted
→ rewrite-typed-client.py matches fixture
✓ client rewriter matches expected
→ validate-project-memory.py accepts memory example
✓ memory-capture example validates
→ validate-project-memory.py rejects uncited memory
✓ uncited memory reports validation error

Checks: 39 | Failures: 0
All checks passed. -> 39 checks, 0 failures
- OK: install.sh is correct and idempotent -> pass
-  -> pass
- workflow grep for triggers and commands -> pass

Risk:
- Low - CI-only change with no secrets, deployment, publishing, or app build jobs.

Refs: #7
Why:
- Knowject Skills lacked a file-based way to create reusable RAG and citation quality evaluation cases.

What:
- Add knowject-rag-eval with Skill docs, Codex adapter, references, examples, and a YAML validator.
- Update manifest, roadmap, and Skills README for the shipped Day-1 catalog.
- Extend verify.sh to validate the rag eval fixture and reject uncited eval cases.

Validation:
- OK: skills/knowject-rag-eval/references/examples/rag-eval-cases.expected.yaml -> pass
-  -> pass
- → manifest.yaml parses
✓ manifest.yaml
→ skill directory: knowject-context-init
✓ knowject-context-init/ exists
→ skill directory: knowject-read-api
✓ knowject-read-api/ exists
→ skill directory: knowject-prd-to-mock
✓ knowject-prd-to-mock/ exists
→ skill directory: knowject-read-design
✓ knowject-read-design/ exists
→ skill directory: knowject-api-to-types
✓ knowject-api-to-types/ exists
→ skill directory: knowject-memory-capture
✓ knowject-memory-capture/ exists
→ skill directory: knowject-rag-eval
✓ knowject-rag-eval/ exists
→ SKILL.md frontmatter: knowject-context-init
✓ knowject-context-init/SKILL.md frontmatter
→ SKILL.md frontmatter: knowject-read-api
✓ knowject-read-api/SKILL.md frontmatter
→ SKILL.md frontmatter: knowject-prd-to-mock
✓ knowject-prd-to-mock/SKILL.md frontmatter
→ SKILL.md frontmatter: knowject-read-design
✓ knowject-read-design/SKILL.md frontmatter
→ SKILL.md frontmatter: knowject-api-to-types
✓ knowject-api-to-types/SKILL.md frontmatter
→ SKILL.md frontmatter: knowject-memory-capture
✓ knowject-memory-capture/SKILL.md frontmatter
→ SKILL.md frontmatter: knowject-rag-eval
✓ knowject-rag-eval/SKILL.md frontmatter
→ Codex adapter shape: knowject-context-init
✓ knowject-context-init/agents/openai.yaml structure
→ Codex adapter shape: knowject-read-api
✓ knowject-read-api/agents/openai.yaml structure
→ Codex adapter shape: knowject-prd-to-mock
✓ knowject-prd-to-mock/agents/openai.yaml structure
→ Codex adapter shape: knowject-read-design
✓ knowject-read-design/agents/openai.yaml structure
→ Codex adapter shape: knowject-api-to-types
✓ knowject-api-to-types/agents/openai.yaml structure
→ Codex adapter shape: knowject-memory-capture
✓ knowject-memory-capture/agents/openai.yaml structure
→ Codex adapter shape: knowject-rag-eval
✓ knowject-rag-eval/agents/openai.yaml structure
→ README.md coverage: knowject-api-to-types
✓ knowject-api-to-types/README.md coverage
→ README.md coverage: knowject-context-init
✓ knowject-context-init/README.md coverage
→ README.md coverage: knowject-memory-capture
✓ knowject-memory-capture/README.md coverage
→ README.md coverage: knowject-prd-to-mock
✓ knowject-prd-to-mock/README.md coverage
→ README.md coverage: knowject-rag-eval
✓ knowject-rag-eval/README.md coverage
→ README.md coverage: knowject-read-api
✓ knowject-read-api/README.md coverage
→ README.md coverage: knowject-read-design
✓ knowject-read-design/README.md coverage
→ context.yaml schema validates all examples
✓ all example yamls validate
→ context.yaml schema rejects non-mapping project
✓ non-mapping project reports validation error
→ context.yaml schema rejects forbidden env fields
✓ forbidden env fields report validation errors
→ extract-express-routes.py matches fixture
✓ express extractor matches expected
→ extract-openapi-endpoints.py matches fixture
✓ openapi extractor matches expected
→ generate-typed-client.py matches fixture
✓ typed client generator matches expected
→ extract-brand-brief.py matches fixture
✓ brand brief extractor matches expected
→ extract-framework-profile.py matches antd fixture
✓ framework profile (antd) matches expected
→ extract-framework-profile.py matches shadcn fixture
✓ framework profile (shadcn) matches expected
→ extract-types-from-openapi.py matches fixture
✓ types extractor matches expected
→ extract-types-from-openapi.py quotes invalid property names
✓ invalid property names are quoted
→ rewrite-typed-client.py matches fixture
✓ client rewriter matches expected
→ validate-project-memory.py accepts memory example
✓ memory-capture example validates
→ validate-project-memory.py rejects uncited memory
✓ uncited memory reports validation error
→ validate-rag-eval-cases.py accepts rag eval example
✓ rag-eval example validates
→ validate-rag-eval-cases.py rejects uncited eval cases
✓ uncited rag eval reports validation error

Checks: 45 | Failures: 0
All checks passed. -> 45 checks, 0 failures
-  -> pass
- overclaiming grep for complete Agent platform / production-grade MCP platform -> no matches

Risk:
- Low - Day-1 Skill artifacts only; no live model calls, Chroma, MongoDB, API, UI, network scoring, or external eval dependencies.

Refs: #8
Why:
- Knowject had API discovery and type generation, but no conservative Day-1 workflow for deciding which endpoints can become agent tools.

What:
- Add knowject-mcp-tool-designer with Skill docs, Codex adapter, risk taxonomy, design contract, API selection guide, and examples.
- Update manifest, roadmap, and Skills README for the shipped Day-1 catalog.
- Extend verify.sh to parse the MCP tool schema fixture and require read-only plus write/destructive risk coverage.

Validation:
- {
    "version": "0.1",
    "project": {
        "name": "Knowject",
        "generated_at": "2026-05-24",
        "source_summary": {
            "mode": "endpoint-inventory",
            "refs": [
                {
                    "path": "skills/knowject-read-api/references/examples/express-expected.json",
                    "note": "example endpoint inventory generated by knowject-read-api"
                }
            ]
        }
    },
    "tools": [
        {
            "tool_name": "list_users",
            "description": "List users visible to the current project member.",
            "source_endpoint": {
                "method": "GET",
                "path": "/users",
                "source": "skills/knowject-read-api/references/examples/express-expected.json#GET /users"
            },
            "input_schema": {
                "type": "object",
                "properties": {},
                "required": []
            },
            "output_shape_notes": "Returns the user list shape defined by the source API or OpenAPI response schema.",
            "risk_level": "read_only",
            "requires_confirmation": false,
            "auth_scope_notes": "Requires project member read access; do not expose cross-tenant user lists.",
            "audit_log_notes": "Standard request logging is sufficient for read-only inspection.",
            "rollback_notes": "No rollback needed for read-only access."
        },
        {
            "tool_name": "delete_user",
            "description": "Delete one user by id after explicit operator confirmation.",
            "source_endpoint": {
                "method": "DELETE",
                "path": "/users/:id",
                "source": "skills/knowject-read-api/references/examples/express-expected.json#DELETE /users/:id"
            },
            "input_schema": {
                "type": "object",
                "properties": {
                    "id": {
                        "type": "string",
                        "description": "User id from the source endpoint path parameter."
                    }
                },
                "required": [
                    "id"
                ],
                "additionalProperties": false
            },
            "output_shape_notes": "Returns a deletion acknowledgement or the deleted resource shape, depending on the API implementation.",
            "risk_level": "destructive",
            "requires_confirmation": true,
            "auth_scope_notes": "Requires privileged user management scope and tenant boundary checks.",
            "audit_log_notes": "Record actor, target user id, timestamp, request id, and confirmation text.",
            "rollback_notes": "Define restore or re-create procedure before implementation; otherwise keep as design-only."
        }
    ]
} -> pass
- → manifest.yaml parses
✓ manifest.yaml
→ skill directory: knowject-context-init
✓ knowject-context-init/ exists
→ skill directory: knowject-read-api
✓ knowject-read-api/ exists
→ skill directory: knowject-prd-to-mock
✓ knowject-prd-to-mock/ exists
→ skill directory: knowject-read-design
✓ knowject-read-design/ exists
→ skill directory: knowject-api-to-types
✓ knowject-api-to-types/ exists
→ skill directory: knowject-memory-capture
✓ knowject-memory-capture/ exists
→ skill directory: knowject-rag-eval
✓ knowject-rag-eval/ exists
→ skill directory: knowject-mcp-tool-designer
✓ knowject-mcp-tool-designer/ exists
→ SKILL.md frontmatter: knowject-context-init
✓ knowject-context-init/SKILL.md frontmatter
→ SKILL.md frontmatter: knowject-read-api
✓ knowject-read-api/SKILL.md frontmatter
→ SKILL.md frontmatter: knowject-prd-to-mock
✓ knowject-prd-to-mock/SKILL.md frontmatter
→ SKILL.md frontmatter: knowject-read-design
✓ knowject-read-design/SKILL.md frontmatter
→ SKILL.md frontmatter: knowject-api-to-types
✓ knowject-api-to-types/SKILL.md frontmatter
→ SKILL.md frontmatter: knowject-memory-capture
✓ knowject-memory-capture/SKILL.md frontmatter
→ SKILL.md frontmatter: knowject-rag-eval
✓ knowject-rag-eval/SKILL.md frontmatter
→ SKILL.md frontmatter: knowject-mcp-tool-designer
✓ knowject-mcp-tool-designer/SKILL.md frontmatter
→ Codex adapter shape: knowject-context-init
✓ knowject-context-init/agents/openai.yaml structure
→ Codex adapter shape: knowject-read-api
✓ knowject-read-api/agents/openai.yaml structure
→ Codex adapter shape: knowject-prd-to-mock
✓ knowject-prd-to-mock/agents/openai.yaml structure
→ Codex adapter shape: knowject-read-design
✓ knowject-read-design/agents/openai.yaml structure
→ Codex adapter shape: knowject-api-to-types
✓ knowject-api-to-types/agents/openai.yaml structure
→ Codex adapter shape: knowject-memory-capture
✓ knowject-memory-capture/agents/openai.yaml structure
→ Codex adapter shape: knowject-rag-eval
✓ knowject-rag-eval/agents/openai.yaml structure
→ Codex adapter shape: knowject-mcp-tool-designer
✓ knowject-mcp-tool-designer/agents/openai.yaml structure
→ README.md coverage: knowject-api-to-types
✓ knowject-api-to-types/README.md coverage
→ README.md coverage: knowject-context-init
✓ knowject-context-init/README.md coverage
→ README.md coverage: knowject-mcp-tool-designer
✓ knowject-mcp-tool-designer/README.md coverage
→ README.md coverage: knowject-memory-capture
✓ knowject-memory-capture/README.md coverage
→ README.md coverage: knowject-prd-to-mock
✓ knowject-prd-to-mock/README.md coverage
→ README.md coverage: knowject-rag-eval
✓ knowject-rag-eval/README.md coverage
→ README.md coverage: knowject-read-api
✓ knowject-read-api/README.md coverage
→ README.md coverage: knowject-read-design
✓ knowject-read-design/README.md coverage
→ context.yaml schema validates all examples
✓ all example yamls validate
→ context.yaml schema rejects non-mapping project
✓ non-mapping project reports validation error
→ context.yaml schema rejects forbidden env fields
✓ forbidden env fields report validation errors
→ extract-express-routes.py matches fixture
✓ express extractor matches expected
→ extract-openapi-endpoints.py matches fixture
✓ openapi extractor matches expected
→ generate-typed-client.py matches fixture
✓ typed client generator matches expected
→ extract-brand-brief.py matches fixture
✓ brand brief extractor matches expected
→ extract-framework-profile.py matches antd fixture
✓ framework profile (antd) matches expected
→ extract-framework-profile.py matches shadcn fixture
✓ framework profile (shadcn) matches expected
→ extract-types-from-openapi.py matches fixture
✓ types extractor matches expected
→ extract-types-from-openapi.py quotes invalid property names
✓ invalid property names are quoted
→ rewrite-typed-client.py matches fixture
✓ client rewriter matches expected
→ validate-project-memory.py accepts memory example
✓ memory-capture example validates
→ validate-project-memory.py rejects uncited memory
✓ uncited memory reports validation error
→ validate-rag-eval-cases.py accepts rag eval example
✓ rag-eval example validates
→ validate-rag-eval-cases.py rejects uncited eval cases
✓ uncited rag eval reports validation error
→ mcp-tool-designer schema example parses
✓ mcp-tool-designer schema example validates

Checks: 50 | Failures: 0
All checks passed. -> 50 checks, 0 failures
-  -> pass
- overclaiming grep for complete Agent platform / production-grade MCP platform -> no matches

Risk:
- Low - design artifacts only; no MCP server, runtime handlers, external API calls, app route changes, platform UI, auth code, or knowject-read-api behavior changes.

Refs: #9
Why:
- Full diff review found root README catalog drift after adding the rag-eval and MCP tool designer Skills.

What:
- Add knowject-rag-eval and knowject-mcp-tool-designer to the English and Chinese root README tables, flows, usage examples, project artifact tree, boundaries, and validation copy.
- Keep Day-1 wording conservative: file-based evals and design artifacts only.

Validation:
- README/manifest consistency check -> no missing Skill names
- → manifest.yaml parses
✓ manifest.yaml
→ skill directory: knowject-context-init
✓ knowject-context-init/ exists
→ skill directory: knowject-read-api
✓ knowject-read-api/ exists
→ skill directory: knowject-prd-to-mock
✓ knowject-prd-to-mock/ exists
→ skill directory: knowject-read-design
✓ knowject-read-design/ exists
→ skill directory: knowject-api-to-types
✓ knowject-api-to-types/ exists
→ skill directory: knowject-memory-capture
✓ knowject-memory-capture/ exists
→ skill directory: knowject-rag-eval
✓ knowject-rag-eval/ exists
→ skill directory: knowject-mcp-tool-designer
✓ knowject-mcp-tool-designer/ exists
→ SKILL.md frontmatter: knowject-context-init
✓ knowject-context-init/SKILL.md frontmatter
→ SKILL.md frontmatter: knowject-read-api
✓ knowject-read-api/SKILL.md frontmatter
→ SKILL.md frontmatter: knowject-prd-to-mock
✓ knowject-prd-to-mock/SKILL.md frontmatter
→ SKILL.md frontmatter: knowject-read-design
✓ knowject-read-design/SKILL.md frontmatter
→ SKILL.md frontmatter: knowject-api-to-types
✓ knowject-api-to-types/SKILL.md frontmatter
→ SKILL.md frontmatter: knowject-memory-capture
✓ knowject-memory-capture/SKILL.md frontmatter
→ SKILL.md frontmatter: knowject-rag-eval
✓ knowject-rag-eval/SKILL.md frontmatter
→ SKILL.md frontmatter: knowject-mcp-tool-designer
✓ knowject-mcp-tool-designer/SKILL.md frontmatter
→ Codex adapter shape: knowject-context-init
✓ knowject-context-init/agents/openai.yaml structure
→ Codex adapter shape: knowject-read-api
✓ knowject-read-api/agents/openai.yaml structure
→ Codex adapter shape: knowject-prd-to-mock
✓ knowject-prd-to-mock/agents/openai.yaml structure
→ Codex adapter shape: knowject-read-design
✓ knowject-read-design/agents/openai.yaml structure
→ Codex adapter shape: knowject-api-to-types
✓ knowject-api-to-types/agents/openai.yaml structure
→ Codex adapter shape: knowject-memory-capture
✓ knowject-memory-capture/agents/openai.yaml structure
→ Codex adapter shape: knowject-rag-eval
✓ knowject-rag-eval/agents/openai.yaml structure
→ Codex adapter shape: knowject-mcp-tool-designer
✓ knowject-mcp-tool-designer/agents/openai.yaml structure
→ README.md coverage: knowject-api-to-types
✓ knowject-api-to-types/README.md coverage
→ README.md coverage: knowject-context-init
✓ knowject-context-init/README.md coverage
→ README.md coverage: knowject-mcp-tool-designer
✓ knowject-mcp-tool-designer/README.md coverage
→ README.md coverage: knowject-memory-capture
✓ knowject-memory-capture/README.md coverage
→ README.md coverage: knowject-prd-to-mock
✓ knowject-prd-to-mock/README.md coverage
→ README.md coverage: knowject-rag-eval
✓ knowject-rag-eval/README.md coverage
→ README.md coverage: knowject-read-api
✓ knowject-read-api/README.md coverage
→ README.md coverage: knowject-read-design
✓ knowject-read-design/README.md coverage
→ context.yaml schema validates all examples
✓ all example yamls validate
→ context.yaml schema rejects non-mapping project
✓ non-mapping project reports validation error
→ context.yaml schema rejects forbidden env fields
✓ forbidden env fields report validation errors
→ extract-express-routes.py matches fixture
✓ express extractor matches expected
→ extract-openapi-endpoints.py matches fixture
✓ openapi extractor matches expected
→ generate-typed-client.py matches fixture
✓ typed client generator matches expected
→ extract-brand-brief.py matches fixture
✓ brand brief extractor matches expected
→ extract-framework-profile.py matches antd fixture
✓ framework profile (antd) matches expected
→ extract-framework-profile.py matches shadcn fixture
✓ framework profile (shadcn) matches expected
→ extract-types-from-openapi.py matches fixture
✓ types extractor matches expected
→ extract-types-from-openapi.py quotes invalid property names
✓ invalid property names are quoted
→ rewrite-typed-client.py matches fixture
✓ client rewriter matches expected
→ validate-project-memory.py accepts memory example
✓ memory-capture example validates
→ validate-project-memory.py rejects uncited memory
✓ uncited memory reports validation error
→ validate-rag-eval-cases.py accepts rag eval example
✓ rag-eval example validates
→ validate-rag-eval-cases.py rejects uncited eval cases
✓ uncited rag eval reports validation error
→ mcp-tool-designer schema example parses
✓ mcp-tool-designer schema example validates

Checks: 50 | Failures: 0
All checks passed. -> 50 checks, 0 failures
- OK: install.sh is correct and idempotent -> pass
-  -> pass
- overclaiming grep for complete Agent platform / production-grade MCP platform -> no matches

Risk:
- Low - documentation-only catalog drift fix.

Refs: #8
Refs: #9
@lynxlangya lynxlangya merged commit 83a3bb6 into main May 24, 2026
1 check passed
@lynxlangya lynxlangya deleted the codex/skills-issues-5-9 branch May 24, 2026 08:00
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

1 participant