Skip to content

docs: Add Skill, centralize contributing docs and de-duplicate readme#572

Open
1012Charan wants to merge 1 commit intomeshery:masterfrom
1012Charan:docs/highlight-schema-driven-development
Open

docs: Add Skill, centralize contributing docs and de-duplicate readme#572
1012Charan wants to merge 1 commit intomeshery:masterfrom
1012Charan:docs/highlight-schema-driven-development

Conversation

@1012Charan
Copy link
Copy Markdown
Contributor

@1012Charan 1012Charan commented Jan 15, 2026

Description

Centralizes contributing documentation and makes Schema-Driven Development (SDD) prominently visible across all documentation entry points. Also introduces a local skill to make SDD guidance accessible to AI agents.

Changes

1. New Skill for LLMs

  • Added .github/skills/contribute-to-schemas/SKILL.md
    • Provides a self-contained, local guide for AI agents/LLMs on how to contribute to schemas.
    • Addresses feedback that LLMs struggle to access cross-repo documentation (meshery/docs).
    • Contains all necessary SDD context: directory structure, naming conventions, api.yml patterns, and workflow steps.
    • Formatted strictly to match existing skills.

2. Documentation Centralization

  • README.md: Slimmed down, removed content duplicated in CONTRIBUTING.md.
  • CONTRIBUTING.md: Consolidated detailed info (naming conventions, code gen, RTK usage) and fixed broken links.
  • AGENTS.md: Updated to reference the new local skill for comprehensive guidance.

Fixes #571

Signed commits

  • Yes, I signed my commits.

@github-actions github-actions bot added the area/ci Continuous integration | Build and release label Jan 15, 2026
@gemini-code-assist
Copy link
Copy Markdown
Contributor

Summary of Changes

Hello @1012Charan, 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 refines the project's documentation by centralizing contribution guidelines and explicitly emphasizing the Schema-Driven Development (SDD) paradigm. The changes aim to provide a clearer, more organized, and comprehensive guide for developers, ensuring that the project's core development philosophy is immediately apparent and well-supported with detailed instructions.

Highlights

  • Documentation Centralization: Consolidated contributing guidelines into CONTRIBUTING.md from README.md to provide a single, comprehensive source for contributors.
  • Schema-Driven Development (SDD) Emphasis: Prominently highlighted the SDD approach across README.md, CONTRIBUTING.md, AGENTS.md, and build/README.md to reinforce its importance and provide immediate context.
  • Improved CONTRIBUTING.md Detail: Expanded CONTRIBUTING.md with in-depth sections on schema directory structure, naming conventions, code generation specifics, and usage of RTK Query clients, offering a complete guide for schema contributors.
  • Streamlined README.md: Simplified the main README.md by removing duplicated content and moving detailed contribution information to CONTRIBUTING.md, while adding quick start and package usage examples for immediate utility.
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.

Copy link
Copy Markdown
Contributor

@gemini-code-assist gemini-code-assist bot left a comment

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 effectively centralizes the contributing documentation into CONTRIBUTING.md, making the README.md more concise and focused. The emphasis on Schema-Driven Development is now clearer across the documentation. The overall structure is much improved. I've identified a few opportunities to enhance the new documentation by simplifying command examples and correcting code snippets to ensure they are complete and error-free. These suggestions aim to further improve clarity and prevent potential issues for contributors.

Comment on lines +245 to +261
```javascript
import { combineReducers, configureStore } from "@reduxjs/toolkit";
import { cloudApi as cloudBaseApi } from "@meshery/schemas/dist/cloudApi";

const rootReducer = combineReducers({
// your reducers...
[cloudBaseApi.reducerPath]: cloudBaseApi.reducer,
});

export const store = configureStore({
reducer: rootReducer,
middleware: getDefaultMiddleware =>
getDefaultMiddleware().concat(cloudBaseApi.middleware)
});

setupListeners(store.dispatch);
```
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

medium

The setupListeners function is used in this Redux store configuration example, but it is not imported. This will cause an error for anyone copying this code. You should add the import from @reduxjs/toolkit/query to make the snippet complete and runnable.

Suggested change
```javascript
import { combineReducers, configureStore } from "@reduxjs/toolkit";
import { cloudApi as cloudBaseApi } from "@meshery/schemas/dist/cloudApi";
const rootReducer = combineReducers({
// your reducers...
[cloudBaseApi.reducerPath]: cloudBaseApi.reducer,
});
export const store = configureStore({
reducer: rootReducer,
middleware: getDefaultMiddleware =>
getDefaultMiddleware().concat(cloudBaseApi.middleware)
});
setupListeners(store.dispatch);
```
import { combineReducers, configureStore } from "@reduxjs/toolkit";
import { setupListeners } from "@reduxjs/toolkit/query";
import { cloudApi as cloudBaseApi } from "@meshery/schemas/dist/cloudApi";
const rootReducer = combineReducers({
// your reducers...
[cloudBaseApi.reducerPath]: cloudBaseApi.reducer,
});
export const store = configureStore({
reducer: rootReducer,
middleware: getDefaultMiddleware =>
getDefaultMiddleware().concat(cloudBaseApi.middleware)
});
setupListeners(store.dispatch);

