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
15 changes: 15 additions & 0 deletions .editorconfig
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
root = true

[*]
charset = utf-8
end_of_line = lf
insert_final_newline = true
trim_trailing_whitespace = true
indent_style = space
indent_size = 2

[*.py]
indent_size = 4

[Makefile]
indent_style = tab
6 changes: 6 additions & 0 deletions .gitattributes
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
* text=auto eol=lf
*.py text eol=lf
*.md text eol=lf
*.yml text eol=lf
*.yaml text eol=lf
*.json text eol=lf
1 change: 1 addition & 0 deletions .github/CODEOWNERS
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
* @perhapsspy
32 changes: 32 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
name: CI

on:
pull_request:
push:
branches:
- main

permissions:
contents: read

concurrency:
group: ci-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true

jobs:
validate:
runs-on: ubuntu-latest
steps:
- name: Check out repository
uses: actions/checkout@v7

- name: Set up Python
uses: actions/setup-python@v6
with:
python-version: "3.12"

- name: Run unit tests
run: python -m unittest discover -s tests -p 'test_*.py' -v

- name: Validate plugin
run: python scripts/validate_plugin.py
37 changes: 37 additions & 0 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
name: Release

on:
push:
tags:
- "v*"

permissions:
contents: write

jobs:
release:
runs-on: ubuntu-latest
steps:
- name: Check out release tag
uses: actions/checkout@v7
with:
fetch-depth: 0

- name: Set up Python
uses: actions/setup-python@v6
with:
python-version: "3.12"

- name: Run unit tests
run: python -m unittest discover -s tests -p 'test_*.py' -v

- name: Validate plugin
run: python scripts/validate_plugin.py

- name: Verify release tag matches plugin version
run: python scripts/validate_plugin.py --release-tag "$GITHUB_REF_NAME"

- name: Create GitHub release
env:
GH_TOKEN: ${{ github.token }}
run: gh release create "$GITHUB_REF_NAME" --generate-notes --verify-tag
12 changes: 12 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
__pycache__/
*.py[cod]
.pytest_cache/
.coverage
htmlcov/
.mypy_cache/
.ruff_cache/
.venv/
venv/
dist/
build/
*.egg-info/
14 changes: 14 additions & 0 deletions AGENTS.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
# AGENTS.md

- 일반 문서는 한국어로 작성하고, README·CONTRIBUTING·CHANGELOG는 한국어와 영어 쌍을 함께 갱신합니다.
- `plugins/judgment-craft`가 유일한 canonical 플러그인 사본입니다. mirror, snapshot, lock, 동기화 생성물을 추가하지 않습니다.
- 제품 약속, 세 activation 역할, calibrate 후 friction 조합, SemVer 의미는 `docs/PRODUCT.md`가 소유합니다.
- 변경 전 `CONTRIBUTING.md`의 검증·릴리스·롤백 절차를 따릅니다. marketplace는 검증된 릴리스 커밋의 전체 SHA만 가리켜야 합니다.

## 검증

```bash
python -m unittest discover -s tests -p "test_*.py" -v
python scripts/validate_plugin.py
git diff --check
```
13 changes: 13 additions & 0 deletions CHANGELOG.en.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
# Changelog

[한국어](CHANGELOG.md)

## Unreleased

- No unreleased changes yet.

## 0.1.0 - 2026-07-29

- Initial Judgment Craft release.
- Includes `$practical-judgment`, `$calibrate-judgment`, and `$friction-distillation`.
- Defines the baseline composition contract for direct judgment, correction recalibration, and recurring friction response.
13 changes: 13 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
# 변경 기록

[English](CHANGELOG.en.md)

## Unreleased

- 아직 릴리스되지 않은 변경 사항이 없습니다.

## 0.1.0 - 2026-07-29

- Judgment Craft 최초 릴리스.
- `$practical-judgment`, `$calibrate-judgment`, `$friction-distillation` 스킬 포함.
- 직접 판단, 정정 재보정, 반복 마찰 대응의 기본 composition 계약 정의.
41 changes: 41 additions & 0 deletions CONTRIBUTING.en.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
# Contributing

[한국어](CONTRIBUTING.md)

## Change Ownership

Content owner first. Edit the canonical plugin copy directly under `plugins/judgment-craft`. Do not add `sources.lock`, `sync_skills`, generated snapshots, or mirror flows.

Before changing the product promise, skill roles, activation model, or composition meaning, update [docs/PRODUCT.md](docs/PRODUCT.md).

## Version Rules

- Patch: compatible wording, explanation, typo, validation, or documentation fixes that preserve the existing activation and composition contract.
- Minor: skill additions or removals, material trigger changes, composition role changes, or starter prompt changes.
- Major candidate: a source/package contract break, canonical plugin path change, or public contract break that installers or marketplace consumers rely on.

## Validation

