comitia 0.3.0 → 0.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: slack
3
- description: 슬랙에 글을 올리거나, 봇이 올린 글을 고치거나 지울 때 쓴다 — "슬랙에 보내", "슬랙에 올려", "#채널에 공유해", "팀에 알려", "아까 올린 거 지워줘", "그 글 고쳐줘". Comitia 에 연결된 봇으로 한다. 올리기·고치기·지우기 전에 반드시 채널과 대상을 사람에게 보여 주고 허락받는다.
3
+ description: Use to post to Slack, or to edit or delete a message the bot posted — "send it to Slack", "post this to Slack", "share it in #channel", "let the team know", "delete what you just posted", "fix that message". Goes through the bot connected to Comitia. Always show the channel and the exact text and get approval before posting, editing or deleting.
4
4
  allowed-tools:
5
5
  - Bash(comitia *)
6
6
  - Bash(z2o *)
@@ -9,81 +9,92 @@ allowed-tools:
9
9
  - Write
10
10
  ---
11
11
 
12
- # /comitia:slack — 슬랙에 올리기
12
+ # /comitia:slack — post to Slack
13
13
 
14
- Comitia 에 연결된 **봇**이 대신 올린다. 사람 이름으로 올라가지 않는다.
15
- **팀 전체가 보는 일이다 — 허락 없이는 한 글자도 올리지 않는다.**
14
+ The **bot** connected to Comitia posts on your behalf. It does not post under a person's name.
15
+ **The whole team sees this — never post a single word without approval.**
16
16
 
17
- 요청: `$ARGUMENTS`
17
+ Request: `$ARGUMENTS`
18
18
 
19
- ## 1. 무엇을 올릴지
19
+ ## 1. What to post
20
20
 
21
- - 회사 맥락이 필요한 글이면(요약·논의 정리·현황) **먼저 `comitia` 로 꺼내 읽는다** — 순서는 `/comitia:read` 와 같다.
22
- 짐작으로 채우지 않는다. 못 찾은 것은 글에서 뺀다.
23
- - 채널을 말하지 않았으면 **묻는다.** 짐작해서 고르지 않는다.
24
- - 봇이 들어가 있는 채널에만 올라간다.
21
+ - If the message needs company context (a summary, a write-up of a discussion, a status),
22
+ **pull it with `comitia` and read it first** — same sequence as `/comitia:read`.
23
+ Don't fill gaps with guesses. Leave out what you couldn't find.
24
+ - If no channel was named, **ask.** Don't pick one by guessing.
25
+ - It can only post to channels the bot has been invited to.
25
26
 
26
- ## 2. 초안 — 슬랙 표기로
27
+ ## 2. Draft — in Slack's markup
27
28
 
28
- - 굵게 `*글*` · 기울임 `_글_` · 코드 `` `글` `` · 목록 `•` 또는 `1.`
29
- - **`#` 제목·표·`**굵게**` 는 슬랙에서 안 먹는다** — 기호가 그대로 보인다.
30
- - 짧게. 슬랙은 훑어 읽는다 — 핵심 먼저, 긴 설명은 링크나 「자세한 건 Comitia 위키 ○○」로.
31
- - 끝에 **누가 올린 글인지** 한 줄: `_— <이름> · Comitia 봇으로 올림_`
32
- 이름을 모르면 묻는다.
33
- - 비밀번호·토큰·계좌번호·급여 같은 것이 들어가 있으면 **빼고, 뺐다고 말한다.**
29
+ - Bold `*text*` · italic `_text_` · code `` `text` `` · lists `•` or `1.`
30
+ - **`#` headings, tables and `**bold**` do not work in Slack** — the characters show up literally.
31
+ - Keep it short. People skim Slack — lead with the point, and push long detail to a link or
32
+ "details in the Comitia wiki under ○○".
33
+ - End with one line saying **who posted it**: `_— <name> · posted via the Comitia bot_`
34
+ If you don't know the name, ask.
35
+ - If it contains a password, token, account number, salary or anything like that,
36
+ **take it out and say you did.**
34
37
 
35
- ## 3. 🔴 허락 — 건너뛰지 않는다
38
+ ## 3. 🔴 Approval — never skip this
36
39
 
