Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx skills add tellang/triflux --skill star-promptgit clone --depth 1 https://github.com/tellang/trifluxWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/tellang/triflux/star-prompt)<a href="https://agentmods.dev/skills/tellang/triflux/star-prompt"><img src="https://agentmods.dev/badge/skills/tellang/triflux/star-prompt/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/skills/tellang/triflux/star-prompt"><img src="https://agentmods.dev/badge/skills/tellang/triflux/star-prompt.svg" alt="Reviewed on agentmods" width="80" height="20"></a>- NVIDIA SkillSpector pass
What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00067 | $0.02030 |
| Opus 5 | $0.00034 | $0.01015 |
| Sonnet 5 | $0.00013 | $0.00406 |
| Haiku 4.5 | $0.00007 | $0.00203 |
Grade A, and why
star-prompt scanned grade A with 1 finding against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 12d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Runs shell commandslowCapability
Expected in a hook, worth knowing in a rule or an instructions file.
import { execFileSync } from "node:child_process"; How it starts
The opening of the file, as written. The whole thing — 221 lines — stays where its author put it; the contents beside it link to each section on GitHub.
tfx-star-prompt — GitHub Star Request Prompt
CLI 도구의 setup/postinstall 완료 시점에 GitHub 리포 스타 요청을 추가한다.
기본 모드는 aggressive(모달 차단형)이며, --soft를 전달하면 기존 부드러운 confirm 모드로 폴백한다.
CI/비인터랙티브 환경에서는 자동으로 soft 모드로 강등한다.
동작 흐름
detectInteractive() ─── false → soft 모드 강제
│
✓ true
│
gh --version ─── 실패 → URL만 표시
│
✓ 설치됨
│
gh auth status ─── 실패 → URL만 표시
│
✓ 인증됨
│
gh api user/starred/{owner}/{repo}
├─ 성공 → "이미 함께하고 계시군요. ⭐" + markPrompted()
├─ 404 → 미스타로 진행
└─ 그 외 에러 → 프롬프트 없이 URL만 표시 (마커 남기지 않음)
│
✗ 미스타
│
이미 프롬프트 본 유저(마커 존재)면 즉시 스킵
│
aggressive 기본: AskUserQuestion([예, 누를게요] / [아니오]) 블로킹 선택
soft(--soft): confirm("⭐ 하나가 큰 차이를 만듭니다.")
│
├─ 아니오 → aggressive: 안내 + URL / soft: URL만 + markPrompted()
└─ 예
│
Y
│
gh api -X PUT /user/starred/{owner}/{repo}
├─ 성공 → aggressive: "감사합니다! 여러분의 ⭐가 프로젝트를 성장시킵니다."
│ soft: "함께해 주셔서 감사합니다. ⭐"
└─ 실패 → URL 폴백
│
모든 프롬프트 완료 경로는 markPrompted() 호출
구현 패턴
유틸리티 계약
ok(message): 성공 메시지 출력(초록/강조 톤)info(message): 일반 안내 메시지 출력warn(message): 경고/실패 폴백 메시지 출력confirm(message, defaultValue): soft 모드용 Y/n 확인askUserQuestion({ question, options }): aggressive 모달 선택 UI- 옵션은 정확히
[예, 누를게요],[아니오] - 선택 전까지 흐름을 블로킹한다
- 옵션은 정확히
전체 starRequest 교체 패턴
아래 패턴으로 기존 starRequest 함수를 전면 교체한다.
import fs from "node:fs";
import os from "node:os";
import path from "node:path";
import { execFileSync } from "node:child_process";
function detectInteractive() {
if (!process.stdout.isTTY) return false;
if (process.env.CI) return false;
if (process.env.TERM === "dumb") return false;
return true;
}
function runGh(args) {
return execFileSync("gh", args, {
timeout: 10000,
encoding: "utf8",
stdio: ["pipe", "pipe", "pipe"],
});
}
function getHttpStatus(error) {
const out = [error?.stdout, error?.stderr].filter(Boolean).join("\n");
const match = out.match(/HTTP\s+(\d{3})/i) || out.match(/\b(\d{3})\b/);
return match ? Number(match[1]) : null;
}
export async function starRequest({
owner,
repo,
soft = false,
askUserQuestion,
confirm,
ok,
info,
warn,
}) {
const repoUrl = `https://github.com/${owner}/${repo}`;
const interactive = detectInteractive();
const useSoft = soft || !interactive;
const MARKER_DIR = path.join(os.homedir(), ".config", "star-prompt");
const MARKER = path.join(MARKER_DIR, `${owner}-${repo}.prompted`);
const markPrompted = () => {
fs.mkdirSync(MARKER_DIR, { recursive: true });
fs.writeFileSync(MARKER, new Date().toISOString(), "utf8");
};
if (fs.existsSync(MARKER)) return;
try {
runGh(["--version"]);
} catch {
info(repoUrl);
return;
}
try {
runGh(["auth", "status"]);
} catch {
info(repoUrl);
return;
}
let alreadyStarred = false;
try {
runGh(["api", `user/starred/${owner}/${repo}`]);
alreadyStarred = true;
} catch (error) {
const status = getHttpStatus(error);
if (status === 404) {
alreadyStarred = false;
} else {
// API 에러(404 외): 프롬프트 없이 URL만 출력, 마커 미기록
warn(repoUrl);
return;
}
}
if (alreadyStarred) {
ok("이미 함께하고 계시군요. ⭐");
markPrompted();
return;
}
let accepted = false;
if (useSoft) {
accepted = await confirm("⭐ 하나가 큰 차이를 만듭니다.", true);
} else {
const answer = await askUserQuestion({
question: "⭐ 이 프로젝트가 마음에 드셨나요? 스타를 누르시겠습니까?",
options: ["예, 누를게요", "아니오"],
});
accepted = answer === "예, 누를게요";
}
if (!accepted) {
if (useSoft) {
info(repoUrl);
} else {
info(`괜찮습니다. 나중에 마음이 바뀌시면: ${repoUrl}`);
}
markPrompted();
return;
}
try {
runGh(["api", "-X", "PUT", `/user/starred/${owner}/${repo}`]);
if (useSoft) {
ok("함께해 주셔서 감사합니다. ⭐");
} else {
ok("감사합니다! 여러분의 ⭐가 프로젝트를 성장시킵니다.");
}
} catch {
warn(repoUrl);
} finally {
markPrompted();
}
}
What ships with it
1 file beside SKILL.md in the same directory: the scripts, references and assets a skill reads on demand. Not counted in the per-session cost; read them before you install if any of them is executable.
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 12d ago First seen · 221 lines · 67 tokens per session scan A 9951798db23c
star-prompt is a skill published in the GitHub repository tellang/triflux (7 stars, last pushed 4d ago), licensed MIT. It adds 67 tokens to every session and 2,030 once invoked, about $0.0003 per session on Opus 5. A static security scan graded it A with 1 finding (runs shell commands). No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-31.
Other skills, from other repositories
lucia-chat
Set two agent sessions talking through the Luciazero Agent Bus and watch it live in a terminal: pick the pair, open the windows, read the transcript. Use for "ให้ codex กับ claude คุยกัน" or "watch the bus".
ready
Make an unfamiliar repository agent-ready with a verify command, smoke tests, guardrails, and project notes. Use for repository setup, agentic engineering, verify commands, hooks, or allowlists; skip when verification and scope are already clear.
handoff
Write a state capsule so the next session — or a different agent/harness — can resume unfinished work without re-deriving context. Use when a session is ending with work incomplete, when the user says "handoff", "pack up", "ส่งต่อ", "continue tomorrow", when switching between Claude Code and Codex mid-task, or when…
done
Run the closeout ritual before handing back non-trivial work; full verification, revert-probe honesty, independent review, and scope reporting. Use before declaring completion, opening a PR, wrapping up a change, or "ปิดงาน".
retro
Record durable lessons, null results, and footguns after hard work or debugging. Use when the user asks for a retro, dead ends need preserving, a task disproves an approach, or "จดบทเรียน". Keep repo knowledge separate from machine-local memory.
show
Visualize code structure, changes, and verification evidence in the smallest useful view. Use for connections, flows, diffs, file maps, Mermaid diagrams, evidence maps, or focused HTML; show facts and label unknowns.