새 업무 메모리 유형을 영구 저장하도록 개발 작업을 안내합니다. 필요한 Markdown, SQLite, LanceDB 조합과 Markdown 파일 방식을 정한 뒤 해당 계층의 스키마, 저장소, 작성기를 연결합니다.
- 영구 저장할 새 업무 메모리 유형 추가하기
- 저장 계층 조합 설계하기
- Markdown 원본과 검색 색인 연결하기
everos의 새 버전을 PyPI에 배포하도록 버전과 변경 로그를 정리하고, 태그로 시작되는 자동 작업과 승인 절차를 안내합니다. 업로드 후에는 GitHub Release 초안을 검토하고 게시하는 단계까지 진행합니다.
Cut a versioned release and publish everos to PyPI via the tag-triggered workflow
실행 점수 미검증
설치 방법 보기everos의 새 버전을 PyPI에 배포하는 절차를 안내합니다. pyproject.toml의 버전 번호를 갱신하고 CHANGELOG.md를 정리한 뒤, 변경 사항을 main에 병합하고 태그를 만들어 푸시합니다. 태그가 자동 작업을 시작하면 패키지를 빌드하고 스모크 테스트를 실행한 다음 PyPI에 업로드합니다. 공개 작업은 리뷰어의 승인을 기다립니다. 업로드가 끝나면 GitHub Release 초안을 확인하고 게시합니다.
수정이나 기능 추가를 마무리하고 정식 버전으로 배포할 때 사용할 수 있습니다. 프리릴리스를 배포하거나 변경 로그를 바탕으로 릴리스 페이지를 준비하면서 공개까지 필요한 확인 단계를 순서대로 파악하고 싶을 때도 적합합니다.
main의 최신 상태에서 CI가 성공해야 합니다. 태그와 pyproject.toml의 버전, 안정 버전의 CHANGELOG.md 제목을 일치시켜야 합니다. PyPI 공개에는 GitHub 환경에서 수동 승인이 필요하며 GitHub Release도 초안을 확인한 뒤 게시해야 합니다.
이 소개문은 공개된 SKILL.md를 바탕으로 AI(OpenAI Codex)가 작성했습니다. 정확한 사양은 아래 원문을 확인하세요.
AI가 SKILL.md의 내용에서 주의가 필요한 작업과 도입 전제를 확인했습니다. 점수는 실제로 실행한 결과(실행 검증)만으로 매깁니다.
점수에는 넣지 않았습니다. 2026년 10월 29일 기준으로 AI(OpenAI Codex)가 판정했습니다. 참고용이므로 설치 전에 원문도 확인해 주세요.
설치하기 전에 에이전트에게 전달되는 지시 내용을 확인할 수 있습니다.
Publish a new version of everos to PyPI. Publishing is automated: pushing a
vX.Y.Z tag triggers .github/workflows/release.yml,
which builds, smoke-tests, and uploads via PyPI Trusted Publishing (OIDC —
no stored token) behind the release environment's manual-approval gate, then
drafts the GitHub Release page from the CHANGELOG.
A release is not finished when PyPI accepts the upload: the GitHub Release page is drafted, never auto-published, and someone has to write its lead summary and click Publish.
main, up to date, with green CI (the tag builds from main's tree).1. Bump the version → pyproject.toml [project] version = "X.Y.Z"
(single source; everos.__version__ reads installed package metadata)
2. Update CHANGELOG.md → move the Unreleased entries under a new
## [X.Y.Z] - <date> heading, and write the release page's prose here
(lead paragraph + `### Upgrade` group — see "The release page")
3. Commit → git commit -m "chore(release): vX.Y.Z"
4. Open a PR, merge to main after green CI
5. Tag main + push → git tag -a vX.Y.Z -m "vX.Y.Z" && git push origin vX.Y.Z
6. Approve → the release.yml run pauses on the `release`
environment; a reviewer approves in the Actions run
7. Verify → https://pypi.org/project/everos/X.Y.Z/
8. Publish the page → the run leaves a DRAFT GitHub Release, already
complete if step 2 was done properly. Read it once, click Publish.
The tag must equal the pyproject.toml version — the workflow refuses to
publish on a mismatch. A stable tag with no matching ## [X.Y.Z] CHANGELOG
section fails the release job for the same reason.
The whole page is written in CHANGELOG.md, during the release PR. Nothing is meant to be composed at publish time — by then the changes are weeks old and the text gets no review. Write the version section like this:
## [X.Y.Z] - 2026-09-01
**What this release is for.** One paragraph, prose, no bullets — it becomes the
lead of the release page. Say what changed for a user, not what was refactored.
### Added
### Changed
### Fixed
### Upgrade
What a reader must know before upgrading: what happens on first startup, which
command recovers a bad state, which pins moved. Omit the group entirely when a
plain `pip install --upgrade` is all there is — 1.1.4 and 1.2.0 have nothing
here. Do not write filler.
CI turns that into the page: everything above ### Upgrade is lifted verbatim
with the group headings demoted to ##, and the Upgrade prose is wrapped in the
boilerplate — pip line above it, compare link below — which is the shape every
release since 1.1.3 has. See
1.2.1.
So publishing is a read-through and a click. If the draft looks wrong, the fix
belongs in CHANGELOG.md on main, not only in the draft — otherwise the two
drift apart and the next release inherits the habit.
While it is a draft, GitHub serves the release at
releases/tag/untagged-<hash>, and that URL keeps serving a stale page after publication with no redirect. Never share it — a reader who opens it later concludes the release never went out. Linkreleases/tag/vX.Y.Zinstead; the job prints both URLs in its step summary.
Publish with the Publish release button in the web UI. Publishing through
the API by flipping draft alone drops the tag: GitHub rebinds the release to
the untagged-<hash> placeholder and creates a git tag by that name against the
default branch (observed on 1.2.2). Pass tag_name if you must do it from the
CLI:
gh api -X PATCH "repos/EverMind-AI/EverOS/releases/<id>" \
-F draft=false -f tag_name=vX.Y.Z -f make_latest=true
Re-running the release job replaces its own draft and leaves an already-published release untouched, so a re-run is always safe.
PEP 440 pre-release tags publish too (PyPI accepts them; pip install everos
ignores them unless --pre): vX.Y.ZrcN, vX.Y.ZaN, vX.Y.ZbN. Set the same
suffix in pyproject.toml version before tagging.
Their release page is drafted as a pre-release and never becomes
/releases/latest. A pre-release does not need its own CHANGELOG section — the
draft falls back to a one-line placeholder body when there is none.
everos → Settings →
Publishing → add: owner EverMind-AI, repo EverOS, workflow
release.yml, environment release.release
with required reviewers, so every publish needs a manual approval.No PyPI API token is ever stored; the workflow mints a short-lived OIDC token at publish time.
아직 리뷰가 없습니다. 사용해 본 소감을 남겨 주세요.
로그인 없이 쓸 수 있습니다. 사용 후기, 질문, 작동하지 않은 환경 등을 편하게 남겨 주세요.
아직 댓글이 없습니다. 첫 댓글을 남겨 보세요.
새 업무 메모리 유형을 영구 저장하도록 개발 작업을 안내합니다. 필요한 Markdown, SQLite, LanceDB 조합과 Markdown 파일 방식을 정한 뒤 해당 계층의 스키마, 저장소, 작성기를 연결합니다.
현재 Git 변경 사항과 최근 기록을 살펴본 뒤 Conventional Commits 형식으로 범위가 분명한 커밋을 만듭니다. 관련 파일만 선택해 스테이징하고 커밋 훅 오류에 대응하도록 안내합니다.
업데이트된 `main`에서 용도에 맞는 Git 브랜치를 만들고, 변경 유형에 따라 기능·수정·문서·CI·유지 관리·리팩터링 접두사를 선택합니다. 뒤에는 짧은 소문자 하이픈 이름을 붙입니다.
GitHub CLI `gh`를 사용해 현재 작업 브랜치에서 `main`을 대상으로 저장소 템플릿에 맞춘 풀 리퀘스트를 엽니다. 먼저 `make ci`를 실행하고, 통과하면 브랜치를 푸시한 뒤 변경 요약, 영역, 검증 결과, 체크리스트와 리뷰어 메모를 작성합니다.