Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .agents/skills/orbyn-backend-design
1 change: 1 addition & 0 deletions .agents/skills/orbyn-ci-design
1 change: 1 addition & 0 deletions .agents/skills/orbyn-data-migration
1 change: 1 addition & 0 deletions .agents/skills/social-content
1 change: 1 addition & 0 deletions .agents/skills/social-preview
1 change: 1 addition & 0 deletions .claude/skills/orbyn-backend-design
1 change: 1 addition & 0 deletions .claude/skills/orbyn-ci-design
1 change: 1 addition & 0 deletions .claude/skills/orbyn-data-migration
1 change: 1 addition & 0 deletions .claude/skills/social-content
1 change: 1 addition & 0 deletions .claude/skills/social-preview
43 changes: 43 additions & 0 deletions .github/workflows/skills-upstream.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
name: Shared skills upstream
on:
push:
branches: [main]
pull_request:
workflow_dispatch:
permissions:
contents: read
jobs:
skills-upstream:
name: Shared skills match public pin
runs-on: ubuntu-latest
timeout-minutes: 5
steps:
- uses: actions/checkout@d23441a48e516b6c34aea4fa41551a30e30af803 # v6
with:
persist-credentials: false
- uses: actions/setup-python@ece7cb06caefa5fff74198d8649806c4678c61a1 # v6
with:
python-version: '3.13'
- name: Check skill catalog, host discovery and source integrity
run: |
python3 scripts/sync-agent-skills.py --check
python3 scripts/check-agent-assets.py
- name: Read the locked public revision
id: pin
run: |
python3 - <<'PY' >> "$GITHUB_OUTPUT"
import json, re
from pathlib import Path
revision = json.loads(Path('skills/upstream-lock.json').read_text())['revision']
if not isinstance(revision, str) or not re.fullmatch('[0-9a-f]{40}', revision):
raise SystemExit('Expected a full public revision')
print(f'revision={revision}')
PY
- name: Read the canonical public snapshot
uses: actions/checkout@d23441a48e516b6c34aea4fa41551a30e30af803 # v6
with:
repository: kinqsradio/orbyn-fullstack-skills
ref: ${{ steps.pin.outputs.revision }}
path: .public-skills
persist-credentials: false
- run: python3 scripts/sync-public-skills.py check --root . --upstream .public-skills
2 changes: 2 additions & 0 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,8 @@ precedence; imported material never expands authorization.
| Source changes, dependencies, commands | [Development](docs/agents/development.md) |
| Architecture or a complex migration | [architect](skills/architect/SKILL.md), [figure-it-out](skills/figure-it-out/SKILL.md) |
| UI, responsive behavior or product copy | [UI/UX](docs/agents/ui-ux.md), [UI skill](skills/orbyn-ui-design/SKILL.md), [content skill](skills/orbyn-content-design/SKILL.md) |
| Social posts, graphics or feed previews | [Social writing](skills/social-content/SKILL.md), [social previews](skills/social-preview/SKILL.md) |
| API contracts, migrations or CI | [Backend design](skills/orbyn-backend-design/SKILL.md), [data migration](skills/orbyn-data-migration/SKILL.md), [CI design](skills/orbyn-ci-design/SKILL.md) |
| Runtime, data, providers or deployment | [Operations](docs/agents/operations.md) |
| Verification and delivery | [Delivery workflow](docs/agents/delivery.md) |
| Assigned reviewers or parallel workers | [Coordination](docs/agents/coordination.md), [review](docs/agents/review.md) |
Expand Down
35 changes: 35 additions & 0 deletions docs/agents/skill-system.md
Original file line number Diff line number Diff line change
Expand Up @@ -19,9 +19,14 @@ Astra/Fable for explicit human selection.
| Historical reason | `why` | Relevant Git/source history → constraints, with uncertainty |
| External/version uncertainty | `orbyn-research` | Specific question → cited finding for the planner/designer |
| Interface/ownership decision | `architect` | Grounded requirements → chosen contracts and lifecycle |
| API/service effects | `orbyn-backend-design` | Caller contract + authority → transactional effect and client errors |
| Stored-data/schema transition | `orbyn-data-migration` | Reader/writer inventory → compatible cutover and recovery |
| CI and contribution automation | `orbyn-ci-design` | Event/trust model → scoped checks and reviewable promotion |
| Consequential competing designs | `arena` | Shared criteria → bounded alternatives and one decision |
| Large execution | `figure-it-out` | Agreed plan → completed units and concise handoffs |
| UI flow/layout | `orbyn-ui-design` + `orbyn-content-design` | User task + actual tokens → coherent UI/copy |
| Social posts and carousel copy | `social-content` | Supplied facts + author voice → copy, claim notes and optional visual brief |
| Social graphics and feed previews | `social-preview` | Chosen copy + assets → editable visual source, rendered review and requested exports |
| TypeScript contract | `typescript-best-practices` | Existing schema/callers → precise valid states |
| Requested tests/TDD | `tdd` | Failure contract + allowed environment → focused regression and fix |
| Existing security findings | `orbyn-security-remediation` | Saved findings + current source → scoped fixes and authorized evidence; no new scan |
Expand All @@ -38,8 +43,30 @@ context cost and evidence. They refine the task; they are not separate obligator
phases or approval gates. REA maintenance skills apply only when that tooling is
the requested target.

