소스 정보
- 저장소
- OpenRouterLabs/ori-feature-catalog
- 최근 소스 활동
- 2026년 8월 27일 22:35
- 감지된 SKILL.md 언어
- 영어
- 스타
- 0
- 포크
- 0
설치 방법
기본적으로 소스를 먼저 확인하는 Prompt가 선택됩니다. 직접 명령으로 전환하거나 로컬 사본을 다운로드할 수도 있습니다.
소스 파일 검토
설치 여부를 결정하기 전에 SKILL.md와 SkillsMP에 표시된 보조 파일을 읽어 보세요.
메뉴
기본적으로 소스를 먼저 확인하는 Prompt가 선택됩니다. 직접 명령으로 전환하거나 로컬 사본을 다운로드할 수도 있습니다.
설치 여부를 결정하기 전에 SKILL.md와 SkillsMP에 표시된 보조 파일을 읽어 보세요.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
직접 명령은 검토 Prompt를 거치지 않습니다. 실행하기 전에 소스를 확인하세요.
npx skills add https://github.com/OpenRouterLabs/ori-feature-catalog --skill slack-chart명령은 한 줄로 유지됩니다. 복사하기 전에 가로로 스크롤해 전체 내용을 확인하세요.
로컬 사본을 원하시나요? SkillsMP에서 현재 제공할 수 있는 파일을 다운로드하세요.
Attach ANY file to the current Slack thread — text or binary. A log, a diff, a CSV, a long answer as a snippet, and equally a PDF, a PNG, a zip, a sqlite db, a tarball: the bytes go up unchanged. TRIGGER when the user asks you to attach, upload, or send a file, or when an answer is too long or too structured to read as a message (a full log, a wide table, hundreds of lines of output) and a file reads better than a wall of text. Also TRIGGER when the user asks for something "as a file", "as a snippet", "as an attachment", or "upload that". Write the content to a file first with Bash, then attach it. This is NOT for charts (use slack-chart) or generated images (use slack-image) — those render and upload on their own. This is NOT for ordinary replies: a short answer belongs in the message, not in an attachment.
Move THIS conversation onto a fresh Slack thread, keeping the same agent session and everything it remembers. ONLY TRIGGER when the user EXPLICITLY asks to continue the current conversation somewhere else — e.g. "continue this in a new thread", "move this to a fresh thread", "same conversation, new thread", "this thread is too long, carry on in a new one". NEVER trigger on your own initiative. Never carry because a thread looks long, cluttered, or busy — if the user did not ask, keep replying where you are. This is NOT for starting separate work: if the user wants a NEW task in its own thread with a fresh start, that is the spawn-thread skill instead. Carrying MUTES the thread you are in, so doing it unasked strands whoever is talking to you.
Read Slack from the agent — thread replies, channel history, user lookup and mention resolution, and opening a DM. Channel and thread resolve env-first ($SLACK_CHANNEL_ID / $SLACK_THREAD_TS) with a --channel fallback, so you can usually omit them. TRIGGER when asked to fetch a thread or channel history, find someone's user id, resolve a mention, or DM someone. This skill does NOT post, edit, delete or react — your answer is just the text you write, and progress goes through the slack-status skill.
SKILL.md 표시 중
| name | slack-chart |
| description | Draw a comparison or a flow diagram as an image in the Slack thread. |
Slack renders no diagram syntax, so a shape — boxes and arrows, a comparison of magnitudes — ends up as a code block that wraps in a thread pane, and a wrapped diagram stops being a diagram. This uploads it as an image instead.
Tables are NOT here. Slack renders GitHub-flavoured tables natively now, so write rows and columns as a markdown table in the reply. Drawn as an image they came out as overlapping text nobody could read.
bun features/slack/skills/slack-chart/scripts/index.ts '{
"kind": "bars",
"title": "PR queue",
"rows": [
{ "label": "conflicts", "value": 20 },
{ "label": "red CI", "value": 9 },
{ "label": "ready", "value": 5 }
]
}'
bun features/slack/skills/slack-chart/scripts/index.ts '{
"kind": "flow",
"title": "Why the run failed",
"nodes": [
{ "id": "a", "kind": "start", "label": "Turn starts" },
{ "id": "b", "label": "Work reaches green", "detail": "503/503 tests" },
{ "id": "c", "kind": "decision", "label": "Lint gate" },
{ "id": "d", "kind": "error", "label": "Timed out mid-refactor" },
{ "id": "e", "kind": "end", "label": "Commit + PR" }
],
"edges": [
{ "from": "a", "to": "b" },
{ "from": "b", "to": "c" },
{ "from": "c", "to": "d", "label": "blocked" },
{ "from": "c", "to": "e", "label": "passes" }
]
}'
flow lays out top to bottom: a node sits one row below the deepest thing pointing at it, and branches out of the same node sit side by side. kind colours the box — start, step (the default), decision, end, error — so a failure arm reads at a glance.
Reach for it whenever the answer has a shape — and reach for it without being asked, because a technical answer with a diagram in it is almost always the better answer.
An explanation is a shape. How a request flows through the system, why a run failed, what depends on what, which step ate the time — written out, all of those become a paragraph the reader has to rebuild the diagram from in their head. flow draws the boxes and arrows, which is what a post-mortem or a request path actually is.
A comparison of magnitudes is a shape too: written as a sentence it makes a paragraph of numbers nobody can read, and a code block wraps in a thread pane and loses its columns.
A sentence with six inline code spans in it is a table you have not written yet — a markdown one, in the reply.
Not otherwise. Three numbers belong in the sentence, and a chart of them is slower to read than the sentence. A chart is never the whole reply — say what it shows in a line, and let the image carry the shape.
It costs a file upload, so do not reach for it on a question that a paragraph already answers.
Four boxes to a row. A fan-out from one node to nine is refused: a row is centred across a fixed-width card, so nine siblings overlap into an unreadable smear. If what you have is one parent and many children, that is a markdown table with the parent as its heading — Slack renders those natively.
No HTML in labels. Labels are escaped before they reach the SVG, so <br/> arrives as those four characters rather than a line break. Write shorter labels instead.