Initial commit
This commit is contained in:
160
skills/references/project-types.md
Normal file
160
skills/references/project-types.md
Normal file
@@ -0,0 +1,160 @@
|
||||
# Supported Project Types
|
||||
|
||||
This document describes all project types supported by auto-release-manager and their version file locations.
|
||||
|
||||
## Web & Backend
|
||||
|
||||
### Node.js
|
||||
- **Detection file**: `package.json`
|
||||
- **Version location**: `package.json` → `version` field
|
||||
- **Format**: JSON
|
||||
- **Example**:
|
||||
```json
|
||||
{
|
||||
"name": "my-project",
|
||||
"version": "1.2.3"
|
||||
}
|
||||
```
|
||||
|
||||
### Python
|
||||
- **Detection files**: `pyproject.toml` or `setup.py`
|
||||
- **Version location**:
|
||||
- `pyproject.toml` → `project.version` or `tool.poetry.version`
|
||||
- `setup.py` → `version=` parameter
|
||||
- **Format**: TOML or Python
|
||||
- **Example**:
|
||||
```toml
|
||||
[project]
|
||||
name = "my-project"
|
||||
version = "1.2.3"
|
||||
```
|
||||
|
||||
### Rust
|
||||
- **Detection file**: `Cargo.toml`
|
||||
- **Version location**: `Cargo.toml` → `package.version`
|
||||
- **Format**: TOML
|
||||
- **Example**:
|
||||
```toml
|
||||
[package]
|
||||
name = "my-project"
|
||||
version = "1.2.3"
|
||||
```
|
||||
|
||||
### Go
|
||||
- **Detection file**: `go.mod`
|
||||
- **Version location**: `VERSION` file (custom)
|
||||
- **Format**: Plain text
|
||||
- **Note**: Go doesn't have built-in versioning in go.mod
|
||||
|
||||
## Game Engines
|
||||
|
||||
### Unity
|
||||
- **Detection file**: `ProjectSettings/ProjectSettings.asset`
|
||||
- **Version locations**:
|
||||
1. `version.json` (Primary source of truth) → `version` field
|
||||
2. `ProjectSettings/ProjectSettings.asset` → `bundleVersion` field
|
||||
- **Format**: JSON + Unity YAML
|
||||
- **Workflow**: Update `version.json` first, then sync to `ProjectSettings.asset`
|
||||
- **Example**:
|
||||
|
||||
`version.json`:
|
||||
```json
|
||||
{
|
||||
"version": "1.2.3",
|
||||
"buildNumber": 42
|
||||
}
|
||||
```
|
||||
|
||||
`ProjectSettings.asset`:
|
||||
```yaml
|
||||
PlayerSettings:
|
||||
bundleVersion: 1.2.3
|
||||
```
|
||||
|
||||
### Unreal Engine
|
||||
- **Detection file**: `*.uproject`
|
||||
- **Version location**: `<ProjectName>.uproject` → `Version` or `EngineAssociation`
|
||||
- **Format**: JSON
|
||||
- **Example**:
|
||||
```json
|
||||
{
|
||||
"FileVersion": 3,
|
||||
"EngineAssociation": "5.3",
|
||||
"Version": "1.2.3"
|
||||
}
|
||||
```
|
||||
|
||||
### Godot
|
||||
- **Detection file**: `project.godot`
|
||||
- **Version location**: `project.godot` → `config/version`
|
||||
- **Format**: INI-like
|
||||
- **Example**:
|
||||
```ini
|
||||
[application]
|
||||
config/name="MyGame"
|
||||
config/version="1.2.3"
|
||||
```
|
||||
|
||||
## Plugins & Extensions
|
||||
|
||||
### Claude Code Plugin
|
||||
- **Detection file**: `.claude-plugin/plugin.json`
|
||||
- **Version location**: `.claude-plugin/plugin.json` → `version`
|
||||
- **Format**: JSON
|
||||
- **Example**:
|
||||
```json
|
||||
{
|
||||
"name": "my-plugin",
|
||||
"version": "1.2.3",
|
||||
"description": "..."
|
||||
}
|
||||
```
|
||||
|
||||
### VS Code Extension
|
||||
- **Detection file**: `package.json` + `package.nls.json`
|
||||
- **Version location**: `package.json` → `version`
|
||||
- **Format**: JSON
|
||||
- **Same as Node.js projects**
|
||||
|
||||
### Browser Extension
|
||||
- **Detection file**: `manifest.json`
|
||||
- **Version location**: `manifest.json` → `version`
|
||||
- **Format**: JSON
|
||||
- **Example**:
|
||||
```json
|
||||
{
|
||||
"manifest_version": 3,
|
||||
"name": "My Extension",
|
||||
"version": "1.2.3"
|
||||
}
|
||||
```
|
||||
|
||||
## Generic Projects
|
||||
|
||||
### Plain VERSION file
|
||||
- **Detection file**: `VERSION` or `version.txt`
|
||||
- **Version location**: Content of file
|
||||
- **Format**: Plain text
|
||||
- **Example**:
|
||||
```
|
||||
1.2.3
|
||||
```
|
||||
|
||||
## Version Format
|
||||
|
||||
All projects follow **Semantic Versioning (semver)**:
|
||||
|
||||
```
|
||||
MAJOR.MINOR.PATCH
|
||||
|
||||
1.2.3
|
||||
│ │ │
|
||||
│ │ └─ PATCH: Bug fixes
|
||||
│ └─── MINOR: New features (backward compatible)
|
||||
└───── MAJOR: Breaking changes
|
||||
```
|
||||
|
||||
Examples:
|
||||
- `1.0.0` → `1.0.1` (patch: bug fix)
|
||||
- `1.0.1` → `1.1.0` (minor: new feature)
|
||||
- `1.1.0` → `2.0.0` (major: breaking change)
|
||||
140
skills/references/unity-guide.md
Normal file
140
skills/references/unity-guide.md
Normal file
@@ -0,0 +1,140 @@
|
||||
# Unity Project Version Management
|
||||
|
||||
## Overview
|
||||
|
||||
Unity projects use a dual-file approach for version management:
|
||||
1. **`version.json`** - Single source of truth (easy to read/edit)
|
||||
2. **`ProjectSettings/ProjectSettings.asset`** - Auto-synced (used by Unity builds)
|
||||
|
||||
## File Structure
|
||||
|
||||
```
|
||||
MyUnityProject/
|
||||
├── version.json # Primary source
|
||||
├── ProjectSettings/
|
||||
│ └── ProjectSettings.asset # Auto-synced
|
||||
└── Assets/
|
||||
└── ...
|
||||
```
|
||||
|
||||
## version.json (Primary)
|
||||
|
||||
Create this file at project root:
|
||||
|
||||
```json
|
||||
{
|
||||
"version": "1.2.3",
|
||||
"buildNumber": 42,
|
||||
"releaseDate": "2025-10-20"
|
||||
}
|
||||
```
|
||||
|
||||
**Fields:**
|
||||
- `version` (required): Semantic version (MAJOR.MINOR.PATCH)
|
||||
- `buildNumber` (optional): Incremental build number
|
||||
- `releaseDate` (optional): Release date in YYYY-MM-DD format
|
||||
|
||||
## ProjectSettings.asset (Auto-sync)
|
||||
|
||||
The `bundleVersion` field in this file is automatically synced from `version.json`:
|
||||
|
||||
```yaml
|
||||
PlayerSettings:
|
||||
bundleVersion: 1.2.3
|
||||
AndroidBundleVersionCode: 42
|
||||
buildNumber:
|
||||
iOS: 42
|
||||
```
|
||||
|
||||
## Workflow
|
||||
|
||||
### Manual Update
|
||||
|
||||
1. Edit `version.json`:
|
||||
```json
|
||||
{
|
||||
"version": "1.3.0"
|
||||
}
|
||||
```
|
||||
|
||||
2. Run sync script:
|
||||
```bash
|
||||
python scripts/sync_unity_version.py
|
||||
```
|
||||
|
||||
3. Commit both files:
|
||||
```bash
|
||||
git add version.json ProjectSettings/ProjectSettings.asset
|
||||
git commit -m "chore: bump version to 1.3.0"
|
||||
```
|
||||
|
||||
### Automatic Update (with auto-release-manager)
|
||||
|
||||
The skill handles everything automatically:
|
||||
|
||||
```
|
||||
1. Update version.json → 1.3.0
|
||||
2. Sync to ProjectSettings.asset
|
||||
3. Git commit both files
|
||||
4. Create tag v1.3.0
|
||||
5. Push to remote
|
||||
```
|
||||
|
||||
## Benefits of Dual-File Approach
|
||||
|
||||
✅ **Easy Version Management**
|
||||
- `version.json` is simple JSON, easy to read/edit
|
||||
- Clean git diffs
|
||||
|
||||
✅ **Unity Integration**
|
||||
- `ProjectSettings.asset` is used by Unity builds
|
||||
- Version automatically appears in build
|
||||
|
||||
✅ **Automated Sync**
|
||||
- Scripts ensure consistency
|
||||
- No manual errors
|
||||
|
||||
✅ **Extended Metadata**
|
||||
- `version.json` can store additional info (buildNumber, releaseDate)
|
||||
- `ProjectSettings.asset` only has bundleVersion
|
||||
|
||||
## Common Issues
|
||||
|
||||
### Q: Why not just use ProjectSettings.asset?
|
||||
|
||||
A: ProjectSettings.asset is a YAML file that's hard to read and edit manually. It also contains hundreds of other settings, making git diffs noisy.
|
||||
|
||||
### Q: Can I use only version.json?
|
||||
|
||||
A: No. Unity reads bundleVersion from ProjectSettings.asset for builds. Both files are needed.
|
||||
|
||||
### Q: What if files get out of sync?
|
||||
|
||||
A: Run `python scripts/sync_unity_version.py` to sync from version.json (source of truth) to ProjectSettings.asset.
|
||||
|
||||
## Example: Version Update
|
||||
|
||||
**Before:**
|
||||
```json
|
||||
// version.json
|
||||
{
|
||||
"version": "1.2.3",
|
||||
"buildNumber": 42
|
||||
}
|
||||
```
|
||||
|
||||
**After:**
|
||||
```json
|
||||
// version.json
|
||||
{
|
||||
"version": "1.3.0",
|
||||
"buildNumber": 43
|
||||
}
|
||||
```
|
||||
|
||||
**Auto-synced:**
|
||||
```yaml
|
||||
# ProjectSettings.asset
|
||||
PlayerSettings:
|
||||
bundleVersion: 1.3.0 # ← Automatically updated
|
||||
```
|
||||
152
skills/references/unreal-guide.md
Normal file
152
skills/references/unreal-guide.md
Normal file
@@ -0,0 +1,152 @@
|
||||
# Unreal Engine Project Version Management
|
||||
|
||||
## Overview
|
||||
|
||||
Unreal Engine projects use `.uproject` JSON file for project configuration and versioning.
|
||||
|
||||
## File Structure
|
||||
|
||||
```
|
||||
MyUnrealProject/
|
||||
├── MyGame.uproject # Project file with version
|
||||
├── Config/
|
||||
│ └── DefaultGame.ini # Game config
|
||||
├── Source/
|
||||
│ └── ...
|
||||
└── Content/
|
||||
└── ...
|
||||
```
|
||||
|
||||
## .uproject File
|
||||
|
||||
The project file is a JSON file containing project metadata:
|
||||
|
||||
```json
|
||||
{
|
||||
"FileVersion": 3,
|
||||
"EngineAssociation": "5.3",
|
||||
"Category": "",
|
||||
"Description": "",
|
||||
"Version": "1.2.3",
|
||||
"Modules": [
|
||||
{
|
||||
"Name": "MyGame",
|
||||
"Type": "Runtime",
|
||||
"LoadingPhase": "Default"
|
||||
}
|
||||
],
|
||||
"Plugins": [
|
||||
...
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
**Version Fields:**
|
||||
- `Version` (custom): Semantic version of your project
|
||||
- `EngineAssociation`: Unreal Engine version (e.g., "5.3", "5.4")
|
||||
|
||||
## Version Update Workflow
|
||||
|
||||
### Manual Update
|
||||
|
||||
1. Edit `.uproject` file:
|
||||
```json
|
||||
{
|
||||
"Version": "1.3.0"
|
||||
}
|
||||
```
|
||||
|
||||
2. Commit:
|
||||
```bash
|
||||
git add MyGame.uproject
|
||||
git commit -m "chore: bump version to 1.3.0"
|
||||
```
|
||||
|
||||
### Automatic Update (with auto-release-manager)
|
||||
|
||||
```
|
||||
1. Detect .uproject file
|
||||
2. Update Version field → 1.3.0
|
||||
3. Git commit
|
||||
4. Create tag v1.3.0
|
||||
5. Push to remote
|
||||
```
|
||||
|
||||
## DefaultGame.ini
|
||||
|
||||
Optional: You can also store version in `Config/DefaultGame.ini`:
|
||||
|
||||
```ini
|
||||
[/Script/EngineSettings.GeneralProjectSettings]
|
||||
ProjectID=...
|
||||
ProjectName=MyGame
|
||||
ProjectVersion=1.2.3
|
||||
CompanyName=MyCompany
|
||||
```
|
||||
|
||||
This is useful for in-game version display.
|
||||
|
||||
## Build Versioning
|
||||
|
||||
For packaging builds, you may want to configure:
|
||||
|
||||
**Config/DefaultGame.ini:**
|
||||
```ini
|
||||
[/Script/UnrealEd.ProjectPackagingSettings]
|
||||
BuildConfiguration=PPBC_Shipping
|
||||
ProjectVersion=1.2.3
|
||||
```
|
||||
|
||||
## Example: Full Update
|
||||
|
||||
When updating version from 1.2.3 to 1.3.0:
|
||||
|
||||
**Files to update:**
|
||||
1. `MyGame.uproject` → `Version: "1.3.0"`
|
||||
2. `Config/DefaultGame.ini` → `ProjectVersion=1.3.0` (if used)
|
||||
|
||||
**auto-release-manager handles:**
|
||||
- Detecting .uproject file
|
||||
- Updating Version field
|
||||
- Git commit + tag
|
||||
- Push to remote
|
||||
|
||||
## Common Issues
|
||||
|
||||
### Q: Is Version field required in .uproject?
|
||||
|
||||
A: No, it's optional. But recommended for version tracking.
|
||||
|
||||
### Q: What about EngineAssociation?
|
||||
|
||||
A: EngineAssociation is the UE version (e.g., "5.3"). Don't confuse it with your project version.
|
||||
|
||||
### Q: Can I use multiple version fields?
|
||||
|
||||
A: Yes! You can maintain:
|
||||
- `.uproject` → Version (project version)
|
||||
- `DefaultGame.ini` → ProjectVersion (in-game display)
|
||||
- `version.json` → Custom metadata
|
||||
|
||||
Just ensure they stay synced.
|
||||
|
||||
## Recommended Approach
|
||||
|
||||
**Best Practice:**
|
||||
1. Use `.uproject` → Version as primary
|
||||
2. Optionally sync to `DefaultGame.ini` for in-game display
|
||||
3. Use auto-release-manager to keep everything consistent
|
||||
|
||||
**Example:**
|
||||
```json
|
||||
// MyGame.uproject
|
||||
{
|
||||
"Version": "1.3.0"
|
||||
}
|
||||
```
|
||||
|
||||
```ini
|
||||
; Config/DefaultGame.ini
|
||||
[/Script/EngineSettings.GeneralProjectSettings]
|
||||
ProjectVersion=1.3.0
|
||||
```
|
||||
Reference in New Issue
Block a user