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
12 changes: 11 additions & 1 deletion .github/workflows/validate-plugins.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ on:
- ".cursor-plugin/marketplace.json"
- ".claude-plugin/marketplace.json"
- "**/plugin.json"
- ".agents/plugins/marketplace.json"
- "schemas/**"
- "pstack/**"
- "harness/**"
Expand All @@ -20,16 +21,25 @@ jobs:

- uses: actions/setup-node@v4
with:
node-version: 22
node-version: ">=24.22 <25"

- name: Install dependencies
run: npm install --no-save ajv ajv-formats fast-check@4.5.3

- name: Validate plugin definitions
run: node scripts/validate-plugins.mjs

- name: Check LStack Codex packaging
run: node scripts/configure-lstack-codex.mjs --check

- name: Check generated pstack harness trees
run: node scripts/generate-pstack-harness-trees.mjs --check

- name: Test LStack conversation mode hooks
run: python3 -m unittest discover -s pstack/hooks/tests

- name: Test Codex history and worktree audit
run: node --test scripts/test/*.test.mjs

- name: Test pstack skill scripts
run: node --disable-warning=ExperimentalWarning --test pstack/skills/*/scripts/test/*.test.ts
9 changes: 9 additions & 0 deletions AGENTS.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
# Maintaining LStack

LStack forks `cursor/plugins` pstack. When updating this fork, fetch `upstream/main` and compare pstack changes against the revisions in `pstack/docs/harness/upstream.json`. Import relevant changes and update that record. Changes to unrelated plugins do not require an import.

The Codex adapter and history helpers incorporate unmerged upstream PR #1143. Fetch its current head when updating those features, review the diff, and record the imported commit. Do not describe the PR as an official release before it merges.

Preserve the role settings in the user's `pstack-models.md`, explicit-request-only Astra use, Korean writing guidance, conversation mode hooks, and bundled `deslop`, `control-cli`, and `control-ui`. Keep the Codex native manifest so hooks remain usable. Generated Claude files must be regenerated rather than edited directly.

Use Node 24.22+ in the 24.x line or Node 26.10+ for compressed-history checks. Run Codex packaging checks, generated-tree checks, hook tests, the Codex history tests, and relevant pstack script tests after changes. These instructions do not authorize delegation.
50 changes: 47 additions & 3 deletions README.lstack.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,18 +5,36 @@
## 설치

```bash
codex plugin marketplace add LifeMash-hq/LStack
codex plugin marketplace add LifeMash-app/LStack
codex plugin add pstack@lifemash
```

설치 후 새 Codex 대화에서 스킬을 직접 호출합니다. 자동 실행 훅은 설치하지 않습니다. 원본 스킬 참조를 유지하기 위해 플러그인 식별자는 `pstack`, 표시 이름은 LStack을 사용합니다.
설치 후 새 Codex 대화에서 스킬을 직접 호출합니다. 원본 스킬 참조를 유지하기 위해 플러그인 식별자는 `pstack`, 표시 이름은 LStack을 사용합니다.

```text
$pstack:poteto-mode 이 작업의 관련 코드와 호출 순서를 조사해줘. 파일은 수정하지 마.
```

동일한 이름의 기존 스킬이 있으면 스킬 선택 목록에서 LStack의 항목을 선택합니다.

## 대화별 Poteto 모드 유지

<mark>**한 번 켜면 현재 대화에서 스킬 이름을 반복해서 입력하지 않아도 됩니다.**</mark> 기본 상태는 꺼짐입니다. 로컬 Codex에서 플러그인 훅을 사용하며, 최초 사용과 훅 정의 변경 시 `/hooks`에서 내용을 검토하고 신뢰해야 합니다.

| 동작 | 입력 |
| --- | --- |
| 켜기 | `poteto 모드 켜줘` |
| 끄기 | `poteto 모드 꺼줘` |
| 상태 확인 | `poteto 모드 상태` |

입력의 첫 줄을 위 문구로 작성합니다. 다음 줄부터 작업을 적으면 모드 변경과 작업 요청을 함께 처리합니다. 영어 입력은 `poteto mode on`, `poteto mode off`, `poteto mode status`를 사용합니다.

같은 대화를 재개하거나 압축해도 상태를 유지합니다. 새 대화, 대화 분기, `/clear` 후에는 꺼짐으로 시작합니다. 기존 `$pstack:poteto-mode 작업` 호출은 해당 요청에만 적용됩니다.

훅은 매 요청에 짧은 스킬 참조만 전달하고, 모델 호출이나 대화 기록 저장을 하지 않습니다. 모델과 권한 설정은 유지합니다. 클라우드에서 대화를 실행하는 환경은 로컬 플러그인 훅을 지원하지 않으므로 요청마다 스킬을 직접 호출합니다. [Codex 훅 지원 범위](https://learn.chatgpt.com/docs/hooks)

Codex CLI 0.166.0에서는 표준 Agent Plugins 형식의 훅을 로더가 제외합니다. LStack은 훅을 지원하는 `.codex-plugin/plugin.json`으로 설치합니다. Claude용 배포본을 생성하는 공통 매니페스트는 `pstack/plugin.template.json`에 보관합니다.

## 모델

| 작업 | 모델 | 추론 강도 |
Expand All @@ -25,13 +43,39 @@ $pstack:poteto-mode 이 작업의 관련 코드와 호출 순서를 조사해줘
| 설계와 독립 리뷰, 어려운 디버깅 | GPT-6.1 Sol | high |
| 명시적으로 요청한 특정 판단 | GPT-6 Astra | low |

Astra는 자동으로 호출하지 않습니다. 메인 대화의 모델 설정은 실행할 때 결정합니다. 플러그인은 메인 모델을 변경하지 않습니다. 역할별 설정과 도구 연결은 [Codex 호환 지침](pstack/docs/harness/codex.md)에 있습니다.
Astra는 자동으로 호출하지 않습니다. 메인 대화의 모델 설정은 실행할 때 결정하며, 플러그인은 메인 모델을 변경하지 않습니다.

역할별 설정은 `$CODEX_HOME/pstack-models.md`에서 읽으며 기본 위치는 `~/.codex/pstack-models.md`입니다. 파일이 없으면 [LifeMash 기본 설정](pstack/docs/harness/codex/pstack-models.md)을 복사합니다. 기존 파일은 유지하고, `$pstack:setup-pstack`으로 사용 가능한 모델과 추론 강도를 확인한 뒤 변경합니다. `모델@추론강도`를 쓰며 `auto`와 `inherit-parent`는 대화의 설정을 따릅니다. 자세한 연결은 [Codex 호환 지침](pstack/docs/harness/codex.md)에 있습니다.

## 과거 대화와 워크트리 확인

<mark>**`recall`, `reflect`, 작업 인계는 현재 작업 폴더의 Codex 기록을 조회합니다.**</mark> 활성 기록과 보관된 기록을 함께 찾고, 하위 에이전트 기록은 필요할 때 포함합니다. 다른 작업 폴더의 대화 본문은 읽지 않습니다. 워크트리 감사는 최근 작업 기록이 있으면 삭제 가능한 항목에서 제외하며, 직접 삭제하지 않습니다.

```bash
node pstack/docs/harness/codex/sessions.mjs --cwd "$PWD"
node pstack/docs/harness/codex/worktree-audit.mjs "$PWD"
```

압축 기록에는 Node 24.22 이상의 24.x 버전 또는 26.10 이상이 필요합니다. 기본 Node가 오래됐다면 위 명령의 `node`를 `npm exec --yes --package=node@24.22.1 -- node`로 바꿔 실행합니다. 시스템 Node를 변경하지 않습니다.

## pstack 업데이트 반영

<mark>**pstack의 변경은 원본 저장소에서 가져오고, Codex 기능은 PR #1143의 변경도 확인합니다.**</mark> 반영 기준 커밋은 [원본 기록](pstack/docs/harness/upstream.json)에 있습니다. PR #1143은 아직 병합 전이며, LStack은 해당 구현을 가져와 사용합니다. 모델 설정과 Astra 제한, 한국어 작성 규칙, 대화 모드, 추가 세 스킬은 유지합니다.

```bash
git fetch upstream main
git fetch upstream refs/pull/1143/head:refs/remotes/upstream/pr-1143
```

이전 반영 커밋부터의 pstack 변경을 비교해 적용한 뒤 아래 검증을 실행하고 원본 기록을 갱신합니다. 업데이트 확인은 유지보수 시 실행하며 자동 예약 작업을 설치하지 않습니다.

## 로컬 개발

```bash
node scripts/configure-lstack-codex.mjs --check
node scripts/generate-pstack-harness-trees.mjs --check
python3 -m unittest discover -s pstack/hooks/tests
node --test scripts/test/*.test.mjs
codex plugin marketplace add "$PWD"
codex plugin add pstack@lifemash
```
Expand Down
2 changes: 1 addition & 1 deletion harness/pstack/README.md

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion harness/pstack/claude-code/.claude-plugin/plugin.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

11 changes: 11 additions & 0 deletions harness/pstack/claude-code/docs/guide/01-setup.md

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion harness/pstack/claude-code/plugin.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

12 changes: 7 additions & 5 deletions harness/pstack/claude-code/skills/poteto-help/SKILL.md

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 2 additions & 2 deletions harness/pstack/claude-code/skills/poteto-mode/SKILL.md

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 2 additions & 0 deletions harness/pstack/claude-code/skills/technical-writing/SKILL.md

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading
Loading