37
- 사람에게 **채널과 문구 전체**를 그대로 보여 주고 *"이대로 #○○ 에 올릴까요?"* 라고 묻는다.
40
+ Show the person **the channel and the full text**, exactly as it will go out, and ask
41
+ *"post this to #○○ as written?"*
38
42
 
39
- - **분명한 허락**(「올려」·「ㅇㅇ」)이 있을 때만 올린다. 대답이 모호하면 다시 묻는다.
40
- - 고쳐 달라고 하면 고친 **전체**를 다시 보여 주고 다시 묻는다.
41
- - **한 번의 허락은 그 글 하나에만.** 다음 글은 다시 묻는다.
43
+ - Post only on a **clear yes** ("post it", "yep"). If the answer is ambiguous, ask again.
44
+ - If they ask for changes, show the **whole** revised text and ask again.
45
+ - **One approval covers one message.** Ask again for the next one.
42
46
 
43
- ## 4. 올리기
47
+ ## 4. Posting
44
48
 
45
- 임시 파일에 쓰고 올린다(따옴표·줄바꿈이 셸에서 깨지지 않게).
49
+ Write to a temp file and post that, so quotes and line breaks don't get mangled by the shell.
46
50
 
47
51
  ```
48
- comitia slack <채널> <임시파일> 새 글로
49
- comitia slack <채널> <임시파일> --thread-of "<검색어>" 그 글의 스레드에 답글로
50
- comitia slack <채널> <임시파일> --thread <ts> 부모 ts 를 알 때
51
- comitia slack <채널> <임시파일> --edit-of "<검색어>" 봇이 올린 그 글을 통째로 바꾸기 (체크리스트 갱신 등)
52
- comitia slack <채널> <임시파일> --edit <ts> 고칠 글의 ts 를 알 때
53
- comitia slack <채널> --delete-of "<검색어>" 봇이 올린 그 글 지우기 (파일 없음 · 되돌릴 수 없음)
54
- comitia slack <채널> --delete <ts> 지울 글의 ts 를 알 때
52
+ comitia slack <channel> <tmpfile> as a new message
53
+ comitia slack <channel> <tmpfile> --thread-of "<query>" as a reply in that message's thread
54
+ comitia slack <channel> <tmpfile> --thread <ts> when you know the parent ts
55
+ comitia slack <channel> <tmpfile> --edit-of "<query>" replace a bot message wholesale (updating a checklist, etc.)
56
+ comitia slack <channel> <tmpfile> --edit <ts> when you know the ts to edit
57
+ comitia slack <channel> --delete-of "<query>" delete that bot message (no file · cannot be undone)
58
+ comitia slack <channel> --delete <ts> when you know the ts to delete
55
59
  ```
56
60
 
57
- 채널은 `project_0to1` 처럼 이름으로(`#` 는 있어도 없어도 된다). 올린 기록은 Comitia 연대기에 남는다.
58
- 올렸으면 **어느 채널(스레드면 어느 글 아래)에 올렸는지** 짧게 알린다.
61
+ Give the channel by name, like `project_0to1` (the `#` is optional). Every post is recorded in
62
+ the Comitia timeline. Once posted, briefly say **which channel** (and, for a thread, under which
63
+ message) it went to.
59
64
 
60
- **스레드**: 사람이 「○○ 스레드에」라고 하면 `--thread-of` 에 그 글의 **본문 일부**를 넣는다(예: 위클리 공지면 `"0913 위클리"`).
61
- 채널 최근 100건에서 가장 최근 매치를 부모로 잡는다 — 부모가 사람 글이어도 된다. 못 찾으면 그렇다고 돌아오니
62
- 검색어를 바꾸거나 사람에게 ts 를 받는다. 허락받을 때 **어느 글 아래에 달리는지**도 같이 보여 준다.
65
+ **Threads**: when the person says "in the ○○ thread", pass **part of that message's text** to
66
+ `--thread-of` (e.g. `"0913 weekly"` for a weekly announcement). It takes the most recent match
67
+ among the channel's last 100 messages as the parent — the parent can be a human's message.
68
+ If it can't find one it says so; change the query or ask the person for the ts. When you ask for
69
+ approval, show **which message it will hang under** as well.
63
70
 
