Expression Precision is an intent-clarification skill that turns vague thoughts, feelings, feedback, requirements, and agent instructions into precise, reusable language.
Live Demo · MIT License · Deployment Guide · Demo Script · Hackathon Submission Draft
Most writing assistants and AI agents move too early. Expression Precision first detects ambiguity, identifies the missing information needed to describe the situation accurately, and asks guided multi-select questions. It produces final wording, or a clarified task for another agent, only after the meaning is specific enough to express without invented facts.
Recommended main track: Skill
The Codex Skill is the core reusable product. The bilingual web demo makes the behavior easy to understand, test, and share with both human users and teams building agent workflows.
Do not select both Skill and Agent as main tracks for the UCWS Singapore Hackathon 2026. The event announcement states that only Deep Research can be selected together with one of the three main tracks: Agent, Skill, or Application.
- Detects vague words, unclear references, unsupported judgments, and missing facts.
- Identifies which information would materially change the final expression.
- Asks concise multi-select questions with a
None of the abovepath. - Uses concrete facts supplied by the user without asking them to repeat information.
- Produces a Precise Name, Concrete Explanation, and Copyable Expression.
People often know that something feels wrong, important, or promising before they can describe it clearly. That gap causes weak feedback, ambiguous requirements, avoidable conflict, and generic AI-generated writing.
Expression Precision helps users move from:
“My teammate is kind of difficult.”
to:
“They have a higher personal standard for office hygiene and comfort, but they handle those preferences themselves without adding work for others.”
.
├── .agents/plugins/marketplace.json
├── .github/workflows/demo-ci.yml
├── plugins/expression-precision/
│ ├── .codex-plugin/plugin.json
│ └── skills/expression-precision/
├── demo/
│ ├── app/
│ ├── components/
│ ├── lib/
│ └── package.json
└── docs/
├── DEMO_SCRIPT.md
├── DEPLOYMENT.md
└── SUBMISSION.md
Expression Precision is packaged as a Codex Plugin and the underlying Skill is portable. Codex users can install the plugin from this GitHub repository. Claude Code users can copy the SKILL.md folder into Claude's local skills directory.
Install from the public GitHub repository:
codex plugin marketplace add 75yang/expression-precision
codex plugin install expression-precision@expression-precisionThen invoke the skill in Codex:
$expression-precision
I feel like my teammate is difficult, but I cannot explain why.
You can also ask naturally:
Use expression-precision to clarify this feedback: The product experience feels bad.
If you do not want to install the full plugin, copy only the skill folder:
mkdir -p ~/.codex/skills/expression-precision
cp -R plugins/expression-precision/skills/expression-precision/* ~/.codex/skills/expression-precision/Windows PowerShell:
New-Item -ItemType Directory -Force "$env:USERPROFILE\.codex\skills\expression-precision"
Copy-Item -Recurse -Force "plugins\expression-precision\skills\expression-precision\*" "$env:USERPROFILE\.codex\skills\expression-precision\"Claude Code can use the same Skill body, but it does not use the Codex plugin manifest. Copy the skill folder into Claude's skills directory:
mkdir -p ~/.claude/skills/expression-precision
cp -R plugins/expression-precision/skills/expression-precision/* ~/.claude/skills/expression-precision/Windows PowerShell:
New-Item -ItemType Directory -Force "$env:USERPROFILE\.claude\skills\expression-precision"
Copy-Item -Recurse -Force "plugins\expression-precision\skills\expression-precision\*" "$env:USERPROFILE\.claude\skills\expression-precision\"Then ask Claude Code:
Use expression-precision to clarify this:
I feel stuck about this decision.
The portable part is plugins/expression-precision/skills/expression-precision/SKILL.md plus its references/ folder. The Codex-specific plugin metadata lives in plugins/expression-precision/.codex-plugin/plugin.json.
cd demo
npm install
cp .env.example .env.localChoose a model provider and add a server-side API key to demo/.env.local:
MODEL_PROVIDER=qwen
DASHSCOPE_API_KEY=your-new-key
QWEN_MODEL=qwen-plus
QWEN_BASE_URL=https://dashscope.aliyuncs.com/compatible-mode/v1The example above uses Alibaba Cloud Model Studio's China (Beijing) endpoint. Use https://dashscope-intl.aliyuncs.com/compatible-mode/v1 only with a Singapore-region key. DashScope API keys are region-specific.
npm run previewOpen:
- Product website: http://localhost:3000
- Interactive Studio: http://localhost:3000/app
The Studio includes a deterministic guided sample, so the full experience remains demonstrable when the live API is unavailable.
npm run dev is useful while editing the site. Use npm run preview for final local testing and hackathon demonstrations.
API keys are sensitive credentials and must never be committed, placed in browser-side source code, written to local storage, or sent to analytics.
The public hackathon demo uses this request path:
Visitor browser → Next.js server route → Model API
The server route:
- uses a deployment-only provider key from server-side environment variables;
- never sends the key to browser-side code or API responses;
- applies a basic per-instance request limit per IP address;
- rejects inputs longer than 6,000 characters;
- exposes only a safe
/api/statusresponse that reports whether the live agent is configured.
For a public hackathon deployment, create a dedicated project key, set a small provider-side budget or alert, keep the per-IP request limit enabled, and rotate or delete the key after the event. If you need a no-shared-key mode for self-hosted experiments, set VISITOR_KEY_ONLY=true and let users provide temporary request keys.
The simplest deployment path is Vercel:
- Import the GitHub repository into Vercel.
- Set the project root directory to
demo. - Add
DASHSCOPE_API_KEYas a server-side environment variable so visitors can use the demo without pasting a key. - The committed
vercel.jsondefaults the public build to Qwen and setsDEMO_REQUESTS_PER_HOUR=30. - Optionally use
MODEL_PROVIDER=openai,OPENAI_API_KEY, andOPENAI_MODELinstead. - Optionally set
DEMO_REQUESTS_PER_HOURto control the per-IP hourly limit. - Deploy and add the public URL to the hackathon submission.
Never expose any provider API key in browser-side code or commit .env.local.
See docs/DEPLOYMENT.md for the public-demo architecture, safe bring-your-own-key approach, and verification checklist.
# Validate the plugin
python <plugin-creator>/scripts/validate_plugin.py plugins/expression-precision
# Validate the skill
python <skill-creator>/scripts/quick_validate.py \
plugins/expression-precision/skills/expression-precision
# Validate the demo
cd demo
npm run lint
npm run buildExpression Precision 是一个帮助用户把模糊感觉、想法、反馈和需求转化为精准语言的交互式 Skill。
它不会立刻润色原句,而是先定位模糊点,分析缺失信息,通过可多选问题和“都不是”分支逐步澄清,最后生成:
- 精准命名
- 具体解释
- 可复制表达
公开 Demo 使用服务端环境变量中的比赛专用模型 API Key,访客无需填写任何 Key,打开网页即可体验。Key 不会进入浏览器代码或 GitHub 仓库;成本控制通过每 IP 限流、输入长度限制和阿里云百炼后台预算/预警完成。当前 Demo 支持 OpenAI,也支持通过阿里云百炼 OpenAI-compatible 接口调用 Qwen。
推荐通过 GitHub 仓库安装完整 Codex Plugin:
codex plugin marketplace add 75yang/expression-precision
codex plugin install expression-precision@expression-precision安装后在 Codex 中调用:
$expression-precision
我觉得这个同事有点事儿,但说不清具体哪里不对。
也可以自然语言调用:
Use expression-precision to clarify this: 我觉得这个产品体验不好。
如果只想使用 Skill 本体,可以复制 Skill 文件夹:
mkdir -p ~/.codex/skills/expression-precision
cp -R plugins/expression-precision/skills/expression-precision/* ~/.codex/skills/expression-precision/Windows PowerShell:
New-Item -ItemType Directory -Force "$env:USERPROFILE\.codex\skills\expression-precision"
Copy-Item -Recurse -Force "plugins\expression-precision\skills\expression-precision\*" "$env:USERPROFILE\.codex\skills\expression-precision\"Claude Code 可以复用同一套 Skill 说明,但不使用 Codex 的 .codex-plugin/plugin.json。把 Skill 文件夹复制到 Claude 的 skills 目录:
mkdir -p ~/.claude/skills/expression-precision
cp -R plugins/expression-precision/skills/expression-precision/* ~/.claude/skills/expression-precision/Windows PowerShell:
New-Item -ItemType Directory -Force "$env:USERPROFILE\.claude\skills\expression-precision"
Copy-Item -Recurse -Force "plugins\expression-precision\skills\expression-precision\*" "$env:USERPROFILE\.claude\skills\expression-precision\"然后在 Claude Code 中使用:
Use expression-precision to clarify this:
我对这个决定有点卡住。
可移植的核心是 plugins/expression-precision/skills/expression-precision/SKILL.md 和同目录下的 references/ 文件夹;Codex Plugin 的展示、图标和安装元数据在 plugins/expression-precision/.codex-plugin/plugin.json。