Cheat Status
XBuilderLAB/cheat-on-content
cheat-on-content 的状态看板。显示当前模式 / rubric 版本 / 校准进度 / 待复盘 / pool 状态 / 是否该升级 SQLite / 是否该 bump rubric。任何时候都可调,无副作用。触发词:"状态"/"看板"/"status"/"我现在该做什么"/"进度怎么样"。
Score, deduplicate, rank, and select fresh research signals from SQLite using the configured rubric.
$ npx skills add grandamenium/cortextos --skill signal-scoring -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install grandamenium/cortextos signal-scoring --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/grandamenium/cortextos.git skills-src && mkdir -p .claude/skills && cp -r skills-src/community/agents/research-agent/.claude/skills/signal-scoring .claude/skills/signal-scoring && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "signal-scoring" agent skill from https://github.com/grandamenium/cortextos/tree/main/community/agents/research-agent/.claude/skills/signal-scoring into .claude/skills/signal-scoring/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "signal-scoring", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/grandamenium/cortextos/tree/main/community/agents/research-agent/.claude/skills/signal-scoringType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add grandamenium/cortextos --skill signal-scoring -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install grandamenium/cortextos signal-scoring --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/grandamenium/cortextos.git skills-src && mkdir -p .agents/skills && cp -r skills-src/community/agents/research-agent/.claude/skills/signal-scoring .agents/skills/signal-scoring && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "signal-scoring" agent skill from https://github.com/grandamenium/cortextos/tree/main/community/agents/research-agent/.claude/skills/signal-scoring into .agents/skills/signal-scoring/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "signal-scoring", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add grandamenium/cortextos --skill signal-scoring -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install grandamenium/cortextos signal-scoring --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/grandamenium/cortextos.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/community/agents/research-agent/.claude/skills/signal-scoring .cursor/skills/signal-scoring && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "signal-scoring" agent skill from https://github.com/grandamenium/cortextos/tree/main/community/agents/research-agent/.claude/skills/signal-scoring into .cursor/skills/signal-scoring/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "signal-scoring", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/grandamenium/cortextos.git --path community/agents/research-agent/.claude/skills/signal-scoring--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add grandamenium/cortextos --skill signal-scoring -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install grandamenium/cortextos signal-scoring --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/grandamenium/cortextos.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/community/agents/research-agent/.claude/skills/signal-scoring .gemini/skills/signal-scoring && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "signal-scoring" agent skill from https://github.com/grandamenium/cortextos/tree/main/community/agents/research-agent/.claude/skills/signal-scoring into .gemini/skills/signal-scoring/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "signal-scoring", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install grandamenium/cortextos signal-scoringInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add grandamenium/cortextos --skill signal-scoring -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/grandamenium/cortextos.git skills-src && mkdir -p .github/skills && cp -r skills-src/community/agents/research-agent/.claude/skills/signal-scoring .github/skills/signal-scoring && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "signal-scoring" agent skill from https://github.com/grandamenium/cortextos/tree/main/community/agents/research-agent/.claude/skills/signal-scoring into .github/skills/signal-scoring/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "signal-scoring", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add grandamenium/cortextos --skill signal-scoring -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install grandamenium/cortextos signal-scoring --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/grandamenium/cortextos.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/community/agents/research-agent/.claude/skills/signal-scoring .opencode/skills/signal-scoring && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "signal-scoring" agent skill from https://github.com/grandamenium/cortextos/tree/main/community/agents/research-agent/.claude/skills/signal-scoring into .opencode/skills/signal-scoring/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "signal-scoring", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
signal-scoringScore, deduplicate, rank, and select fresh research signals from SQLite using the configured rubric.
Signal Scoring is an agent skill from grandamenium/cortextos. Score, deduplicate, rank, and select fresh research signals from SQLite using the configured rubric.
Its SKILL.md is about 2.2k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.
It sits in Education, covering Quizzes and assessments. It works with SQLite. The licence is MIT.
6 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 6f93838. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
No scripts in the folder and no shell commands in SKILL.md (its code samples are python).
From the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Signal Scoring loads about 2.2k tokens when it runs. Until then it costs about 29 tokens; SKILL.md has 251 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from grandamenium/cortextos at commit 6f93838, republished under its MIT licence (© grandamenium). 251 words, ~2,183 tokens.
.claude/skills/signal-scoring/SKILL.md (or your agent's skills folder).Score, rank, and select signals from the local SQLite database. Produces the shortlist that gets passed to brief-generation.
After source-collection completes, before brief-generation.
research/db/signals.db -- signal database populated by source-collectionresearch/scoring-rubric.json (copy from scoring-rubric.example.json, tune weights)config.json (for runtime paths and window settings)research/output/YYYY-MM-DD/signals-selected.json -- shortlisted items with scores, ready for brief-generationresearch/output/YYYY-MM-DD/run.logNote: delivered_at is NOT set here. It is set by delivery-routing after successful delivery.
Pull items seen in the configured recent window. Suppress items delivered within
research.suppress_delivered_hours (default 72). Use a subquery to get only the
latest metric row per item.
import sqlite3, datetime as dt, json
def open_db(db_path):
conn = sqlite3.connect(db_path)
conn.row_factory = sqlite3.Row
return conn
def recent_candidates(conn, window_hours=24, suppress_delivered_hours=72):
seen_cutoff = (dt.datetime.utcnow() - dt.timedelta(hours=window_hours)).isoformat()
delivered_cutoff = (dt.datetime.utcnow() - dt.timedelta(hours=suppress_delivered_hours)).isoformat()
return conn.execute("""
SELECT i.*,
m.stars, m.score, m.comments, m.views, m.likes, m.forks,
m.shares, m.saves, m.bookmarks, m.reposts, m.quotes
FROM items i
LEFT JOIN metric_snapshots m ON m.id = (
SELECT id FROM metric_snapshots
WHERE item_id = i.id
ORDER BY collected_at DESC LIMIT 1
)
WHERE i.last_seen_at >= ?
AND (i.delivered_at IS NULL OR i.delivered_at < ?)
ORDER BY i.last_seen_at DESC
""", (seen_cutoff, delivered_cutoff)).fetchall()def load_rubric(rubric_path):
with open(rubric_path) as f:
return json.load(f)Expected flat keys (from scoring-rubric.json):
base_weight, fit_weight, velocity_weightniche_bonus, tutorial_bonus, platform_bonusengagement_normalization (dict with per-platform scale factors)keyword_boosts.keywords (list of niche keywords for bonus scoring)def score_item(item, conn, rubric):
"""
rubric: dict loaded from research/scoring-rubric.json.
"""
text = " ".join(str(item[k] or "") for k in ["title", "summary", "text", "source_name"]).lower()
base = normalize_engagement(item, rubric)
fit = compute_fit(text, rubric.get("niche_terms", []), rubric.get("tutorial_terms", []))
velocity = compute_velocity(item["id"], conn)
bonus = 0
if any(t in text for t in rubric.get("niche_terms", [])):
bonus += rubric.get("niche_bonus", 1.5)
if any(t in text for t in rubric.get("tutorial_terms", [])):
bonus += rubric.get("tutorial_bonus", 1.0)
if item["platform"] in rubric.get("high_value_platforms", []):
bonus += rubric.get("platform_bonus", 0.5)
bonus += rubric.get("source_type_bonuses", {}).get(item["platform"], 0)
# keyword_boosts from rubric (up to +2)
kw_matches = sum(1 for kw in rubric.get("keyword_boosts", {}).get("keywords", []) if kw in text)
bonus += min(kw_matches, 2)
return (
base * rubric.get("base_weight", 1.0)
+ fit * rubric.get("fit_weight", 0.3)
+ velocity * rubric.get("velocity_weight", 0.2)
+ bonus
)
def normalize_engagement(item, rubric):
norm = rubric.get("engagement_normalization", {})
platform = item["platform"] or ""
if platform == "github":
return min((item["stars"] or 0) / norm.get("github_stars_per_10", 500), 10)
elif platform == "reddit":
return min((item["score"] or 0) / norm.get("reddit_score_per_10", 100), 10)
elif platform == "hacker_news":
return min((item["score"] or 0) / norm.get("hn_score_per_10", 50), 10)
elif platform in ("youtube", "x", "instagram", "tiktok"):
views = item["views"] or item["likes"] or 0
return min(views / norm.get("social_views_per_10", 10000), 10)
elif platform == "arxiv":
return 6 # academic papers: moderate default
else:
return 3 # rss / unknown
def compute_fit(text, niche_terms, tutorial_terms):
fit = 0
if any(t in text for t in niche_terms):
fit += 5
if any(t in text for t in tutorial_terms):
fit += 3
return min(fit, 10)
def compute_velocity(item_id, conn):
rows = conn.execute(
"""SELECT stars, score, views, likes, comments, collected_at
FROM metric_snapshots
WHERE item_id = ?
ORDER BY collected_at""",
(item_id,)
).fetchall()
if len(rows) < 2:
return 0
earliest, latest = rows[0], rows[-1]
delta = (
((latest["stars"] or 0) - (earliest["stars"] or 0)) +
((latest["score"] or 0) - (earliest["score"] or 0)) +
((latest["views"] or 0) - (earliest["views"] or 0))
)
return min(delta / 100, 10)If two items cover the same announcement, keep the higher-scoring one.
import re
def topic_key(item):
text = re.sub(r"[^a-z0-9]+", " ", (item["title"] or "").lower())
words = [w for w in text.split() if len(w) > 3][:8]
return f"{item['platform'] or 'web'}:{'-'.join(words)}"
def dedup_by_topic(scored_items):
best = {}
for score, item in scored_items:
key = topic_key(item)
if key not in best or score > best[key][0]:
best[key] = (score, item)
return list(best.values())def select_top(conn, rubric, runtime_config, out_path, run_date):
research_config = runtime_config.get("research", {})
window_hours = research_config.get("signal_window_hours", 24)
suppress_hours = research_config.get("suppress_delivered_hours", 72)
top_n = rubric.get("top_n", 8)
threshold = rubric.get("minimum_score_threshold", 5.0)
candidates = recent_candidates(conn, window_hours, suppress_hours)
scored = [(score_item(row, conn, rubric), row) for row in candidates]
scored = [(s, i) for s, i in scored if s >= threshold]
scored = dedup_by_topic(scored)
scored.sort(key=lambda x: x[0], reverse=True)
selected = scored[:top_n]
# Write selected items to disk -- do NOT mark delivered_at here
output = []
for rank, (score, item) in enumerate(selected, 1):
output.append({
"rank": rank,
"platform": item["platform"],
"canonical_key": item["canonical_key"],
"title": item["title"],
"url": item["url"],
"author": item["author"],
"source_name": item["source_name"],
"published_at": item["published_at"],
"summary": item["summary"],
"score": round(score, 2),
"score_components": {
"note": "base + fit + velocity + configured bonuses; keep detailed components when your implementation exposes them"
}
})
with open(out_path, "w") as f:
json.dump(output, f, indent=2)
filtered = len(candidates) - len([s for s, _ in scored if s >= threshold])
log_line = f"Scoring: {len(candidates)} candidates, {len(selected)} selected, {filtered} below threshold"
print(log_line)
return outputdelivered_at is set by delivery-routing, not here. This separation ensures items are
not suppressed if delivery fails.
# Called by delivery-routing after successful send:
def mark_delivered(conn, selected_items):
now = dt.datetime.utcnow().isoformat()
for item in selected_items:
conn.execute(
"UPDATE items SET delivered_at=? WHERE canonical_key=?",
(now, item["canonical_key"])
)
conn.commit()niche_terms in research/scoring-rubric.json first -- highest-leverage lever.top_n pass threshold, brief only those. Do not pad.© grandamenium, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in community/agents/research-agent/.claude/skills/signal-scoring of grandamenium/cortextos.
Open the folder on GitHubat commit 6f93838
Signal Scoring next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Signal Scoring this skillgrandamenium/cortextos | 101 | — | ~2.2k | Automated safety check: Pass | MIT | |
| Cheat StatusXBuilderLAB/cheat-on-content | 7.2k | — | ~1.5k | Automated safety check: Notes | MIT | |
| DeepTutor CLIHKUDS/DeepTutor | 41k | — | ~2.8k | Automated safety check: Pass | Apache-2.0 | |
| AI Engineering Placement Quizrohitg00/ai-engineering-from-scratch | 67k | — | ~2k | Automated safety check: Pass | MIT | |
| Codebase to Coursezarazhangrui/codebase-to-course | 5.7k | — | ~4.4k | Automated safety check: Pass | None | |
| AI Engineering Phase Quizrohitg00/ai-engineering-from-scratch | 67k | — | ~2.1k | Automated safety check: Pass | MIT |
XBuilderLAB/cheat-on-content
cheat-on-content 的状态看板。显示当前模式 / rubric 版本 / 校准进度 / 待复盘 / pool 状态 / 是否该升级 SQLite / 是否该 bump rubric。任何时候都可调,无副作用。触发词:"状态"/"看板"/"status"/"我现在该做什么"/"进度怎么样"。
HKUDS/DeepTutor
Teaches the agent to set up and run DeepTutor from the command line: chat and capabilities, knowledge bases, partners, memory, sessions, notebooks and the server or Web app.
rohitg00/ai-engineering-from-scratch
Runs a 10-question quiz across five areas to place a learner in the AI Engineering from Scratch curriculum, so they skip what they already know.
zarazhangrui/codebase-to-course
Turns a codebase into an interactive single-page HTML course for non-technical learners, with scroll modules, animated diagrams, quizzes and plain-English code translations.
rohitg00/ai-engineering-from-scratch
Quizzes you on a completed phase of the AI Engineering from Scratch course, taking a phase number or name and mapping it to that phase's directory.
K-Dense-AI/claude-scientific-writer
Provide qualitative-first, evidence-traceable developmental review of scholarly works and audit low-stakes research-assessment rubrics with optional local quality controls.
grandamenium/cortextos
Diagnose cortextOS itself when the framework misbehaves — an agent has gone silent or wedged, agents are crash-looping, Telegram or agent-to-agent messages are not arriving, crons did not fire, an…
grandamenium/cortextos
You have completed something significant and want the whole org — all agents and the user — to know about it.
grandamenium/cortextos
You need to make a purchase on behalf of the user — buy a SaaS subscription, pay for an API, purchase a domain, or any transaction requiring a credit card.
grandamenium/cortextos
Migrate ANY cortextOS agent from the claude-code runtime to the live codex-app-server runtime.
grandamenium/cortextos
Complete cortextos bus CLI reference - all available commands with examples.
grandamenium/cortextos
Daily cron-driven scan of news/forums/social in a domain to surface market shifts, new competitors, regulatory changes, and net-new opportunities.
Works with
Categories
Score, deduplicate, rank, and select fresh research signals from SQLite using the configured rubric. Signal Scoring is an agent skill from grandamenium/cortextos. Score, deduplicate, rank, and select fresh research signals from SQLite using the configured rubric.
Signal Scoring fits situations like: tasks that involve Quizzes and assessments.
Run `npx skills add grandamenium/cortextos --skill signal-scoring -a claude-code`. Or copy the skill folder (community/agents/research-agent/.claude/skills/signal-scoring in grandamenium/cortextos) into .claude/skills/signal-scoring in your project. Claude Code loads it when a task matches its description.
Run `npx skills add grandamenium/cortextos --skill signal-scoring -a codex`. Or copy the skill folder (community/agents/research-agent/.claude/skills/signal-scoring in grandamenium/cortextos) into .agents/skills/signal-scoring in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add grandamenium/cortextos --skill signal-scoring -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/signal-scoring, .gemini/skills/signal-scoring, .github/skills/signal-scoring and .opencode/skills/signal-scoring in your project.
SKILL.md names no scripts, command-line tools or credentials: Signal Scoring is instructions for the agent only. Our summary lists: Python 3.
SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Signal Scoring is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 2.2k tokens (SKILL.md is roughly 8.7k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Signal Scoring: Cheat Status (XBuilderLAB/cheat-on-content, 7.2k stars), DeepTutor CLI (HKUDS/DeepTutor, 41k stars), AI Engineering Placement Quiz (rohitg00/ai-engineering-from-scratch, 67k stars) and Codebase to Course (zarazhangrui/codebase-to-course, 5.7k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
grandamenium (a GitHub user) maintains it in grandamenium/cortextos, which has 101 GitHub stars. The repository holds 55 skills in this directory. The repository was last updated on September 23, 2026.
Source: grandamenium/cortextos on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.