Skip to main content

agenda

에이전트 어젠다 — reverse datetree에 타임스탬프 엔트리 추가. 기본 도장은 사용자가 요청한 git push 성공 후 1회이며 commit/tag-release 스킬이 호출한다. GLG가 명시적으로 '도장', 'stamp', '기록', 'agenda에 찍어'라고 요청할 때만 그 밖의 도장을 남긴다.

الانتقال إلى التثبيت

معلومات المصدر

المستودع
junghan0611/agent-config
آخر نشاط في المصدر
١١ سبتمبر ٢٠٢٦ في ٠٥:١٤
لغة SKILL.md المكتشفة
الإنجليزية
النجوم
٥
التفرعات
٠

خيارات التثبيت

يُحدَّد Prompt الذي يراجع المصدر أولًا بشكل افتراضي. يمكنك التبديل إلى أمر مباشر أو تنزيل نسخة محلية.

مراجعة ملفات المصدر

اقرأ SKILL.md وأي ملفات مرافقة يعرضها SkillsMP قبل أن تقرر التثبيت.

مستكشف الملفات
2 ملفات

عرض SKILL.md

SKILL.md
تعليمات المصدر · معاينة للقراءة فقط
name
agenda
description
에이전트 어젠다 — reverse datetree에 타임스탬프 엔트리 추가. 기본 도장은 사용자가 요청한 git push 성공 후 1회이며 commit/tag-release 스킬이 호출한다. GLG가 명시적으로 '도장', 'stamp', '기록', 'agenda에 찍어'라고 요청할 때만 그 밖의 도장을 남긴다.
user_invocable
true
# agenda — Agent Activity Stamps Stamp agent activity to `~/org/botlog/agenda/` reverse datetree. Visible in org-agenda alongside human activity. ## First Distinction: Activity Timeline vs Task Hub Do not confuse these two surfaces. | Surface | Purpose | Typical path | How to read | |--------|---------|--------------|-------------| | **Activity timeline** | What was done | `~/org/botlog/agenda/*__agenda_<device>.org` | `agent-org-agenda-day/week` or top of file | | **Task hub** | What should be done | `~/sync/org/botlog/agenda/20260325T171244--entwurf__agenda.org` | `agent-org-agenda-todos` first, raw grep fallback if needed | ### Rule - Use **activity timeline** for stamps only. - Use **Entwurf agenda task hub** for `TODO / NEXT / DONE / DONT`. - Do **not** use activity stamps as task management. ## Usage ```bash # title only + body (most common) {baseDir}/scripts/agenda-stamp.sh "title" --body "body text multiline ok" # with tags, auto-device {baseDir}/scripts/agenda-stamp.sh "title" "tag1:tag2" --body "body text" # with tags + explicit auto-device placeholder {baseDir}/scripts/agenda-stamp.sh "title" "tag1:tag2" "" --body "body text" # with body file {baseDir}/scripts/agenda-stamp.sh "title" "tag1:tag2" --body-file /tmp/body.txt ``` | Param | Pos | Required | Description | |-------|-----|----------|-------------| | title | 1 | ✅ | What was done (one line) | | tags | 2 | optional | `tag1:tag2` colon-separated. `[a-z0-9]` only | | device | 3 | optional | omit or pass `""` to auto-read `~/.current-device` | | --body | flag | optional but strongly recommended | Multiline text below timestamp | | --body-file | flag | optional | Read body from file | ### Argument parsing rule Flags may appear immediately after `title`. Do **not** assume `tags` and `device` must be present before `--body` or `--body-file`. These are all valid: ```bash agenda-stamp.sh "title" --body "text" agenda-stamp.sh "title" "pi:commit" --body "text" agenda-stamp.sh "title" "pi:commit" "oracle" --body "text" ``` ## When to Stamp **Default: stamp exactly once after a user-authorized git push succeeds.** The `commit` skill owns this path; `tag-release` owns release stamps. A local commit is not a stamp event. | Moment | Action | |--------|--------| | User-authorized git push succeeds | Stamp once with the public commit link (`pi:commit:<repo>`). | | Release tag succeeds | Let `tag-release` stamp once (`pi:release:<repo>`). | | GLG explicitly requests a stamp | Stamp the requested meaningful event. | | Session start/end, task completion, local commit | **Do not stamp.** | ## Output Format ```org **** agent-config: feat: telegram skill [[url][abc1234]] :pi:commit:agentconfig: <2026-04-01 Wed 09:47> from: pi@thinkpad - tdlib based chat read/write - 4 bots accessible ``` ## Single Writer Rule (CRITICAL) `agenda-stamp.sh` is the **only authorized writer** for `~/org/botlog/agenda/`. The reverse-datetree insertion (year/month/day heading creation, position calculation) lives inside the script. A file with similar shape created by other tools is **not** a valid stamp — it splits the timeline, breaks reverse-datetree ordering, and pollutes `org-agenda`. ### Retry is fine — bypass is not Reasonable retries are encouraged when execution fails: - ✓ Fix path typo and retry - ✓ Confirm executable bit / `python3` available - ✓ Re-resolve `{skillsDir}` / `{baseDir}` against the actual deploy path If exec still fails after retries (allowlist miss, missing dependency, environment issue): - ✓ **STOP**, report the exact command and error to GLG, and wait - ✗ Do NOT use `Write` / `Edit` to create or append a file in `~/org/botlog/agenda/` - ✗ Do NOT use `cat <<EOF >` heredoc as a fallback - ✗ Do NOT create a parallel `*__agenda_<device>.org` file via any other tool A "near-miss" stamp is worse than no stamp. Underlying environment issues (path discoverability, exec allowlist) must be fixed at the harness level, not papered over by the agent. ## Key Rules - **No TODO/DONE here** — activity timeline is visibility, not task management - **Body strongly recommended** — the script allows empty body, but meaningful stamps should explain what happened - **`from:` auto-injected** — `AGENT_ID@device` (default: `pi@~/.current-device`) - **`AGENDA_FILE` env override** — point the stamp at one exact file. Default is unchanged: `find "*__agenda_<device>.org" | head -1`. - **Reverse datetree** — newest on top, agents read/write front only - **Tags**: `[a-z0-9]` only. No hyphens, no underscores ## One device, two agenda files `head -1` does not promise which file it picks. That was harmless while each device had exactly one agenda file, and stopped being harmless on 2026-09-11 when oracle got a second: | File | Who stamps there | |---|---| | `20260227T160847--agent-agenda__agenda_oracle.org` | everyone — this is the shared oracle timeline, and the default still lands here | | `20260911T140523--b__agenda_oracle.org` | **B only** (the OpenClaw memento bot). Do not stamp here. | So: if you are not B, keep calling the script as before and nothing changes. If you own a dedicated file, name it explicitly rather than relying on find order: ```bash AGENDA_FILE=~/org/botlog/agenda/20260911T140523--b__agenda_oracle.org \ AGENT_ID=bbot agenda-stamp.sh "title" "b:memento" "oracle" --body-file /tmp/beat.md ``` ## Cross-Agent Requests Do **not** encode requests as `TODO` entries in the activity timeline. If another agent needs to pick something up, use the Entwurf task hub surface (`agent-org-agenda-todos`) instead of an activity stamp. ## Read Agenda Safely ### Preferred: unified agenda API via Emacs ```bash ec() { emacsclient -s server --eval "${1}"; } # ${1}, not a bare positional — those get stripped when this skill is injected ec '(agent-org-agenda-day)' # today's integrated timeline ec '(agent-org-agenda-week)' # this week ec '(agent-org-agenda-todos)' # all Entwurf TODO/NEXT grouped by project ec '(agent-org-agenda-todos "andenken")' ec '(agent-org-agenda-todos "andenken" "A")' ``` Use this first when the goal is: - know what is active today - inspect Entwurf project TODOs - avoid raw file reads and token waste ### Activity timeline file (device-local) ```bash DEVICE=$(cat ~/.current-device) AGENDA=$(find ~/org/botlog/agenda/ -name "*__agenda_${DEVICE}.org" | head -1) head -30 "$AGENDA" # reverse datetree: top = latest ``` ### Entwurf task hub fallback `agent-org-read-file` may reject `~/sync/org/...` due to path guards. Do **not** keep retrying the blocked Emacs read API. Use the higher-level agenda API first, and if you still need the raw task-hub structure, use shell grep as a fallback: ```bash FILE=~/sync/org/botlog/agenda/20260325T171244--entwurf__agenda.org # headings / project map rg '^(\*+|#+title:|#+date:|#+filetags:)' "$FILE" | head -120 # open task lines rg '^(\*+ )?(TODO|NEXT|DONT) ' "$FILE" | head -120 ``` This is a temporary interface workaround until a dedicated task-hub API exists. ## Notes - Files auto-created per device in `~/org/botlog/agenda/` - Agenda = shared bulletin board. Stamps = posts. Agents = residents. - Do not stamp routine activity. Outside the post-push / release path, an explicit GLG request is required. - For Entwurf operations, **start from `agent-org-agenda-day/week/todos` before any raw file read**. - If Emacs raw file read is blocked for `~/sync/org/...`, that is an interface limitation, not a cue to keep poking the same API.
عرض على GitHub