feat: add mosaic ops skills (portainer, gitea, woodpecker, deploy, orchestrator)
- mosaic-portainer: stack list/status/redeploy/logs via Portainer API scripts - mosaic-gitea: PR/issue/milestone ops for git.mosaicstack.dev - mosaic-woodpecker: pipeline status, trigger, CI wait - mosaic-deploy: full end-to-end deploy flow (push → CI → merge → redeploy) - mosaic-orchestrator: mission init/run/status + worker launch rules
This commit is contained in:
97
skills/mosaic-gitea/SKILL.md
Normal file
97
skills/mosaic-gitea/SKILL.md
Normal file
@@ -0,0 +1,97 @@
|
||||
---
|
||||
name: mosaic-gitea
|
||||
description: Interact with Gitea repositories on git.mosaicstack.dev — create/merge/close PRs, manage issues, milestones, and CI queue waits. Use when working with Mosaic Stack git repos. Wraps scripts in ~/.config/mosaic/tools/git/. Works on both Gitea and GitHub (auto-detected via detect-platform.sh).
|
||||
---
|
||||
|
||||
# mosaic-gitea
|
||||
|
||||
Git operations via Mosaic wrapper scripts. Platform-aware (Gitea or GitHub).
|
||||
|
||||
## Setup
|
||||
|
||||
Scripts auto-detect platform from git remote. Run from inside the repo directory.
|
||||
|
||||
For force-merge (branch protection bypass):
|
||||
```bash
|
||||
GITEA_TOKEN=$(cat ~/.config/mosaic/credentials/gitea.env | grep TOKEN | cut -d= -f2)
|
||||
```
|
||||
|
||||
Or use the credentials loader:
|
||||
```bash
|
||||
source ~/.config/mosaic/tools/_lib/credentials.sh
|
||||
load_credentials gitea-mosaicstack
|
||||
# Exports: GITEA_TOKEN, GITEA_URL
|
||||
```
|
||||
|
||||
## Script Reference
|
||||
|
||||
All scripts in `~/.config/mosaic/tools/git/`.
|
||||
|
||||
### Pull Requests
|
||||
|
||||
| Script | Purpose | Key flags |
|
||||
|---|---|---|
|
||||
| `pr-create.sh` | Create a PR | `-t "Title" [-b "Body"] [-B base] [-H head] [-i issue#]` |
|
||||
| `pr-list.sh` | List open PRs | `[-s state]` |
|
||||
| `pr-view.sh` | View PR details | `-n <pr#>` |
|
||||
| `pr-merge.sh` | Squash-merge a PR | `-n <pr#> [-d]` (delete branch) |
|
||||
| `pr-close.sh` | Close a PR | `-n <pr#>` |
|
||||
| `pr-diff.sh` | Show PR diff | `-n <pr#>` |
|
||||
| `pr-review.sh` | Submit a review | `-n <pr#> [-a approve\|request-changes]` |
|
||||
| `pr-ci-wait.sh` | Wait for CI on PR | `-n <pr#>` |
|
||||
| `pr-metadata.sh` | Get PR metadata as JSON | `-n <pr#>` |
|
||||
|
||||
### Issues
|
||||
|
||||
| Script | Purpose | Key flags |
|
||||
|---|---|---|
|
||||
| `issue-create.sh` | Create an issue | `-t "Title" [-b "Body"] [-l labels] [-m milestone]` |
|
||||
| `issue-list.sh` | List issues | `[-s state] [-l label]` |
|
||||
| `issue-view.sh` | View issue | `-n <issue#>` |
|
||||
| `issue-close.sh` | Close issue | `-n <issue#>` |
|
||||
| `issue-comment.sh` | Add comment | `-n <issue#> -c "Comment"` |
|
||||
| `issue-assign.sh` | Assign issue | `-n <issue#> -u username` |
|
||||
| `issue-edit.sh` | Edit issue | `-n <issue#> [-t title] [-b body]` |
|
||||
|
||||
### Milestones
|
||||
|
||||
| Script | Purpose | Key flags |
|
||||
|---|---|---|
|
||||
| `milestone-create.sh` | Create milestone | `-t "Title" [-d "due date"]` |
|
||||
| `milestone-list.sh` | List milestones | — |
|
||||
| `milestone-close.sh` | Close milestone | `-n <number>` |
|
||||
|
||||
### CI / Queue
|
||||
|
||||
| Script | Purpose | Key flags |
|
||||
|---|---|---|
|
||||
| `ci-queue-wait.sh` | Wait for CI queue slot | `[-t timeout] [-B branch]` |
|
||||
| `detect-platform.sh` | Detect git platform | outputs `gitea` or `github` |
|
||||
|
||||
## Common Workflows
|
||||
|
||||
**Create PR from current branch:**
|
||||
```bash
|
||||
cd ~/src/<repo>
|
||||
~/.config/mosaic/tools/git/pr-create.sh -t "feat: my feature" -b "Description" -i <issue#>
|
||||
```
|
||||
|
||||
**Merge a PR (squash, with CI queue guard):**
|
||||
```bash
|
||||
cd ~/src/<repo>
|
||||
~/.config/mosaic/tools/git/pr-merge.sh -n <pr#> -d
|
||||
```
|
||||
|
||||
**Force-merge bypassing branch protection:**
|
||||
```bash
|
||||
GITEA_TOKEN=$(cat ~/.config/mosaic/credentials/gitea.env | grep TOKEN | cut -d= -f2)
|
||||
curl -X POST "https://git.mosaicstack.dev/api/v1/repos/<org>/<repo>/pulls/<PR>/merge" \
|
||||
-H "Authorization: token $GITEA_TOKEN" -H "Content-Type: application/json" \
|
||||
-d '{"Do":"squash","force_merge":true}'
|
||||
```
|
||||
|
||||
## Notes
|
||||
|
||||
- Mosaic policy: squash merges only, targeting `main`
|
||||
- Gitea SSH: `git@git.mosaicstack.dev` → resolves via `~/.ssh/config` to `10.1.1.90:2222`
|
||||
- Workers push branches and open PRs but **never merge** — orchestrator handles merges
|
||||
Reference in New Issue
Block a user