```bash
python -m unittest discover -s tests -p "test_*.py" -v
python scripts/validate_plugin.py
git diff --check
```

## Release

1. Run validation.
2. Update the version in `plugins/judgment-craft/.codex-plugin/plugin.json` and both changelogs.
3. Open a PR and pass CI.
4. Create an immutable `v<version>` tag on the same merged commit.
5. Confirm the release workflow checks `--release-tag v<version>` and completes GitHub release creation.
6. Update the `perhapsspy/codex-plugins` marketplace pin to the release commit full SHA.
7. Run remote marketplace validation and an install round trip.

## Rollback

Re-pin the marketplace entry to the last validated release commit full SHA. Never move or overwrite a published tag. Fix forward and issue a new patch or minor release.

## Explicit Exclusions

While the plugin and skills share one canonical repo, do not add `sources.lock`, `sync_skills`, generated snapshots, or `THIRD_PARTY_NOTICES`.
41 changes: 41 additions & 0 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
# 기여 가이드

[English](CONTRIBUTING.en.md)

## 변경 소유권

콘텐츠 소유자를 먼저 확인합니다. 플러그인은 `plugins/judgment-craft`의 canonical 사본을 직접 편집합니다. `sources.lock`, `sync_skills`, 생성 snapshot, mirror 흐름은 추가하지 않습니다.

제품 약속, 스킬 역할, activation 모델, composition 의미를 바꾸기 전에는 [docs/PRODUCT.md](docs/PRODUCT.md)를 갱신합니다.

## 버전 규칙

- Patch: 기존 activation과 composition 계약을 유지하는 문구·설명·검증·문서 수정.
- Minor: 스킬 추가·삭제, 중요한 trigger 변경, composition 역할 변경, starter prompt 변경.
- Major 후보: 패키지 계약, 설치 경로, marketplace가 의존하는 공개 계약을 깨는 변경.

## 검증

```bash
python -m unittest discover -s tests -p "test_*.py" -v
python scripts/validate_plugin.py
git diff --check
```

## 릴리스

1. 검증 명령을 실행합니다.
2. manifest 버전과 두 changelog를 갱신합니다.
3. PR을 열고 CI를 통과시킵니다.
4. 같은 merge 커밋에 변경 불가능한 `v<version>` 태그를 만듭니다.
5. release workflow가 `--release-tag v<version>`을 확인하고 GitHub Release를 생성하는지 확인합니다.
6. `perhapsspy/codex-plugins` marketplace를 릴리스 커밋의 전체 SHA로 갱신합니다.
7. 원격 marketplace 검증과 설치 round trip을 수행합니다.

## 롤백

marketplace 항목을 마지막 검증 릴리스 커밋의 전체 SHA로 다시 pin합니다. 공개 태그를 이동하거나 덮어쓰지 않습니다.

## 명시적 제외

canonical 저장소를 공유하는 동안 `sources.lock`, `sync_skills`, 생성 snapshot, `THIRD_PARTY_NOTICES`를 추가하지 않습니다.
51 changes: 51 additions & 0 deletions README.en.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
# Judgment Craft

Judgment Craft is a Codex plugin for bounded judgment: direct current recommendations, explicit recalibration after correction, and the smallest sufficient response to recurring friction.

Korean: [README.md](README.md)

## Install

```bash
codex plugin marketplace add perhapsspy/codex-plugins
codex plugin add judgment-craft@perhapsspy
```

Update:

```bash
codex plugin marketplace upgrade perhapsspy
codex plugin add judgment-craft@perhapsspy
```

Remove:

```bash
codex plugin remove judgment-craft@perhapsspy
```

## Skills

| Skill | Use when |
| --- | --- |
| `$practical-judgment` | You need a direct recommendation for a current choice or judgment. |
| `$calibrate-judgment` | You explicitly corrected the criteria, scope, or meaning of a prior judgment. |
| `$friction-distillation` | You need to choose the response level for recurring friction. |

When a corrected current judgment may also require recurrence prevention, use `$calibrate-judgment` first and then `$friction-distillation`.

Package path: `plugins/judgment-craft/`

The product promise and role boundaries are owned by [docs/PRODUCT.md](docs/PRODUCT.md). Follow [CONTRIBUTING.en.md](CONTRIBUTING.en.md) for changes. Keep [CONTRIBUTING.md](CONTRIBUTING.md) and [CHANGELOG.md](CHANGELOG.md) aligned.

After installation or update, start a new Codex task so the refreshed skills are loaded.

## Development

```bash
python -m unittest discover -s tests -p "test_*.py" -v
python scripts/validate_plugin.py

## License
[MIT](LICENSE)
```
41 changes: 35 additions & 6 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
# Judgment Craft

현재 판단을 명확히 하고, 사용자의 정정에 맞춰 재계산하며, 반복 마찰에 필요한 최소 대응을 고르는 3가지 스킬 패키지입니다.
Judgment Craft는 현재 선택에 대한 직접적인 판단, 명시적 정정 이후의 재보정, 반복되는 마찰에 대한 최소 충분 대응을 제공하는 Codex 플러그인입니다.

