AsciiDoc을 사용한 IA 에이전트 관리 : 나의 Eager/Lazy 전략, 컨텍스트 누출이 없는 Opencode 세션을 위한
게시: 24 April 2026
요약
Opencode와 같은 IA 에이전트와 함께 여러 세션에 걸쳐 복잡한 프로젝트를 진행할 때 근본적인 문제에 직면하게 됩니다:컨텍스트 유출. 에이전트는 이전 세션을 기억하지 못합니다. 그에게 설명된 모든 것 — 아키텍처, 규약, 백로그 상태 — 가 손실되었습니다. 매 세션마다 이 컨텍스트를 재구성하는 것은 비용이 많이 들고 느리며 오류의 원인이 됩니다.
이 글은 이 문제를 해결하기 위해 내가 구축한 수공예 전략을 설명한다: AsciiDoc 파일을 기반으로 한 지속 가능한 거버넌스 시스템, 그리고 이분법즉시/지연컨텍스트 토큰 소비를 최적화하고, 그리고필수적인 세션 종료 절차연속성을 보장하기 위해
장소 : 월요일 4월 21일, 오전 9시
Opencode를 다시 열어 Gradle 플러그인 작업을 이어갑니다.plantuml-plugin. 어제 저녁, 저는 API 키 풀의 아키텍트 담당자와 세 시간을 토론했습니다 — 라운드 로빈 로테이션, 할당량 관리, 자동 페일오버. 오늘 아침, 에이전트는 금붕어 눈으로 나를 바라본다.
_ — 안녕하세요, 저는 Opencode 어시스턴트입니다. 오늘 어떻게 도와드릴까요? _
아니요 — 아 맞다, API 키 풀, 우리는 YAML 구조에 있었죠. 아니요 — 주의,PlantumlManager`은 Kotlin 싱글톤 객체이지 클래스가 아닙니다. 아니요 — 아니, 어제 우리가 결정한 것이`SyntaxValidationResult`중첩된 sealed class 상태로 남아 있었다`PlantumlService.
모든 것을 다시 해야 한다. 혹은 더 정확히 말하면, 모든 것을 다시 설명해야 한다. 나는 내 세션의 처음 20분을 들여 어제 에이전트가 이미 손에 넣었던 맥락을 재구성하는 데 쓸 것이다. 소모된 토큰으로 20분. 나는 코딩을 할 수도 있는 20분이지만, 대신 의무적인 교육을 하고 있다.
이것은 Opencode의 버그가 아닙니다. 이것은 대화형 LLM의 근본적인 성질입니다: 두 세션 사이에서는 작업 기억이완전히 삭제됨. 에이전트는 이전 미션, 내린 결정, 식별된 함정, 함께 작성한 코드를 기억하지 못한다
저는 그것을 수십 번 경험했습니다. 네 개의 동시에 진행되는 프로젝트에서요. 몇 주 동안 이어지는 세션과 함께요. 저는 계산해 보았습니다: 평균적으로,세션 시간의 30~40%에이전트를 재맥락화하는 데 전념되었다. 프로젝트 세션 87에서`plantuml-plugin`, 나는 무너졌다. 나는 더 이상 그 문제를 열 번째로 설명하는 것을 감당할 수 없어서`AttemptEntry`는 최상위 레벨의 data class인`DiagramProcessor.kt`.
내가 필요로 했던 건 시스템이었다. 해킹이 아니라. 진정한 거버넌스였다.
창세기 : 혼돈에서 방법으로
첫 번째 세션 : 어둠의 시대
Opencode와 함께한 첫 번째 프로젝트,plantuml-plugin, 아무런 지배 구조 없이 시작되었습니다. 저는 질문을 하고, 에이전트가 답변하고, 우리는 반복하고, 세션이 끝납니다. 그리고 다음 날 우리는 다시 제로에서 시작합니다. 세션 1이었고, 그다음 세션 2, 그다음 세션 3… 결국 세션 62에 이르러서 저는 같은 아키텍처를 재설명하는 데 누적된 시간을 잃었다는 것을 깨달았습니다.
세션 62에서, 숫자들이 여기 있습니다:198개의 단위 테스트가 통과합니다, 42개의 기능 테스트가 검증되었습니다, 플러그인이 작동합니다. 하지만 인지 비용은 감당할 수 없습니다. 각 새로운 세션은 프로젝트 구조에 대한 20분 독백으로 시작됩니다.
site.yml의 파괴된 에피소드 (세션 2, bakery-plugin)
이 방법도 재난에서 비롯됩니다. 프로젝트에서`bakery-gradle`, 세션 2에서, 저는 에이전트에게 파일을 수정하도록 요청합니다`site.yml`. 에이전트는 파일이 버전 관리됐는지 확인하지 않고 하나를 만든다`Write`내용이 완전히 덮어쓰는. 결과 : 실제 토큰(Firebase API 키, 배포 비밀)은 가짜 플레이스홀더로 대체됩니다. 파일은 git에 있지 않았습니다 — 그것은`.gitignore`비밀을 보호하기 위해.
백업 없이. 없이`git restore`가능. 저는 막혔습니다. 수동으로 구성 파일을 다시 만들어야 하고, 비밀번호 관리자에서 토큰을 찾아서 모두 다시 붙여야 합니다.
이 좌절에서 비롯되는 것이다절대 규칙 1b(Note: The output is a single space character, as the input text to translate was a space after the colon, and spaces are language-neutral in translation.)
_ 절대 짓밟지 마라하나의 구성 파일과 하나의`Write`완료될 때 하나의`Edit`부분만으로 충분합니다.절대 교체하지 마세요민감한 값을 가짜 값으로 대체합니다.확인 git check-ignore 그리고 `git ls-files어떤 수정도 하기 전에. _
이 규칙은 오늘날 모든 내 파일의 대리석에 새겨져`AGENT.adoc` et `INDEX.adoc`네 개 프로젝트에서 실제 오류가 발생하여 수작업에 한 시간을 소요했습니다.
마크다운 → 애스키도크 마이그레이션 (세션 1, cheroliv.com)
2026년 4월 25일, 위에`cheroliv.com`, 나는 근본적인 결정을 내린다: 마크다운의 전체 거버넌스를 AsciiDoc으로 전환한다. 미적이지 않다. 기능적이다. AsciiDoc은 LLM이 더 잘 읽을 수 있는 의미적 구조를 제공한다: 계층적 섹션, 타입이 지정된 테이블, 어드몬트먼트(NOTE, WARNING, CAUTION), 기계가 읽을 수 있는 문서 속성
세션 1의`cheroliv.com`구조를 공식화 :
-
변환`AGENTS.md` en
AGENT.adoc -
전문 에이전트 생성 :`CODER.adoc`,
SCRUM_MASTER.adoc,PLANTUML_DESIGNER.adoc -
Eager/Lazy 구조 생성 :`INDEX.adoc`,
SESSIONS_HISTORY.adoc,AGENT_SESSION_MANAGER.adoc,SESSION_CHECKLIST.adoc,PROCEDURES.adoc
단일 커밋 :`90975e9 refactor: migrate agent governance from Markdown to AsciiDoc`. 그리고 사이트는 계속 작동합니다.
@startuml
skinparam backgroundColor #FEFEFE
skinparam handwritten false
title 세션의 발전 — 세션 1부터 150+까지
legend top
|= Couleur |= Projet |
| <#4CAF50> | cheroliv.com |
| <#2196F3> | plantuml-plugin |
| <#FF9800> | bakery-plugin |
| <#9C27B0> | magic-stick |
endlegend
concise "활성 세션" as S
@S
0 is ".md 원시"
1 is "마이그레이션
AsciiDoc"
10 is "Eager/Lazy
형식화된"
62 is "안전 규정\n(site.yml)"
87 is "크래킹\n맥락"
109 is "최적화
-60% 토큰"
133 is "133 세션
240 테스트 통과"
S@0 -> S@1 : Session 1\n(cheroliv.com)
S@1 -> S@10
S@10 -> S@62 : Session 62\n(plantuml-plugin)
S@62 -> S@87 : Session 87\n(Cry 4 help)
S@87 -> S@109 : Session 109\n(API Key Pool)
S@109 -> S@133 : Session 133\n(Aujourd'hui)
@enduml
위 타임라인은 실제 진행 상황을 보여줍니다. 전환점은 세션 87이며, 이때 반복적인 재컨텍스트화의 좌절감이 허용 한계를 초과하고, Eager/Lazy 방법은 더 이상 아이디어가 아니라 필수 조건이 됩니다.
전략: Eager/Lazy 심층
철학 :인지에 적용된 컴퓨터 캐시
내 접근 방식은 컴퓨터 캐시 관리로부터 직접 영감을 받았습니다. 모든 것이비판적이며 자주 사용되는즉시 접근 가능해야 (열정적인). 모든 것이문맥적 혹은 대용량요청 시 로드해야 함게으른).
열정적인 (대시보드) |
느긋한 (소유자 매뉴얼) |
크기 |
< 100 줄, < 10k 토큰 |
무제한, 상세한 |
로딩 |
자동, 세션 시작 시 |
에이전트의 요청에 따라 |
내용 |
절대적인 규칙, 현재 진행 중인 임무, 위급한 상태 |
세션 아카이브, 전체 기록, 상세 절차, 기술 참조 |
역할 |
즉시 에이전트의 방향을 잡아라 |
깊은 맥락의 질문에 답하기 |
Eager 파일 : 대시보드
이 파일들은 각 프로젝트의 루트에 위치하고 에이전트에 의해 각 세션 시작 시 자동으로 로드됩니다. 이들은 을 형성대시보드-- 중요 정보, 즉시 접근 가능.
@startuml
skinparam defaultTextAlignment center
skinparam wrapWidth 200
package "프로젝트 루트 (Eager - 자동 로드)" {
component "<b>AGENT.adoc</b>
절대 규칙
구조 및 관례" as AGENT
component "<b>PROMPT_REPRISE.adoc</b>
N 세션의 미션
N-1 요약" as PROMPT
component "<b>INDEX.adoc</b>
진입점
규칙 + 세션" as INDEX
component "<b>*_ESSENTIALS.adoc</b>\n중요한 비즈니스 컨텍스트" as ESS
}
package ".agents/ (Lazy - 요청 시 로드)" {
component "<b>sessions/N-*.adoc</b>\n상세 기록\n결정 및 출력" as SESS
component "<b>SESSIONS_HISTORY.adoc</b>
요약 테이블
날짜/유형/점수" as HIST
component "<b>PROCEDURES.adoc</b>
세션 종료 템플릿
6단계" as PROC
component "<b>*_REFERENCE.adoc</b>
완전한 아키텍처
기술 참조" as REF
component "<b>COMPLETED_TASKS_ARCHIVE</b>
완료된 작업
월별" as ARCH
component "<b>AGENT_MODUS_OPERANDI.adoc</b>
전략 문서
방법론" as MOD
component "<b>*_REFERENCE.adoc</b>
Boot tests, A/B partition
특정 컨텍스트" as SPEC
}
AGENT --> PROMPT : "참고문헌"
AGENT --> INDEX : "참고문헌"
INDEX --> SESS : "색인하다"
INDEX --> HIST : "색인하다"
INDEX --> PROC : "참조"
INDEX --> ARCH : "참조"
INDEX --> REF : "참조"
PROMPT --> SESS : "아카이브 N-1"
PROMPT --> ESS : "비즈니스 컨텍스트 N"
@enduml
AGENT.adoc-- 마스터 파일. 에`cheroliv.com`, 그것은 200줄이며 포함합니다:
-
프로젝트의 절대적인 규칙 (허가 없이 커밋 금지,`rm`확인 없이)
-
프로젝트 구조와 코드 컨벤션
-
필수 명령어 (
./gradlew serve,./gradlew test) -
에픽들과 제품 백로그(우선순위된 사용자 스토리)
-
전방위적 품질 기준 (접근성, 반응형, 호환성)
위에`bakery-plugin`, 규칙 0는 다릅니다 :./gradlew -q publishToMavenLocal` 소스 코드를 수정할 때마다 필수입니다.. 로컬 JAR을 다시 패키징하지 않고 플러그인을 테스트했기 때문에 아직 패키징되지 않은 코드를 디버깅하는 데 한 시간을 허비하게 되었다.
PROMPT_REPRISE.adoc-- 현재 세션의 임무. 각 세션 종료 시 업데이트되며, 다음을 포함합니다:
-
세션 번호와 우선 순위 임무
-
이전 세션의 요약 (완료된 내용, 아직 해야 할 일)
-
현재 세션의 수락 기준
-
특정 기술 알림
.agents/INDEX.adoc-- 진입점입니다. 절대 규칙, 최근 세션, 그리고 무엇보다프로젝트 포트폴리오같은 방법론으로 관리되고 있습니다. 현재까지, 다섯 개의 프로젝트가 여기에 나열되어 있습니다 :
----
----
| magic-stick | Session 23 | SCRIPT_VERIFICATION.adoc | 2026-04-27 |
| bakery-gradle | Session 11 | TEST_COVERAGE_ANALYSIS | 2026-04-27 |
| cheroliv.com | Session 9 | TEST_COVERAGE_ANALYSIS | 2026-04-27 |
| plantuml-gradle| Session 133| TEST_COVERAGE_ANALYSIS | 2026-04-23 |
| jhipster-gradle-plugins | Session 1 | TEST_COVERAGE_ANALYSIS | 2026-04-28 |
----
**`*_ESSENTIALS.adoc`** -- 최근 추가된 사항(세션 109, plantuml-plugin)으로 Eager 컨텍스트를 더욱 최적화하기 위해, API 키 풀에 비즈니스 컨텍스트 200줄을 로드하는 대신, 필수 50줄만 로드하고 나머지 150줄은 LAZY 상태로 안에`*_REFERENCE.adoc`.
측정된 결과: 통과**~25k 토큰 EAGER부터 ~10k 토큰까지**(60% 증가). 이제 더 이상 에너지 소모되는 알림이 필요하지 않다.
==== 누락된 연결고리 : `opencode.json
나는 문서화하는 것을 거의 잊어버릴 뻔한 사실을 고백해야 한다. 이 모든 .adoc 파일 위에 작동에 필수적인 아주 작은 JSON 파일이 있다. 그의 이름은`opencode.json`그리고 그는 여섯 줄입니다. 글자 그대로 여섯 줄입니다.
[source,json]
----
{
"$schema": "https://opencode.ai/config.json",
"instructions": [
"AGENT.adoc"
]
}
----
이 파일은 Opencode에게 말한다: « 시작 시, 로드 `AGENT.adoc`자동으로. » 그 없이는 에이전트는 기사 시작 부분에서 제가 설명한 것처럼 빈 페이지와 같습니다. 그 있으면 에이전트는 이미 손에 쥔 절대 규칙, 프로젝트 아키텍처, 그리고 필수 명령을 가지고 있습니다 — 저조차도 인사하기 전에.
이 파일의 중요성을 우연히 발견했습니다. 위`bakery-plugin`, 존재하지 않았습니다. 나는 왜 에이전트가 이 프로젝트에서 다른 프로젝트들에 비해 체계적으로 더 « 잃어버린 » 상태였는지 궁금했다. 절대 규칙들은 잘 들어 있었다.`AGENT.adoc`— 하지만`AGENT.adoc`절대 충전되지 않았습니다. 에이전트는 내가 읽으라고 지시한 내용만 읽었고, 매 세션마다 수동으로 수행했습니다. 이것은 세션 11의`bakery-plugin`quand 나는 ...의 부재를 깨달았을 때`opencode.json`. 저는 그것을 만들었습니다 — 그리고 세션 12은 다른 세션들과 마찬가지로 시작되었습니다.
이 파일은 지금 나에게 너무나 명백해서 그를 전혀 생각하지 않는다. 도구를 너무 잘 아는 개발자가 흔히 저지르는 실수다. 오늘은 나는 그것을 체계적으로 *먼저* 만든다.`AGENT.adoc`. 이것은 첫 번째 돌이다.
==== 의 이중성 `INDEX.adoc
또 명시할 가치가 있는 또 다른 미묘함 :`INDEX.adoc`에 산다`.agents/`— 제가 `LAZY`라고 제시한 폴더. 하지만 저는 모든 테이블에서 그것을 `EAGER`라고 등록합니다. 여기에는 명백한 긴장이 있습니다.
현장 현실 : 파일들`.agents/INDEX.adoc`자동으로 시작 시에 잘 로드되며, 그와 마찬가지로`AGENT.adoc` et `PROMPT_REPRISE.adoc`그들은 안에`.agents/`조직상의 이유로 — 루트를 침범하지 않기 위해 — 하지만 그들의 동작은 EAGER.
위`plantuml-plugin`, `INDEX.adoc`200줄에 *완전한* 절대 규칙과 그 기록(지난 세션의 교훈)과 함께, EPIC과 점수, 그리고 프로젝트 포트폴리오가 포함되어 있습니다. 이것은 에이전트가 '현재 진행 상황'을 알기 위해 참조하는 문서입니다. 위`bakery-plugin`, 그는 로드맵과 최근 세션으로 150줄을 만든다.
의도적인 중복 사이`AGENT.adoc` et `INDEX.adoc`놀라울 수 있습니다. 절대 규칙은 양쪽에 존재합니다. 왜 ? 왜냐하면它们... : 안에`AGENT.adoc`, 그들은 *설명적인* (규칙의 이야기, 배운 교훈); 안에서`INDEX.adoc`,그녀들은 *집행적인* (벌거숭이 규칙, 정당화 없이, 빠른 참고를 위해). 에이전트는 읽는다`AGENT.adoc`한 번 *comprendre*를 위해; 그는 다시 읽는다`INDEX.adoc`각 세션에 *적용*하기 위해. 두 가지 사용법, 두 가지 형식.
[plantuml, format=svg, id=diag-dualite-agent-index, alt="Comparaison entre AGENT.adoc (narratif) et INDEX.adoc (exécutif)"]
----
@startuml
skinparam backgroundColor #FEFEFE
skinparam defaultTextAlignment center
title 이중성 AGENT.adoc ←→ INDEX.adoc
left to right direction
rectangle "AGENT.adoc
(근원 — EAGER)" as AGENT #E3F2FD {
rectangle "📖 **서사 형식**
규칙의 스토리텔링
배운 교훈, 맥락" as NARR
rectangle "🏗️ **완전한 아키텍처**
프로젝트 구조, 구성 요소
상세한 US 백로그" as ARCHI
rectangle "📋 **설명 규칙**
왜 규칙이 존재하는가
사건 기록" as EXPL
}
rectangle "INDEX.adoc\n(.agents/ — 열망하는)" as INDEX #E8F5E9 {
rectangle "⚡ **실행 형식**
규칙 자체만, 정당화 없이
빠른 상담" as EXEC
rectangle "📊 **Roadmap & EPICs**\n요약 표\n진행 상황, 점수, 우선순위" as ROAD
rectangle "🌐 **프로젝트 포트폴리오**
횡단 뷰
5개의 동기화된 프로젝트" as PORT
}
AGENT --> INDEX : "에이전트가 AGENT.adoc를 읽음\n이해하기 위해 한 번"
INDEX --> AGENT : "Agent relit INDEX.adoc\n각 세션에 **적용하기 위해**"
note bottom of AGENT
Taille max : 200 lignes
end note
note bottom of INDEX
Taille max : 200 lignes
Source de vérité en cas de divergence
end note
@enduml
----
이 명시적인 중복은 설계 선택입니다. 이는 EAGER 토큰에서 약 50줄을 추가로 소비하지만 — 에이전트가 항상 규칙을 눈앞에 두도록 보장합니다. 여기에는 즉각적인 순종을 촉진하는 간결한 형식도 포함됩니다.
=== LAZY 파일: 소유자 매뉴얼
이 파일들은 ...에 존재합니다`.agents/`그리고 에이전트가 필요할 때만 읽힙니다. 그들은 방법의 진정한 가치를 구성하며, 왜냐하면 그들은 현재 맥락을 오염시키지 않고 프로젝트의 지식을 축적하기 때문이다.
[plantuml, format=svg, id=diag-agents-tree, alt="Arborescence complète du dossier .agents/"]
----
@startuml
skinparam folderBackgroundColor #E3F2FD
skinparam folderBorderColor #1565C0
skinparam fileBackgroundColor #FFF3E0
skinparam fileBorderColor #EF6C00
folder ".agents/" as ROOT {
file "INDEX.adoc\n(EAGER -- 200 줄)" as IDX #E8F5E9
file "AGENT_SESSION_MANAGER.adoc
템플릿 세션" as ASM
file "SESSION_CHECKLIST.adoc
(변경 시점)" as CHK
file "PROCEDURES.adoc
(6 단계 + LAZY/EAGER)" as PRO
file "SESSIONS_HISTORY.adoc
(모든 세션)" as HIS
folder "세션/" as SESS {
file "1-일-마이그레이션.adoc" as S1
file "109-정식화-게으른.adoc" as S109 #FFECB3
file "133-epic11-article.adoc" as S133
file "... +130 다른" as SMORE
}
folder "아카이브/" as ARCH {
file "COMPLETED_TASKS_2026-04.adoc" as CTA
file "SESSIONS_HISTORY_83-95.adoc" as SHIST
folder "세션_요약/" as SUM {
file "SESSION_64_SUMMARY.adoc" as SU64
file "SESSION_73_SUMMARY.adoc" as SU73
file "..." as SUMORE
}
folder "프롬프트_아카이브/" as PARCH {
file "PROMPT_REPRISE_S65.adoc" as PR65
file "PROMPT_REPRISE_S75.adoc" as PR75
file "..." as PMORE
}
}
}
IDX --> SESS : "색인"
IDX --> HIS : "색인"
IDX --> ARCH : "참조"
note right of S109
Session 109 =
Formalisation stratégie
LAZY/EAGER
Token : ~25k → ~10k
end note
@enduml
----
위 트리 구조는 폴더의 실제 구조를 보여줍니다.`.agents/`위에`plantuml-plugin`, 가장 성숙한 프로젝트. 세 층의 깊이에 주의하세요: 루트 파일(메타데이터), 폴더`sessions/`(연대순 아카이브), 그리고 폴더`archives/`(집계 및 요약). 이 깊이는 단순한 TODO 파일의 거버넌스를 무엇인가로 변환한다.**완전한 조직 기억**.
**.agents/sessions/{N}-{titre}.adoc**-- 각 세션의 상세한 아카이브. 현재 :
* `plantuml-plugin` : **133개의 세션이 보관되었습니다**(세션 1부터 133까지)
* `bakery-plugin`:**11 세션**
* `magic-stick`:**23 세션**
* `cheroliv.com`:**9회 공식 세션**+ 7개의 사전 시스템 세션이 역으로 재구성되었습니다
각 아카이브에는 세션의 전체 컨텍스트, 이루어진 결정, 발생한 문제와 그 해결, 실행된 명령과 그 출력이 포함됩니다.
**.agents/SESSIONS_HISTORY.adoc**-- 모든 세션의 점수를 요약한 표. 예시에서`cheroliv.com`:
----
| -6 | 2025-05 | chore | Initialisation projet Gradle/JBake | 7/10 | 1 | 2026-04-25 | chore | Migration gouvernance agent | 8/10 | 7 | 2026-04-27 | debug/fix | Correction publishSite | 9/10 | 8 | 2026-04-27 | analyse | Analyse article 0108 | 7/10
**.agents/COMPLETED_TASKS_ARCHIVE_{월}.adoc**-- 완료된 작업들을 월별로 아카이브하여 활성 백로그를 과부하시키지 않도록 합니다. 사용자 스토리가 완료되면 여기서 이동합니다. 백로그는 읽기 쉬운 상태를 유지하며, 활성 항목은 최대 10개입니다.
**.agents/PROCEDURES.adoc**-- 세션 종료 절차의 상세 템플릿. 길지만, 에이전트가 방법을 배울 때 한 번만 읽음. 이후 절차는 기계적이 된다.
**.agents/AGENT_MODUS_OPERANDI.adoc**-- 전략적 문서 전체. 위에`plantuml-plugin`, 이 파일은**900+ 줄**그리고 실제로 불리는`AGENT_METHODOLOGIES.adoc`— 나는 이 기사를 쓰는 동안과 실제로 적용하는 사이에 이름을 바꾸었다. 이런 종류의 네이밍 차이는 진화하는 수공예 시스템에서는 피할 수 없다. 중요한 것은 이름 짓기 관습이다: 만약 파일이 *메서드*를 문서화한다면, 그것은 ...로 시작한다.`AGENT_`또는 명시적 접두사. Eager/Lazy 방법론을 문서화하고, 따라야 할 패턴과 피해야 할 안티패턴을 설명합니다. 이는 LAZY이기 때문인데, 에이전트는 매 세션마다 전체 전략을 다시 읽을 필요가 없고, 오직 애매함이 있을 때만 그렇게 한다.
**`*_REFERENCE.adoc`** -- 프로젝트에 특화된 기술 참조. 에`magic-stick`, 두 개의 LAZY 밀집 파일 :
* `AB_PARTITION_REFERENCE.adoc`(147줄) -- A/B 파티션 아키텍처 GPT, 스크립트`update-system.sh`, 추정 크기, 롤백 메커니즘
* `BOOT_TEST_REFERENCE.adoc`(144 줄) -- QEMU + VNC를 이용해 물리적 하드웨어 없이 ISO 부팅을 테스트하는 절차, BIOS/UEFI 체크리스트, CI/CD 제한
위`plantuml-plugin` :
* `ARCHITECTURE.adoc`(134줄) -- 11개의 데이터 클래스 구조, 주의 사항 (피해야 할 함정), 최적화된 테스트 명령어
* `API_KEY_POOL_REFERENCE.adoc`-- 키 풀의 전체 세부 정보 (LAZY 동안`ESSENTIALS`이다 EAGER)
== 전문 에이전트 : 가상 팀
거버넌스는 정적인 파일에만 한정되지 않습니다. 저는 일부를 형식화했습니다**전문 에이전트들의 역할**전용 LAZY 파일에서, 작업 유형에 따라 예상되는 워크플로우를 정의합니다.
|===
|에이전트 |파일 |역할 |프로젝트 |**코더** |`CODER.adoc` |FTL/CSS/JS 구현, 시맨틱 태그, 접근성 기준 |cheroliv.com |**스크럼 마스터** |`SCRUM_MASTER.adoc` |미국 계획, 하위 작업으로 분할, 의존성 감지 |cheroliv.com |**PlantUML 디자이너** |`PLANTUML_DESIGNER.adoc` |다이어그램 작성, PUML 구문, JBake 통합 |cheroliv.com
|===
파일`CODER.adoc`위`cheroliv.com`포함하는 구체적인 규칙이 있습니다: _하나`<h1>`페이지당_, _경로에 접두사 추가하기`${content.rootpath}`_, _언어를 선언`<html lang="${content.lang!"fr"}">`_. 이러한 협약은 한 번 작성되면 에이전트가 세션 1부터 자동으로 준수합니다.
파일`SCRUM_MASTER.adoc`산출물의 구조를 규정한다 :**목표**, **작업**(할당이 있는 좌표),**수용 기준**, **위험**. 행동 계획을 요청할 때, 에이전트는 내가 요청하지 않았음에도 이 구조를 생성합니다. 거버넌스**프로그램**요원.
==== 전문화된 에이전트가 필수적이 될 때
전문 에이전트의 생성은 자연스러운 곡선을 따릅니다. 프로젝트 초반에는 필요하지 않습니다 —`AGENT.adoc`충분합니다. 하지만 프로젝트가 커질 때 (예를 들어, 20세션을 넘어) 두 가지 신호가 당신을 경고해야 합니다 :
1. 에이전트는 서로 다른 두 분야의 규칙을 혼합합니다(예: PlantUML 구문과 CSS 규칙)
2. 당신은 이미 5번 설명한 관습에 대해 에이전트를 수정하는 데 더 많은 시간을 보냅니다.
위`cheroliv.com`, 세션에 도착했습니다... 1. 예, 처음부터. 왜냐하면 이 프로젝트는 세 가지 언어(`FTL`, `CSS`, `JS`)로 이루어진 웹사이트이며, `AsciiDoc` 콘텐츠와 `PlantUML` 다이어그램이 포함되어 있기 때문입니다 — 세 가지 분야가 전혀 관련이 없습니다. `CODER` 에이전트는 글꼴 크기와 미디어 쿼리를 알아야 하며, `PLANTUML_DESIGNER` 에이전트는 문법을 알아야 합니다.`@startuml`. 분리 없이, CODER 에이전트가 다이어그램을 제시해 주었고, 반대도 마찬가지였다. 혼란.
위에`jhipster-gradle-plugins`, 저는 Gradle 플러그인 개발에 맞춘 두 개의 전문화된 에이전트를 만들었습니다 :`PLUGIN_DEVELOPER.adoc` et `BACKLOG_MANAGER.adoc`. 첫 번째는 Kotlin/Gradle의 모든 규약을 인코딩합니다(아니오`!!`, 모델에 대한 데이터 클래스,`@TaskAction`작업들에 대해). 두 번째는 알고 있다`persistence`안정적이어야만`assistant`개발을 시작하지 않는다 — 모노레포에서의 중요한 의존성
실수하지 말아야 할 것 : 너무 많은 에이전트를 너무 일찍 만드는 것`plantuml-plugin`108번째 세션을 기다린 후 API 키 풀을 위한 전문 에이전트를 공식화했습니다. 그때까지 비즈니스 컨텍스트는`AGENT.adoc`. 경험칙 : 전문 에이전트는 그 업무 분야가 문서 100줄을 초과할 때 정당화된다.
==== 세션 명명 규칙
사소해 보이는 세부 사항이지만 100 세션에 도달하면 중요해집니다. 아카이브 파일 이름을 어떻게 지어야 하나요?
나는 힘들게 배웠는데, 하나의 관습이 필요하다는 것을 — 네 개의 프로젝트, 네 가지 다른 형식으로 시작했고, 나는 길을 잃었다. 오늘 내가 확립한 관습은:
{N}-{type}-{sujet-kebab-case}.adoc
구체적인 예시 : * `1-chore-migration-gouvernance-agent.adoc`— 세션 1, 타입 안무 * `10-solidification-tests.adoc`— 세션 10, 명시적 타입이 없음 (주어가 충분함) * `036-debug-graphify-symlink-epic9.adoc`— 세션 36, 3자리 숫자로 정렬 세션 번호가 주요 정렬 기준입니다. 3자리 숫자(001, 036, 133)를 사용하는 프로젝트는 99를 초과할 때 사전식 정렬 문제를 피합니다. 이것이 제가 지금부터 사용하는`magic-stick`:`001-init-projet.adoc`, `036-debug-graphify-symlink-epic9.adoc`. 타입은 선택 사항이며, 세션의 키워드(debug, feature, refactor, docs, chore, test)에서 파생됩니다. kebab-case 형식의 주제는 가장 중요한 부분이며, 파일을 열지 않고 세션을 찾을 수 있어야 합니다. «통합 테스트의 타임아웃을 수정한 세션은 어느 것이었나요?», 답은`124-fix-timeout-integration-test.adoc`. 재구성된 역사적 세션(거버넌스 이전에 태어난 프로젝트)에는 음수를 사용합니다. 위`cheroliv.com`, 세션 -6부터 0까지는 프로젝트의 전체 사전 거버넌스 역사를 다룹니다. 그리고 문서화되지 않거나 잃어버린 세션에 대해, 나는 항목을 만든다`SESSIONS_HISTORY.adoc`해당하는 아카이브 없이, 점수가 있음`?`. 그거는 솔직해 보이는 것보다 더 솔직하다. [plantuml, format=svg, id=diag-naming-convention, alt="Arbre de décision pour le nommage des fichiers de session"]
@startuml skinparam backgroundColor #FEFEFE skinparam defaultTextAlignment center skinparam wrapWidth 200
title 세션 명명 규칙 start
:Une session se termine; note right: Trigger "세션 종료"
if (Session antérieure\nà la gouvernance ?) then (oui) :Numéro NÉGATIF\n-6, -5 … 0; note right: Historique\nreconstitué :Suffixe : reconstitution; else (non) :Numéro POSITIF\nsur 3 chiffres si > 99; note right: 001, 036, 133\npour le tri lexicographique
:Détecter le **TYPE**; if (Mots-clés trouvés ?) then (oui) :debug / feature / refactor\ndocs / chore / test; else (non) :Omettre le type\n(le sujet suffit); endif
:Formuler le **SUJET** en kebab-case;
note right
Ex: fix-timeout-integration-test
Doit permettre de retrouver
sans ouvrir le fichier
end note
endif
note right • 1-chore-migration-gouvernance.adoc • 036-debug-graphify-symlink.adoc • 124-fix-timeout-integration-test.adoc • 133-epic11-article-blog-kg.adoc end note
if (Session documentée ?) then (oui) :Créer archive dans sessions/; :Ajouter ligne SESSIONS_HISTORY\navec score X/10; else (non) :Ajouter ligne SESSIONS_HISTORY\navec score ?\nsans archive; note right: L’honnêteté\nplutôt que le vide endif
stop @enduml
==== TEST_COVERAGE_ANALYSIS.adoc` — 5단계 세부 분석 세션 종료 절차의 단계 5가 가장 미스터리합니다. 그것은 '업데이트'라고 말합니다.`TEST_COVERAGE_ANALYSIS.adoc`테스트가 추가되거나 수정되었습니다. » 하지만 이 파일은 어떤 모습인가요? 위`plantuml-plugin`, 몇 줄에서 완전한 구조로 진화했습니다. 다음은 그 안정화된 형태입니다: [source]
Analyse de Couverture de Tests
Suivi des Tests
Classe de test |
Type |
Tests |
Statut |
Dernière MAJ |
PlantumlServiceTest |
unit |
45/45 |
✅ PASS |
2026-04-23 |
ApiKeyPoolTest |
integration |
15/15 |
✅ PASS |
2026-04-20 |
Historique par Session
| Session | Tests ajoutés | Tests modifiés | Couverture | 133 | 0 | 2 | 100% | 132 | 5 | 0 | 100%
---- 관심은 파일 자체에 있는 것이 아니라 — 변경된 사항을 기록 해야 하는 의무다. 이 단계를 거치지 않으면, 50번의 세션 후에 어떤 테스트가 무엇을 커버하는지 더 이상 알 수 없게 된다. 에이전트도 마찬가지다. 파일은 프로젝트 테스트 커버리지에 대한 단일 진실 원천이 된다. 전통적인 테스트가 없는 프로젝트 (예:`magic-stick`bash 스크립트를 테스트하는), 5단계는 대체됩니다`SCRIPT_VERIFICATION.adoc`. 메커니즘은 같습니다 : 스크립트 유효성 검사 상태를 추적하는 파일입니다. 프로젝트에 맞게 5단계를 조정하되 절대 건너뛰지 마세요. 그것은 침묵적인 회귀를 방지하는 안전망입니다. 만약 귀하의 프로젝트에 테스트가 전혀 없다 — 단위 테스트도, 기능 테스트도, 스크립트도 없이 — 빈 파일을 만들어서 « 할 일: 테스트 전략 정의하기. » 라는 섹션을 추가하세요. 이는 미래의 자신에게 이 주제가 아직 다루어지지 않았음을 상기시켜 줄 책갈피입니다. [plantuml, format=svg, id=diag-session-flow, alt="Flux d’une session type avec Eager/Lazy et agents"] ---- @startuml skinparam backgroundColor #FEFEFE start :Début session; note right: L’agent est une page blanche :Chargement EAGER auto; note right * AGENT.adoc (règles absolues) * PROMPT_REPRISE.adoc (mission N) * INDEX.adoc (état projet) end note if (Mission claire ?) then (oui) :Exécution directe; else (non) :Charge LAZY sur demande; note right * SESSIONS_HISTORY.adoc (contexte passé) * sessions/{N-1}-.adoc (décisions) * *REFERENCE.adoc (architechture) end note endif :Délégation agent spécialisé ?; if (CODER ?) then (oui) :Lit CODER.adoc; :Suit conventions FTL/CSS; elseif (SCRUM Master ?) then (oui) :Lit SCRUM_MASTER.adoc; :Structure livrable imposée; elseif (PlantUML ?) then (oui) :Lit PLANTUML_DESIGNER.adoc; :Syntaxe PUML + intégration; else (non) endif :Travail de la session; :Fin de session (trigger utilisateur); :Procédure 6 étapes; note right 1. Archive sessions/N-.adoc 2. Maj PROMPT_REPRISE.adoc (N+1) 3. Maj SESSIONS_HISTORY.adoc 4. Maj INDEX.adoc 5. Maj TEST_COVERAGE (si applicable) 6. Maj COMPLETED_TASKS_ARCHIVE.adoc end note :Checklist [✅] x 6; stop @enduml ---- 위쪽 다이어그램은 세션의 전체 생명 주기를 보여줍니다. 핵심 포인트는 EAGER 로드 후의 분기입니다: 미션이 충분히 명확해서 직접 실행할 수 있는 경우(80%의 경우)와, 애매함을 해결하기 위해 LAZY를 로드하는 경우(20%의 경우)입니다. 이러한 차별화가 토큰을 절약합니다. == 세션 종료 절차 : 황금 규칙 === 왜 그녀는 필수적인가? 이 절차가 없으면 Eager/Lazy 전략은 무용지물이다. 이 절차가 세션의 작업을 지속 가능한 정보로 변환한다. 이 절차가 실행된다.사용자의 명시적 요청에 따라(키워드 : "세션 종료", "나는 떠나", 등등), 그리고 그녀는필수-- 예외도 없고, 누락도 없습니다. 파일`SESSION_CHECKLIST.adoc`이상적인 세션 메트릭스를 정의합니다 : * 소요 시간 : 15-30분 * 수정된 파일 : 1-3 최대 * LLM 교환 : 5-10 메시지 * 컨텍스트 토큰 : < 50k 세션을 변경해야 하는 징후는 다음과 같습니다 : _LLM이 이미 수정된 오류를 반복한다, 3개 이상의 파일이 동시에 수정됨, 대화가 50개 메시지 초과. 황금 규칙 :2시간 동안 디버깅이 혼란스러운 한 번의 세션보다 20분짜리 5번의 세션이 더 좋다. === 6단계 흐름 (침묵으로) [plantuml, format=svg, id=diag-end-session-flow, alt="Flux de la procédure de fin de session"] ---- @startuml skinparam defaultTextAlignment center skinparam wrapWidth 200 skinparam activityBackgroundColor #E3F2FD start :L’utilisateur dit "세션 종료"; note right: Mots-clés déclencheurs :Agent détecte le trigger; :Étape 1\nCréer archive\n`.agents/sessions/N-.adoc`; note right: Tout le contexte de la session :Étape 2\nMettre à jour\n`PROMPT_REPRISE.adoc`; note right: Mission N + critères d’acceptation N+1 :Étape 3\nMettre à jour\n`SESSIONS_HISTORY.adoc`; note right: Ligne récap : # / Date / Type / Sujet / Score :Étape 4\nMettre à jour\n`INDEX.adoc`; note right: État courant, roadmap, fichiers modifiés :Étape 5\nMettre à jour\n`TEST_COVERAGE_ANALYSIS.adoc`; note right: Si tests ajoutés ou modifiés :Étape 6\nMettre à jour\n`COMPLETED_TASKS_ARCHIVE.adoc`; note right: Archiver tâches terminées :Afficher la checklist de confirmation; note right: Vérifier que chaque [✅] est mérité stop @enduml ---- === 150+ 세션의 결과 이 절차를 내 네 개 프로젝트에 체계적으로 적용했을 때 결과는 다음과 같습니다: plantuml-plugin: * 133 세션프로젝트 시작 이래 * 240/240 테스트 PASS(100% 커버리지) — EPICs 1-7 완료 * 57개의 Cucumber BDD 시나리오검증된 * 실제 오류에서 발생한 구성 파일 안전 규칙 (Session 2 bakery-plugin) 베이커리-플러그인 : * 11 세션두 주 안에 * Supabase → Firebase 마이그레이션 완료 (9개 테스트 수정됨) * EPIC 6 (publishProfile)는 프로덕션에서 기능적으로 작동합니다 * 규칙 0이 생성되었습니다:`publishToMavenLocal`각 수정 후 필수 마법 스틱: * 23 세션Xubuntu 라이브 시스템을 A/B 파티션으로 구성하려면 * 세션 10에서 생성된 첫 번째 ISO * 공식화된 QEMU + VNC 부팅 테스트 (144줄의 LAZY 문서) * CI/CD SourceForge 기능적인 cheroliv.com: * 9개의 공식 세션+ 프리-시스템 세션 7개의 재구성 * Article 0101 (OpenCode PATH) 게시됨 * 제0108조 (이것)는 분석 후 재작성되었습니다 * 마크다운에서 애스시도크로 이전된 완전한 거버넌스 === 최종 체크리스트 6단계를 침묵적으로 실행한 후, 에이전트는 확인 체크리스트를 표시해야 합니다 : ---- ✅ Procédure de fin de session exécutée 📋 Checklist : 절대적인 규칙: 어떤 단계도 표시할 수 없습니다`[✅] == Bootstrap 가이드: 1일 차, 세션 0 당신은 그 방법에 확신을 가지고 있습니다. 그것을 새로운 프로젝트에 적용하고 싶습니다. 어디서부터 시작해야 할까요? 나는 그 순간을 2026년 4월 28일에 경험했다. 나는 Opencode를 연다 위에`jhipster-gradle-plugins, 저의 JHipster Gradle 플러그인 두 개의 모노레포. 이미 존재하는 프로젝트입니다 — 코드가 거기에 있고, Gradle 작업들이 정상 동작합니다. 하지만 에이전트 거버넌스 ? 제로. 빈 페이지.처럼`plantuml-plugin`그의 세션 1에, 몇 달 전에. 여기 제가 따르는 정확한 절차가 있고, 앞으로 모든 새로운 프로젝트에 대해서도 이 절차를 따를 것입니다. 순서를 잘 살펴보세요 — 이것이 중요합니다. [plantuml, format=svg, id=diag-bootstrap, alt="Flux de bootstrap en 6 étapes pour initialiser la gouvernance agent sur un nouveau projet"] ---- @startuml skinparam backgroundColor #FEFEFE skinparam defaultTextAlignment center skinparam wrapWidth 250 skinparam activityBackgroundColor #E8F5E9 title Bootstrap 거버넌스 — 1일차, 세션 0 start :Étape 0\nCréer opencode.json\n(6 lignes, instructions: AGENT.adoc); note right: Le pont qui charge\nAGENT.adoc automatiquement :Étape 1\nCréer les dossiers\nmkdir -p .agents/sessions/ .agents/archives/; note right: Les conteneurs vides\navant que l’agent écrive dedans :Étape 2\nCréer AGENT.adoc\n(200 lignes, règles absolues); note right: Le fichier maître\nStructure minimale v1 :Étape 3\nCréer PROMPT_REPRISE.adoc\nMission session 1 (max 70 lignes); note right: Ce que l’agent doit\nfaire à la prochaine session :Étape 4\nCréer .agents/INDEX.adoc\nRègles exécutives + roadmap; note right: Point d’entrée EAGER\ndans le dossier LAZY :Étape 5\nCréer les fichiers LAZY structurants\n6 fichiers : SESSIONS_HISTORY, CHECKLIST, etc.; note right • SESSIONS_HISTORY.adoc • SESSION_CHECKLIST.adoc • PROCEDURES.adoc • AGENT_SESSION_MANAGER.adoc • TEST_COVERAGE_ANALYSIS.adoc • Agents spécialisés (si besoin) end note :Étape 6\nAjouter le projet au Portefeuille\nMettre à jour TOUS les INDEX.adoc existants; note right: Maintenance transverse\nObligatoire mais fastidieuse :✅ Bootstrap terminé\nSession 1 prête; note right: 20 minutes investies\nDes centaines économisées stop @enduml ---- === 단계 0 : 이것은 첫 번째 파일입니다. 아니요`AGENT.adoc`, 안`INDEX.adoc`. === 단계 1: 폴더 생성 [source,bash] ---- mkdir -p .agents/sessions .agents/archives ---- 빈 폴더 두 개`sessions/ === 단계 2: `AGENT.adoc 생성 — 마스터 파일 첫 번째 버전을 위한 최소 구조 (성장할 것입니다) : [source] ---- = {NOM_PROJET} — Directives Agent [CAUTION] ---- 의무 정지rm 전, Write, 삭제: 1. 파일을 끝까지 읽어라 2. 확인 git ls-files 3. 확인 요청 4. 예"를 기다리다 == 프로젝트 이름… 스택: … 문서: AsciiDoc == 절대 규칙 === 0. 개발 환경 필수 명령어… === 1. COMMITS/GIT 공식적인 금지… === 1b. 구성 파일 — 절대 안전 규칙 절대로 눌러서는 안 돼… === 2. 세션 종료 테스트 금지령… === 3. 세션 종료 절차 필수 6단계… == 컨텍스트 관리 — LAZY/EAGER EAGER 파일 / LAZY 파일… 이 최소 템플릿은 에이전트가 시작할 수 있게 해줍니다. 풍부한 버전 — 프로젝트 구조, 핵심 구성 요소, EPIC, 백로그 포함 — 은 에이전트가 이미 기본 규칙을 손에 쥐고 있을 때 세션 1에 제공될 것이며, 문서를 풍부하게 하는 데 도움을 줄 것입니다. === 3단계: 만들기 다음과 같이 명시된 파일: « 이것이 세션 1, 정의해야 할 미션입니다. » 최대 70줄, 세션 0(부트스트랩 요약) 섹션과 세션 1(사용자와 정의할 우선순위) 섹션이 포함됩니다. === 4단계: 생성 절대 규칙(실행 버전)과 세션 테이블을 포함할 파일입니다. 부트스트래핑을 위해, 규칙 0부터 3까지를 간결한 형식으로 나열하고, 프로젝트 포트폴리오(새로운 프로젝트와 함께 이모지 🆕 포함)와 빈 로드맵(채워질 준비가 된)을 나열합니다. === 5단계 : LAZY 구조화 파일 생성 순서대로: 1. 만약 당신의 프로젝트가 복잡한 비즈니스 도메인을 가지고 있다면 (예를 들어`jhipster-gradle-plugins`persistence/assistant 단일 레포와 함께, 지금 바로 전문 에이전트를 생성하세요 : 1. 사용하지 않을 에이전트는 만들지 마세요. 인코딩할 구체적인 규칙이 없는 에이전트는 오염을 일으키는 죽은 파일이다. === 단계 6: 모든 프로젝트의 포트폴리오에 프로젝트 추가 그것은 우리가 항상 잊어버리는 단계입니다. 각`INDEX.adoc`각 프로젝트는 동일한 방법론으로 모든 프로젝트를 나열하는 '프로젝트 포트폴리오' 테이블을 포함합니다. 새 프로젝트를 생성할 때 반드시 해야 할 일: 1. 새 프로젝트 포트폴리오에 라인 추가 (논리) 2. 기존 모든 프로젝트의 포트폴리오에 한 줄 추가하기 — 예, 모두 내 네 개(지금은 다섯 개)의 프로젝트에 대해, 이는 여는 것을 의미한다. |
Session 1 |
… |
2026-04-28 🆕 이건 지루합니다. 이건 수동적입니다. 이것도 작업 중인 프로젝트가 무엇이든 에이전트가 다른 프로젝트가 무엇인지와 그 상태를 알고 있도록 보장하는 유일한 방법입니다. 세션 012에서`magic-stick, 에이전트는 포트폴리오에서 두 가지 불일치를 감지했습니다 —`bakery-gradle`그의 COMPLETED_TASKS_ARCHIVE가 지연되어 있었고,`plantuml-gradle`_그것은 절차 문서(5단계)와 그 INDEX(6단계)에 차이가 있었다. 이 교차 표가 없었다면, 이러한 불일치는 눈에 띄지 않았을 것이다. [plantuml, format=svg, id=diag-portfolio-graph, alt="Graphe du portefeuille de projets — références croisées entre INDEX.adoc"] ---- @startuml skinparam backgroundColor #FEFEFE skinparam defaultTextAlignment center skinparam nodeBackgroundColor #E3F2FD title 프로젝트 포트폴리오 — 교차 참조 INDEX.adoc node "magic-stick Session 037 SCRIPT_VERIFICATION" as MS #E1BEE7 node "bakery-gradle 세션 11 테스트 커버리지" as BG #FFE0B2 node "cheroliv.com 세션 10 TEST_COVERAGE" as CH #C8E6C9 node "plantuml-gradle 세션 133 테스트 커버리지" as PG #BBDEFB node "jhipster-gradle 세션 1 🆕 테스트_커버리지" as JG #FFCDD2 MS -→ BG : INDEX.adoc référence MS -→ CH : INDEX.adoc référence MS -→ PG : INDEX.adoc référence MS -→ JG : INDEX.adoc référence 🆕 BG -→ MS : INDEX.adoc référence BG -→ CH : INDEX.adoc référence BG -→ PG : INDEX.adoc référence BG -→ JG : INDEX.adoc référence 🆕 CH -→ MS : INDEX.adoc référence CH -→ BG : INDEX.adoc référence CH -→ PG : INDEX.adoc référence CH -→ JG : INDEX.adoc référence 🆕 PG -→ MS : INDEX.adoc référence PG -→ BG : INDEX.adoc référence PG -→ CH : INDEX.adoc référence PG -→ JG : INDEX.adoc référence 🆕 JG -→ MS : INDEX.adoc référence JG -→ BG : INDEX.adoc référence JG -→ CH : INDEX.adoc référence JG -→ PG : INDEX.adoc référence note bottom of JG Quand on ajoute un projet : • 4 INDEX.adoc à mettre à jour • 1 ligne par portefeuille • Coût : 5 minutes end note legend bottom |
= Couleur |
= Projet |
<#E1BEE7> |
|
magic-stick — ISO Linux live |
<#FFE0B2> |
bakery-gradle — Plugin JBake |
|
<#C8E6C9> |
cheroliv.com — Site personnel |
||
<#BBDEFB> |
plantuml-gradle — Plugin IA |
<#FFCDD2> |
관련 기사
31 May 2026
14 May 2026