ソース情報
- リポジトリ
- TuYv/ccpm
- ソースの最終更新活動
- 2026年8月14日 19:45
- 検出された SKILL.md の言語
- 英語
- スター
- 1
- フォーク
- 2
インストール方法
デフォルトでは、最初にソースを確認する Prompt が選択されています。直接コマンドに切り替えるか、ローカルコピーをダウンロードすることもできます。
ソースファイルを確認
インストールを決める前に、SKILL.md と SkillsMP に表示されている付属ファイルをお読みください。
メニュー
デフォルトでは、最初にソースを確認する Prompt が選択されています。直接コマンドに切り替えるか、ローカルコピーをダウンロードすることもできます。
インストールを決める前に、SKILL.md と SkillsMP に表示されている付属ファイルをお読みください。
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
直接コマンドでは確認用 Prompt が省略されます。実行前にソースを確認してください。
npx skills add https://github.com/TuYv/ccpm --skill applyコマンドは1行のまま表示されます。コピー前に横へスクロールして全体を確認してください。
ローカルで確認しますか?SkillsMP が現在取得できるファイルをダウンロードできます。
Use when auditing a paid ad account for incremental contribution, wasted spend, or measurement integrity before scaling; runs a typed 20-item ROAS profile with verified vetoes and a SHIP/FIX/BLOCK/UNDECIDED gate on own exported data. Not for campaign structure design — use campaign-architect; not for creative production — use ad-creative-builder. 付费广告账户审计/ROAS评分
Use when the user asks to "write ad copy", "generate RSA headlines", or "build ad creative at volume"; produces ad units — RSA headlines/descriptions, hooks, and an angle matrix — message-matched to the destination landing page. Not for scoring an ad account — use ad-account-auditor; not for the post-click page — use landing-optimizer; not for organic articles — use content-writer. 广告创意/广告文案/RSA标题
Use when the user asks to "design an A/B test", "set up a creative/landing test", "run an incrementality test", or "is this result statistically and practically material?"; produces a hypothesis, variant matrix, sample-size/duration/power plan, and a documented effect/uncertainty read from own exported results. It applies only a precommitted owner-approved action rule; the statistical helper never chooses a business action. Not for producing variants — use ad-creative-builder; not for reading back one shipped change — use paid-measurement-loop. 广告AB测试设计/实验设计/显著性判定/增效测试
SOC 職業分類に基づく
SKILL.md を表示中
| name | apply |
| description | Fill out a job application on Greenhouse, Lever, or Workday |
| argument-hint | job URL, 'last' to use most recent job, or 'current' to fill the active browser tab |
Priority hierarchy: See
references/priority-hierarchy.mdfor conflict resolution.
Fill out job application forms on Greenhouse, Lever, and Workday using browser automation.
scripts/
fill-page.md # Form-filling subagent prompt
Resolve the data directory using references/data-directory.md.
Resolve the data directory, then check prerequisites per references/prerequisites.md. Resume file is required. Load DATA_DIR/application-data.md if it exists (created in Step 2 if not).
Parse $ARGUMENTS:
If a URL:
DATA_DIR/jobs/ (match by company slug in folder name or by URL). If found, load posting.md, resume.md, cover-letter.md from that folder.references/browser-setup.md, fetch the posting, save it to a new folder at DATA_DIR/jobs/[company-slug]-[date]/posting.md.If "last" or empty:
DATA_DIR/jobs/posting.md, resume.md, cover-letter.mdIf "current":
Report what's loaded:
Applying to [Role] at [Company].
If DATA_DIR/application-data.md exists, read it and load the values.
If it does NOT exist:
DATA_DIR/application-data.md using this format:# Application Data
## Personal Information
- First Name: ...
- Last Name: ...
- Email: ...
- Phone: ...
- City: ...
- Country: United States
## Online Profiles
- LinkedIn: ...
- GitHub: ...
- Portfolio: ...
## Standard Answers
- How did you hear about us: Job Board
- Previously worked at this company: No
- Authorized to work in the US: Yes
- Requires visa sponsorship: No
## EEO / Voluntary Disclosures
- Gender: Decline to self-identify
- Race/Ethnicity: Decline to self-identify
- Veteran status: I am not a veteran
- Disability: I don't wish to answer
Set up browser per references/browser-setup.md (tabs_context → tabs_create → navigate).
If $ARGUMENTS is "current": Skip navigation. Call tabs_context_mcp to get the active tab.
Otherwise, detect ATS type from URL patterns (see references/ats-patterns.md) and navigate accordingly:
Lever (jobs.lever.co/...):
/apply appended, or navigate to the posting and click "APPLY FOR THIS JOB"Greenhouse (boards.greenhouse.io/... or page with grnhse_iframe):
javascript_tool:
const iframe = document.getElementById('grnhse_iframe');
const url = new URL(iframe.src);
JSON.stringify({
boardToken: url.searchParams.get('for'),
jobToken: url.searchParams.get('token')
});
https://job-boards.greenhouse.io/embed/job_app?for={boardToken}&token={jobToken}Workday (*.myworkdayjobs.com/...):
Unknown ATS:
Scout the form. Once on the application form, do a quick scan (read_page(filter="interactive") or scroll through for Workday) to determine:
Record these requirements — they determine what materials to generate in Step 4.
The goal is to have everything ready before filling, so the user does minimal work.
Always tailor the resume. Check if DATA_DIR/jobs/[job-folder]/resume.md exists for this job:
skills/tailor-resume/SKILL.md — use the job posting (already loaded), the original resume, and the work history profile to generate a tailored resume. Save to the job folder. Present it to the user for quick review before continuing.Generate a cover letter only if the form requires one. If the scout in Step 3 found a cover letter field:
DATA_DIR/jobs/[job-folder]/cover-letter.md existsskills/cover-letter/SKILL.md — use the posting, tailored resume, and profile. Save to the job folder. Present it for quick review.If the form doesn't have a cover letter field, skip cover letter generation entirely.
Tell the user what was generated:
Prepared for [Role] at [Company]:
- Tailored resume: [generated / already existed]
- Cover letter: [generated / already existed / not required by form]
Ready to fill the application. Proceeding...
Before filling anything, scan the entire form to discover every field. Do NOT fill fields during this step — read only.
For Lever/Greenhouse (single-page forms):
read_page(tabId, filter="interactive") to get all fields at onceFor Workday (multi-step wizard):
read_page at each viewport positionFor each field found, record:
Generate a proposed answer for every field using this priority:
application-data.md per the Field Matching Reference belowapplication-data.md for previously cached answersPresent ONE consolidated summary to the user:
Here's my plan for the [Company] application:
**Auto-fill from your data:**
- First Name: Jane
- Last Name: Doe
- Email: jane@example.com
- Phone: 555-0123
- LinkedIn: https://linkedin.com/in/janedoe
...
**Proposed answers (please review):**
- Legal First Name: Jane (same as first name)
- Electronic signature: Jane Doe
- Arbitration agreement: Accept
- Contract work: No
- [Any other non-obvious fields]: [proposed answer]
**Needs your input:**
- [Only truly ambiguous fields, if any]
**Manual upload needed:**
- Resume: [file path]
- Cover letter: [file path] (if applicable)
Approve and I'll fill everything in. Or tell me what to change.
Key principle: Ask once, fill once. Do not interrupt with per-field questions. The only user interaction should be this single approval (plus the final submit confirmation in Step 8).
After the user approves (with any edits), cache any new answers in DATA_DIR/application-data.md under a "Custom Answers" section so they're reused on future applications.
After approval, fill everything in one pass.
Delegate to the subagent. Invoke scripts/fill-page.md with:
The subagent fills all fields on the current page, then returns what was filled and what remains.
For multi-page forms (Workday):
File upload handling:
MCP tools can only upload images via upload_image. For PDF/DOCX resume and cover letter uploads, tell the user the file path and ask them to upload manually. This is a known limitation — include the path in the Step 6 summary so the user can upload while reviewing.
When a review/confirmation page is reached or all fields on a single-page form are filled:
Do NOT click Submit/Send until the user confirms.
After submission (or if the user decides not to submit):
Create DATA_DIR/jobs/[company-slug]-[date]/applied.md:
# Application Log
- **Date**: YYYY-MM-DD
- **ATS**: Greenhouse/Lever/Workday
- **Status**: Submitted / Draft (not submitted)
- **Notes**: [any relevant notes]
Update DATA_DIR/job-history.md — find the entry for this job and append the application status and date.
Present to user:
Applied to [Role] at [Company] on [date].
Files saved to: DATA_DIR/jobs/[folder]/
Match form field labels (case-insensitive, fuzzy) to application data:
| Label pattern | Data source | Input method |
|---|---|---|
first name | Personal.FirstName | form_input / type |
last name | Personal.LastName | form_input / type |
full name | Personal.FirstName + LastName | form_input / type |
email | Personal.Email | form_input / type |
phone | Personal.Phone | form_input / type |
city, location, current location | Personal.City | form_input / type / combobox |
country | Personal.Country | dropdown selection |
linkedin | Profiles.LinkedIn | form_input / type |
github | Profiles.GitHub | form_input / type |
portfolio, website | Profiles.Portfolio | form_input / type |
resume, cv | File upload: resume PDF | file upload |
cover letter | File upload: cover letter | file upload |
how did you hear | StandardAnswers.HowHeard | dropdown: "Job Board" |
previously worked | StandardAnswers.PreviouslyWorked | radio/checkbox: "No" |
authorized to work, work authorization | StandardAnswers.WorkAuth | radio/dropdown |
sponsorship | StandardAnswers.Sponsorship | radio/dropdown |
gender | EEO.Gender | dropdown: "Decline" |
race, ethnicity | EEO.Race | dropdown: "Decline" |
Unrecognized fields: Check if required. If required, ask the user. If optional, skip. Cache user answers in DATA_DIR/application-data.md under "Custom Answers" for reuse.
Lever: form_input with value or text works directly for all field types including dropdowns.
Greenhouse: form_input with value works after navigating to the direct form URL (outside the iframe).
Workday:
read_page(filter="interactive") only returns viewport-visible elements. Must scroll top-to-bottom, calling read_page at each scroll position.read_page — use find tool or computer click at coordinates.button elements that open popup panels. Click the button → use find or read_page to locate options → click the option. For hierarchical dropdowns (like "How Did You Hear"), search within the popup using the Search textbox.Structure user-facing output with these sections:
veteran | EEO.Veteran | dropdown/radio: decline option |
disability | EEO.Disability | dropdown/radio: decline option |