English: [README.en.md](README.en.md)

## 설치

Expand All @@ -9,14 +11,41 @@ codex plugin marketplace add perhapsspy/codex-plugins
codex plugin add judgment-craft@perhapsspy
```

| 스킬 | 선택할 때 |
업데이트:

```bash
codex plugin marketplace upgrade perhapsspy
codex plugin add judgment-craft@perhapsspy
```

제거:

```bash
codex plugin remove judgment-craft@perhapsspy
```

## 스킬

| 스킬 | 사용 시점 |
| --- | --- |
| `$practical-judgment` | 현재 선택에 대한 직접 권고가 필요할 때 |
| `$practical-judgment` | 현재 선택이나 판단에 대한 직접적인 추천이 필요할 때 |
| `$calibrate-judgment` | 이전 판단의 기준·범위·의미를 명시적으로 정정했을 때 |
| `$friction-distillation` | 반복 마찰의 재발 방지 대응 수준을 결정할 때 |
| `$friction-distillation` | 반복되는 마찰에 맞는 대응 수준을 정해야 할 때 |

정정으로 현재 판단을 다시 계산한 뒤 재발 방지 여부까지 결정해야 한다면 `$calibrate-judgment``$friction-distillation`을 순서대로 함께 사용하세요.
정정된 현재 판단이 재발 방지도 요구하면 `$calibrate-judgment`를 먼저 사용한 뒤 `$friction-distillation`으로 이어갑니다.

패키지 경로: `plugins/judgment-craft/`

MIT 라이선스입니다.
제품 약속과 역할 경계는 [docs/PRODUCT.md](docs/PRODUCT.md)가 소유합니다. 변경 시 [CONTRIBUTING.md](CONTRIBUTING.md)를 따르고, 영어 문서는 [CONTRIBUTING.en.md](CONTRIBUTING.en.md)와 [CHANGELOG.en.md](CHANGELOG.en.md)를 함께 갱신합니다.

설치 또는 업데이트 후에는 새 Codex 작업을 시작해 갱신된 스킬이 로드되도록 합니다.

## 개발

```bash
python -m unittest discover -s tests -p "test_*.py" -v
python scripts/validate_plugin.py

## 라이선스
[MIT](LICENSE)
```
31 changes: 31 additions & 0 deletions docs/PRODUCT.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
# Judgment Craft 제품 계약

Judgment Craft는 현재 상황에서 필요한 판단 유형을 분리하고, 그 판단에 필요한 최소 충분 응답을 고르는 플러그인입니다.

## 제품 약속

- 현재 선택에는 즉시 실행 가능한 제한된 추천을 제공합니다.
- 사용자가 이전 판단의 기준·범위·의미를 정정하면 그 정정을 반영해 현재 판단을 다시 계산합니다.
- 반복되는 마찰에는 원인을 자동으로 구조화한다고 가정하지 않고, 증거와 비용에 맞는 최소 충분 개입을 고릅니다.

## 세 가지 activation 역할

`$practical-judgment`는 현재 선택이나 판단에 대한 직접 추천을 담당합니다. 과거 판단의 정정이나 반복 마찰의 예방 구조가 핵심이면 주 역할이 아닙니다.

`$calibrate-judgment`는 사용자가 이전 판단의 기준·범위·의미를 명시적으로 정정했을 때 활성화됩니다. 정정을 현재 판단에 반영하며, 반복 방지 구조를 직접 설계하지는 않습니다.

`$friction-distillation`은 반복되는 마찰에 대해 재발 방지 개입이 필요한지와 대응 수준을 판단합니다. 반복 자체를 증거로 과장하지 않고, 현재 비용과 실행 가능성에 맞춰 선택합니다.

## Calibrate 후 Friction 조합

명시적 정정과 재발 방지 판단을 함께 요청하면 `$calibrate-judgment`가 먼저 정정된 현재 판단과 전제를 제공하고, `$friction-distillation`이 이어서 재사용 가능한 개입을 판단합니다.

순서가 중요합니다. calibrate는 이번 판단의 의미를 바로잡고, friction은 그 정정 또는 유사 조건에서 재발을 줄일 최소 대응을 선택합니다.

## SemVer 의미

Patch는 기존 activation 경계와 composition 순서를 깨지 않는 호환 가능한 문구·설명·검증·문서 수정입니다.

Minor는 스킬 추가·삭제, 중요한 trigger 변경, starter prompt 변경, 또는 calibrate와 friction 사이의 composition 역할 변경입니다.

Major 후보는 canonical 패키지 계약, 설치 경로, marketplace 공개 구조, 기존 스킬 호출 계약을 호환 불가능하게 바꾸는 변경입니다.
Loading