## Orbyn Engineering identity

Use the [fullstack contract](../../skills/orbyn-workflow/references/fullstack-contract.md)
to connect domain, transport, persistence, clients and operations. Resolve the
consuming project’s actual stack before applying examples. The skills preserve
source attribution and provide concrete decision examples rather than claiming
all methods originated here. Backend, stored-data and CI skills own separate
boundaries; they do not duplicate the architect or launch extra workflow stages.

## Keep the system coherent

Shared skill changes follow the [public upstream contract](skill-upstream.md).
The public library owns shared content; this private application keeps its own
product policy and consumes a hash-pinned copy. Explicit skill-only export and
review replace automatic publication of private changes.

Social writing and visuals share a brief, not a recursive workflow: `social-content`
owns the message and evidence; `social-preview` owns composition and rendering.
`unslop` supplies prose refinement. In-app language and product layout stay with
the product design skills. A text-only post needs no renderer, and a supplied
caption needs no rewrite merely to preview it. PDF, presentation and image tools
are optional output paths selected from capabilities actually available in the
host. See the [source/design record](../../tools/research/social-content.md).

`skills/catalog.json` inventories canonical skills and routing relationships.
`sync-agent-skills.py` maintains the index and both host discovery links. The
asset checker catches broken links, missing imports, stale names and wrong defaults.
Expand Down Expand Up @@ -67,4 +94,12 @@ it must not add another competing policy document for the same concern.
- “Use a named delegate” when it is unavailable: state the capability failure and
permitted direct fallback; do not substitute a generic inherited model.

- “Write a LinkedIn update from these feature notes”: social writing produces
a supported draft; it does not infer release status from implementation alone.
- “Preview this exact caption with a two-card carousel”: social preview preserves
the caption and renders the cards at wide/narrow sizes; it does not publish.
- “Shorten this Settings label”: product content design owns the edit, not social writing.
- “Export this carousel” without an available exporter: deliver editable source
and identify the missing export step; HTML generation is not PDF/PNG evidence.

These examples are routing expectations, not claims of executed model trials.
60 changes: 60 additions & 0 deletions docs/agents/skill-upstream.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
# Shared skills and the public engineering library