64
- ## 5. 🗑️ 지우기 — 되돌릴 수 없다
71
+ ## 5. 🗑️ Deleting — cannot be undone
65
72
 
66
- 잘못 올린 글을 걷을 때. **봇이 올린 글만** 지운다.
73
+ For pulling back something posted by mistake. **Only messages the bot posted.**
67
74
 
68
- - 지우기 전에 **어느 채널의 어떤 글인지**(첫 줄이라도) 보여 주고 *"이 글을 지울까요? 되돌릴 수 없어요"* 라고 묻는다.
69
- - `--delete-of` 는 봇이 올린 글 중 최근 100건에서 찾는다 — 못 찾으면 그렇다고 돌아오니 검색어를 바꾸거나 ts 를 받는다.
70
- - ⚠️ **스레드 부모를 지우면 답글까지 사라진다.** 답글이 달린 글이면 그 사실을 먼저 알린다.
71
- - 지운 기록은 연대기에 남는다(채널·ts·첫 줄).
75
+ - Before deleting, show **which channel and which message** (at least the first line) and ask
76
+ *"delete this? It can't be undone."*
77
+ - `--delete-of` searches the bot's last 100 messages — if it finds nothing it says so;
78
+ change the query or get the ts.
79
+ - ⚠️ **Deleting a thread parent takes the replies with it.** If the message has replies, say so first.
80
+ - Deletions are recorded in the timeline (channel, ts, first line).
72
81
 
73
- ## 막히면
82
+ ## If you get stuck
74
83
 
75
- | 나온 말 | 할 일 |
84
+ | What it says | What to do |
76
85
  |---|---|
77
- | `chat:write` 권한이 없다 | 그 안내를 사람에게 그대로 전한다 — 슬랙 앱을 만든 사람이 권한을 넣고 다시 설치해야 한다 |
78
- | 봇이 채널에 없다 | 사람에게 그 채널에서 `/invite @봇이름` 을 부탁한다 |
79
- | 쓰기 권한이 없다 | *자료·정리까지* 토큰이 필요하다. 토큰은 사람이 직접 다시 연결한다 — **대화로 받지 않는다** |
80
- | 글이 너무 길다 | 나눠 올릴지 사람에게 묻는다 |
81
- | 봇이 올린 글만 지울 수 있다 | 사람이 올린 글이다 — 슬랙에서 직접 지우시라고 안내한다 |
86
+ | missing `chat:write` scope | Pass the message along as-is — whoever created the Slack app has to add the scope and reinstall |
87
+ | bot is not in the channel | Ask the person to run `/invite @bot-name` in that channel |
88
+ | no write permission | It needs a token that covers sources and organizing. The person reconnects it themselves — **never take a token through the chat** |
89
+ | message too long | Ask the person whether to split it |
90
+ | can only delete the bot's own messages | It's a human's message — tell them to delete it in Slack themselves |
82
91
 
83
- ## 못 하는 것
92
+ ## What it can't do
84
93
 
85
- 새 글 · 스레드 답글 · **봇이 올린 글 고치기·지우기**까지 된다. **DM · 사람이 올린 글 고치기·지우기는 안 된다** —
86
- 부탁받으면 안 된다고 말하고, 슬랙에서 직접 하시라고 안내한다.
94
+ New messages, thread replies, and **editing or deleting the bot's own messages** all work.
95
+ **DMs, and editing or deleting a human's messages, do not** — if asked, say so and point them
96
+ to doing it in Slack.
87
97
 
88
- **고치기**는 본문을 **통째로 덮어쓴다.** 부분만 바꾸더라도 전체 새 본문을 파일에 쓰고, 허락받을 때는
89
- 바뀐 부분을 짚어 보여 준다(예: 「0-1 · 1-4 … 17건을 ✅ 로」). 봇 자기 글만 찾으니 사람 글은 매치되지 않는다.
98
+ **Editing replaces the body wholesale.** Even for a small change, write the full new body to the
99
+ file, and when you ask for approval point out what changed (e.g. "0-1 · 1-4 … 17 items marked ✅").
100
+ It only matches the bot's own messages, so a human's message will never match.
@@ -1,35 +1,41 @@
1
1
  ---
2
2
  name: sync
