Skip to content

Commit 8bd4493

Browse files
committed
chore: initialize repository structure and freeze project specifications
0 parents  commit 8bd4493

47 files changed

Lines changed: 12246 additions & 0 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/workflows/deploy.yml

Whitespace-only changes.

.github/workflows/validate.yml

Whitespace-only changes.

.gitignore

Whitespace-only changes.

CHANGELOG.md

Whitespace-only changes.

CONTRIBUTING.md

Lines changed: 266 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,266 @@
1+
# Contributing to YGit Schema
2+
3+
Thank you for your interest in contributing to **YGit Schema**.
4+
5+
This repository contains the **official JSON Schema specifications** for the YGit ecosystem. These schemas define the structure and validation rules for all official YGit file formats.
6+
7+
Our goal is to keep every schema stable, versioned, backward-compatible, and easy for developers and tools to consume.
8+
9+
---
10+
11+
# Repository Purpose
12+
13+
This repository is the canonical source for all YGit JSON Schemas.
14+
15+
Examples include:
16+
17+
* Project Schema
18+
* Workspace Schema
19+
* Package Schema
20+
* Plugin Schema
21+
* Configuration Schema
22+
* Lock File Schema
23+
24+
Only schema definitions and related resources belong in this repository.
25+
26+
---
27+
28+
# Repository Structure
29+
30+
```text
31+
v1/
32+
project.json
33+
workspace.json
34+
package.json
35+
plugin.json
36+
config.json
37+
lock.json
38+
39+
v2/
40+
...
41+
42+
examples/
43+
test/
44+
scripts/
45+
```
46+
47+
---
48+
49+
# Before You Contribute
50+
51+
Before creating an Issue or Pull Request:
52+
53+
* Search existing Issues.
54+
* Search existing Pull Requests.
55+
* Verify that the proposed change has not already been discussed.
56+
* Keep discussions focused on schema specifications.
57+
58+
---
59+
60+
# Design Principles
61+
62+
Every schema should follow these principles:
63+
64+
* Simple
65+
* Predictable
66+
* Explicit
67+
* Stable
68+
* Versioned
69+
* Tool-friendly
70+
* Language-independent
71+
72+
Avoid unnecessary complexity.
73+
74+
---
75+
76+
# JSON Schema Standard
77+
78+
All schemas must use:
79+
80+
* JSON Schema Draft 2020-12
81+
* UTF-8 encoding
82+
* Four-space indentation
83+
* Unix line endings (LF)
84+
85+
---
86+
87+
# Naming Conventions
88+
89+
Property names should use:
90+
91+
```text
92+
camelCase
93+
```
94+
95+
Example:
96+
97+
```json
98+
{
99+
"projectName": "",
100+
"projectVersion": "",
101+
"minimumCliVersion": ""
102+
}
103+
```
104+
105+
Avoid:
106+
107+
* Spaces
108+
* PascalCase
109+
* snake_case
110+
* kebab-case
111+
112+
unless compatibility requires otherwise.
113+
114+
---
115+
116+
# Schema Versioning
117+
118+
Released schema versions are immutable.
119+
120+
Never introduce breaking changes to an existing released version.
121+
122+
Instead, create a new version.
123+
124+
Good:
125+
126+
```text
127+
v1/project.json
128+
v2/project.json
129+
```
130+
131+
Avoid:
132+
133+
```text
134+
Modify v1 after release
135+
```
136+
137+
---
138+
139+
# Backward Compatibility
140+
141+
Whenever possible:
142+
143+
* Preserve existing fields.
144+
* Preserve existing behavior.
145+
* Introduce new functionality using optional properties.
146+
* Reserve breaking changes for new schema versions only.
147+
148+
---
149+
150+
# Schema Guidelines
151+
152+
Each schema should:
153+
154+
* Have a descriptive title.
155+
* Include a description.
156+
* Define the object type.
157+
* Validate required properties.
158+
* Validate property types.
159+
* Reject invalid structures where appropriate.
160+
161+
Every property should include a meaningful description whenever practical.
162+
163+
---
164+
165+
# Examples
166+
167+
Whenever a schema changes:
168+
169+
* Update example files.
170+
* Add new examples if necessary.
171+
* Keep examples valid.
172+
173+
Examples should represent real-world usage.
174+
175+
---
176+
177+
# Testing
178+
179+
Every schema should be validated before submitting a Pull Request.
180+
181+
Please verify:
182+
183+
* Valid examples pass validation.
184+
* Invalid examples fail validation.
185+
* No existing schema behavior is unintentionally changed.
186+
187+
---
188+
189+
# Documentation
190+
191+
If a schema introduces new behavior:
192+
193+
* Update the README if necessary.
194+
* Update examples.
195+
* Document any migration requirements.
196+
197+
---
198+
199+
# Commit Message Convention
200+
201+
Use clear commit messages.
202+
203+
Examples:
204+
205+
```text
206+
feat(project): add minimumCliVersion
207+
208+
feat(plugin): introduce plugin permissions
209+
210+
fix(config): correct default property type
211+
212+
docs: update schema documentation
213+
214+
test: add invalid project examples
215+
```
216+
217+
---
218+
219+
# Pull Request Checklist
220+
221+
Before submitting a Pull Request, verify:
222+
223+
* Schema is valid.
224+
* Examples are updated.
225+
* Tests pass.
226+
* No unnecessary breaking changes.
227+
* Documentation is updated where applicable.
228+
229+
---
230+
231+
# Reporting Issues
232+
233+
When reporting an issue, include:
234+
235+
* Schema version
236+
* Schema file
237+
* Expected behavior
238+
* Actual behavior
239+
* Example JSON (if applicable)
240+
241+
---
242+
243+
# Feature Requests
244+
245+
Feature requests should explain:
246+
247+
* The problem being solved.
248+
* The proposed solution.
249+
* Why the change belongs in the schema instead of application logic.
250+
251+
---
252+
253+
# Code of Conduct
254+
255+
Please be respectful and constructive during discussions.
256+
257+
Technical disagreements are welcome.
258+
Personal attacks are not.
259+
260+
---
261+
262+
# License
263+
264+
By contributing to this repository, you agree that your contributions will be licensed under the MIT License.
265+
266+
Thank you for helping improve the YGit ecosystem.

LICENSE

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
# MIT License
2+
3+
Copyright (c) 2026 YGit Contributors
4+
5+
Permission is hereby granted, free of charge, to any person obtaining a copy
6+
of this software and associated documentation files (the "Software"), to deal
7+
in the Software without restriction, including without limitation the rights
8+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9+
copies of the Software, and to permit persons to whom the Software is
10+
furnished to do so, subject to the following conditions:
11+
12+
The above copyright notice and this permission notice shall be included in all
13+
copies or substantial portions of the Software.
14+
15+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21+
SOFTWARE.

0 commit comments

Comments
 (0)