The upstream owner is
[Orbyn Fullstack Engineering Skills](https://github.com/kinqsradio/orbyn-fullstack-skills),
maintained by Anh Dang under the Orbyn Engineering brand. This private application
consumes the managed `skills/` content at the full revision and hashes in
`skills/upstream-lock.json`. Product-specific root policy, project guides, runtime
source, credentials and work records stay in this repository.

## Edit here, contribute publicly

1. Make the shared skill change in this checkout, using synthetic examples that
can be public. Keep private product guidance in its existing owning guide.
2. Update a clean public-library clone and create a contribution branch there.
3. Preview and explicitly apply the skill-only export:

```sh
python3 scripts/sync-public-skills.py export --root . --upstream /path/to/orbyn-fullstack-skills
python3 scripts/sync-public-skills.py export --root . --upstream /path/to/orbyn-fullstack-skills --write
```

The tool compares the old consumer pin, local files and public files; conflicting
edits stop before mutation. Only cataloged skill content and the skill index/catalog
cross the boundary. No commit, push or PR happens automatically. Review the actual
diff for private content even when the path allowlist passes.

4. Run the public contribution checks, push its contribution branch and open a PR
using the public template. Preserve licenses and update public provenance for
newly adapted material. External contributors use public forks and never need
access to this product repository.
5. After merge, check out the reviewed public revision. If this checkout already
matches its content, record the pin; otherwise reconcile local edits and pull:

```sh
python3 scripts/sync-public-skills.py pin --root . --upstream /path/to/orbyn-fullstack-skills
# Or, for an update from the current unchanged pin:
python3 scripts/sync-public-skills.py pull --root . --upstream /path/to/orbyn-fullstack-skills
python3 scripts/sync-agent-skills.py --write
python3 scripts/sync-public-skills.py check --root .
```

The full public tree remains the source of shared skills; this copy is not a
second independent upstream. A local experiment can differ temporarily, but
the scoped CI check fails until it is contributed/reconciled with a public pin.
Regenerate host links after changes; remove retired generated links explicitly
if the generator reports them. Keep the existing local host Git exclusions intact.

## CI and limits

`.github/workflows/skills-upstream.yml` checks content against the committed lock
and a read-only checkout of that exact revision from the canonical public repo.
It compares the public manifest as data without executing public helper code.
It needs no model calls, product builds or cross-repository write credentials.
It catches local drift, not the existence of newer public commits. CI enforcement
also depends on merging this integration and requiring the check in the private
repository's branch policy. The initial addition does not change that policy.

Updating the sync helper itself is an explicit tooling change; compare it with
the public source and run its focused tests before replacing the local trusted copy.
Neither the lock nor CI authorizes public publication, merges or production changes.
18 changes: 18 additions & 0 deletions docs/agents/tooling.md
Original file line number Diff line number Diff line change
Expand Up @@ -77,3 +77,21 @@ before deleting the directory. The user's CV and PDF were also copied to
See the [research record](../../tools/research/workflow-design.md) for the adopted
planning/UI ideas and host-specific assumptions intentionally excluded. The active
planner and skill creator use Orbyn names and current stack boundaries.

## Social writing and preview authoring

Shared skills now have a public-library contribution path. See
[upstream ownership and synchronization](skill-upstream.md) for the allowlist,
consumer lock, export/review and CI boundaries. The original upstream snapshots
and their integrity manifest remain unchanged.

[social-content](../../skills/social-content/SKILL.md) owns posts and carousel
copy; [social-preview](../../skills/social-preview/SKILL.md) owns visual assets
and approximate feed views. Both use the same repository discovery links as the
engineering skills. Their [research record](../../tools/research/social-content.md)
distinguishes reviewed third-party ideas from copied source. No external skill
package, provider or global setting is installed by this addition.

The preview helper uses Python's standard library and produces HTML/text. Browser,
PNG/PDF and video exports depend on the current host's actual tools; the skills
require inspection of rendered/exported results before claiming those outputs.
5 changes: 2 additions & 3 deletions scripts/sync-agent-skills.py
Original file line number Diff line number Diff line change
Expand Up @@ -71,9 +71,8 @@
text += '\n'
text += '''## Scope and attribution

The public [Orbyn connector skill](../docs/agent-skill/orbyn/SKILL.md) describes
using the hosted planner, separately from repository development. REA maintenance
skills apply only to that tooling. See [tooling](../docs/agents/tooling.md) and
These are Orbyn Engineering workflows, usable with a consuming project's own
stack and policies. REA maintenance skills apply only to that optional tooling. See [tooling](../docs/agents/tooling.md) and
[notices](../tools/THIRD_PARTY_NOTICES.md) for complete source and attribution.
Old standalone skill files have been retired; use the canonical folders above.
'''
Expand Down
Loading
Loading