3
- description: 슬랙·회의록 같은 연결된 자료를 지금 당겨올 때 쓴다 — "슬랙 동기화해", "방금 회의 가져와", "최신 거 당겨와", "sync 해줘", "방금 올린 슬랙이 안 보여". 매시 정각 자동 수집을 기다리지 않고 comitia sync 를 돌린다.
3
+ description: Use when connected sources like Slack or meeting notes need to be pulled in right now — "sync Slack", "grab the meeting that just ended", "pull the latest", "run sync", "the Slack message I just posted isn't showing". Runs comitia sync instead of waiting for the hourly collection.
4
4
  allowed-tools:
5
5
  - Bash(comitia *)
6
6
  - Bash(z2o *)
7
7
  ---
8
8
 
9
- # /comitia:sync — 지금 당겨오기
9
+ # /comitia:sync — pull it in now
10
10
 
11
- 자동 수집은 **매시 정각**이다. 그 사이에 올라온 슬랙·끝난 회의는 아직 Comitia 에 없다.
12
- 이 스킬은 기다리지 않고 지금 가져온다. **당겨오기만 한다** — 위키는 바뀌지 않고 정리 대기로 쌓인다.
11
+ Automatic collection runs **on the hour**. Anything posted to Slack or any meeting that
12
+ ended since then is not in Comitia yet. This skill pulls it in without waiting.
13
+ **It only pulls** — the wiki doesn't change; the items land in the organize queue.
13
14
 
14
- 요청: `$ARGUMENTS`
15
+ Request: `$ARGUMENTS`
15
16
 
16
- ## 1. 얼마나 오래됐나
17
+ ## 1. How stale is it?
17
18
 
18
- `comitia recent` · `comitia find` 결과 맨 위에 **「수집 상태 — 슬랙 12분 전 · 티로 3시간 전 …」** 이 나온다.
19
- 찾는 일이 그보다 최근이면 당겨올 때다.
19
+ `comitia recent` and `comitia find` print a **collection status** line at the top —
20
+ "Slack 12 minutes ago · Tiro 3 hours ago …". If what you're looking for is more recent
21
+ than that, it's time to pull.
20
22
 
21
- ## 2. 당겨오기
23
+ ## 2. Pull
22
24
 
23
- - 말한 게 없으면 연결된 것 전부: `comitia sync`
24
- - 하나만: `comitia sync slack` · `comitia sync tiro` · `comitia sync notion`
25
+ - Nothing specified — pull everything connected: `comitia sync`
26
+ - One source: `comitia sync slack` · `comitia sync tiro` · `comitia sync notion`
25
27
 
26
- ## 3. 결과를 짧게 전한다
28
+ ## 3. Report briefly
27
29
 
28
- - 연결마다 새로 들어온 건수가 나온다. **한두 줄로 그대로** 전한다 — 「슬랙 새 원본 3건, 티로 0건」.
29
- - 티로는 **요약이 생긴 회의만** 들어온다. 「요약을 기다리는 회의」가 있으면 조금 뒤 다시 당기라고 말한다.
30
- - 권한이 없다고 나오면 — 당겨오기는 *자료·정리까지* 권한(쓰기 토큰)이 필요하다. 읽기 토큰이면 정각을 기다리라고 알린다.
30
+ - Each connection reports how many new items arrived. Pass it along **in a line or two**,
31
+ as-is — "3 new Slack items, 0 from Tiro."
32
+ - Tiro only brings in meetings **whose summary already exists.** If some are still waiting
33
+ on a summary, say so and suggest pulling again shortly.
34
+ - If it says you lack permission — pulling needs a write token (sources and organizing).
35
+ With a read-only token, say so and wait for the top of the hour.
31
36
 
32
- ## 4. 이어서
37
+ ## 4. Next
33
38
 
34
- - 방금 것을 찾던 중이면 `comitia recent` · `comitia find` 로 다시 찾는다 — 순서는 `/comitia:read`.
35
- - 정리까지 원하면 `/comitia:ingest` 순서(`build` → `pending` → 요약)로.
39
+ - If you were looking for something recent, search again with `comitia recent` / `comitia find` —
40
+ the sequence for that is `/comitia:read`.
41
+ - If organizing is also wanted, follow `/comitia:ingest` (`build` → `pending` → summarize).