Comment on lines +265 to 280
```javascript
import { useGetPlansQuery, useCreateDesignMutation } from "@meshery/schemas/dist/cloudApi";

function MyComponent() {
const { data: plans, isLoading, error } = useGetPlansQuery();

if (isLoading) return <div>Loading...</div>;
if (error) return <div>Error loading plans</div>;

return (
<div>
{plans.map(plan => <div key={plan.id}>{plan.name}</div>)}
</div>
);
}
```
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

medium

In this React component example, the plans variable will be undefined on the initial render when isLoading is true. After isLoading becomes false, if there's no error, plans.map will be called. However, plans might still be undefined before the data is fetched, which would cause a runtime error. It's safer to use optional chaining (?.) to prevent this.

Suggested change
```javascript
import { useGetPlansQuery, useCreateDesignMutation } from "@meshery/schemas/dist/cloudApi";
function MyComponent() {
const { data: plans, isLoading, error } = useGetPlansQuery();
if (isLoading) return <div>Loading...</div>;
if (error) return <div>Error loading plans</div>;
return (
<div>
{plans.map(plan => <div key={plan.id}>{plan.name}</div>)}
</div>
);
}
```
import { useGetPlansQuery, useCreateDesignMutation } from "@meshery/schemas/dist/cloudApi";
function MyComponent() {
const { data: plans, isLoading, error } = useGetPlansQuery();
if (isLoading) return <div>Loading...</div>;
if (error) return <div>Error loading plans</div>;
return (
<div>
{plans?.map(plan => <div key={plan.id}>{plan.name}</div>)}
</div>
);
}

CONTRIBUTING.md Outdated
Comment on lines +344 to +347
make build # Run full build
npm run build # Build TypeScript distribution
go test ./... # Run Go tests
npx @redocly/cli lint schemas/constructs/v1beta1/model/api.yml # Lint OpenAPI
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

medium

The commands listed for testing can be simplified. The make build target already executes npm run build (via build-ts) and go test ./... (via test-golang). Listing these commands separately is redundant and could be confusing. Simplifying this section will make the testing instructions more straightforward.

Suggested change
make build # Run full build
npm run build # Build TypeScript distribution
go test ./... # Run Go tests
npx @redocly/cli lint schemas/constructs/v1beta1/model/api.yml # Lint OpenAPI
make build # Run full build, which includes tests
npx @redocly/cli lint schemas/constructs/v1beta1/model/api.yml # Lint a specific OpenAPI file

README.md Outdated
Comment on lines +52 to +54
make setup && npm install # Install dependencies
make build # Generate Go, TypeScript, RTK Query
npm run build # Build TypeScript distribution
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

medium

The Quick Start commands can be simplified. make setup already runs npm install, and make build includes the npm run build step. Providing redundant commands can be confusing for new contributors. Simplifying this will make the instructions clearer and more concise.

Suggested change
make setup && npm install # Install dependencies
make build # Generate Go, TypeScript, RTK Query
npm run build # Build TypeScript distribution
make setup # Install dependencies
make build # Generate all code, build TS dist, and run tests

@1012Charan 1012Charan force-pushed the docs/highlight-schema-driven-development branch 3 times, most recently from 9e21bec to 7257c68 Compare January 15, 2026 12:01
@1012Charan 1012Charan changed the title docs: centralize contributing docs and highlight Schema-Driven Development docs: centralize contributing docs and de-duplicate readme Jan 16, 2026
Copy link
Copy Markdown
Member

@PragalvaXFREZ PragalvaXFREZ left a comment

Choose a reason for hiding this comment

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

Great work on the centralization! Left 2 comments on minor issues.

Holding off on approval until Lee's feedback about restoring/SKILLS is addressed.

Comment on lines +88 to +95
### Schema File Roles

| File | Purpose |
|------|---------|
| `api.yml` | **Index file** - aggregates all subschemas via `$ref` and defines API endpoints for the construct |
| `<construct>.yaml` | **Subschema** - defines the main data model (noun) for the construct |
| `<construct>_core.yml` | **Subschema** - defines core/shared types used by the main schema |
| `templates/*.json` | **Templates** - example instances with default values |
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

The "Schema File Roles" table appears twice (also at lines 376-383). Remove the duplicate.


- [GitHub Issues](https://github.com/meshery/schemas/issues) - Report bugs or request features
- [Community Slack](https://slack.meshery.io) - Real-time discussions with maintainers
- [Weekly Meetings](https://meshery.io/community/calendar) - Join our community calls
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Suggested change
- [Weekly Meetings](https://meshery.io/calendar) - Join our community calls

broken link, needs to be changed

@1012Charan 1012Charan force-pushed the docs/highlight-schema-driven-development branch from 7257c68 to ac39ca3 Compare January 23, 2026 08:18
Signed-off-by: 1012Charan <charanvengala@gmail.com>
@1012Charan 1012Charan force-pushed the docs/highlight-schema-driven-development branch from ac39ca3 to f06e54f Compare January 23, 2026 08:23
@1012Charan
Copy link
Copy Markdown
Contributor Author

Thanks for the review @PragalvaXFREZ , I have addressed the issues

@1012Charan 1012Charan changed the title docs: centralize contributing docs and de-duplicate readme docs: Add Skill, centralize contributing docs and de-duplicate readme Jan 23, 2026
@PragalvaXFREZ
Copy link
Copy Markdown
Member

Great work! LGTM.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area/ci Continuous integration | Build and release

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Docs]Centralize contributing docs and highlight Schema-Driven Development

2 participants