application/skills/account-status/SKILL.md
Generate a account status report by taking an account name, analyze spend trends and AWS account mappings, create an HTML report, render chart image for email compatibility, ask recipient email after report completion, and send immediately without reconfirmation. All analysis and email narrative must be in Korean.
npx skillsauth add kyopark2014/agent-plugins account-statusInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
이 스킬은 계정명 하나를 입력받아 해당 계정의 지출/매출 상태를 분석하고, HTML 리포트를 생성한 뒤 차트를 이미지(JPEG 권장)로 변환하여 이메일 본문에 포함해 발송합니다.
사용자에게 계정명을 받습니다. 이름으로 계정을 조회해 정확히 1개 대상 계정을 확정합니다.
아래 두 계정은 알려진 SFDC Account ID로 우선 매핑할 수 있습니다:
LG Chemical → 0015000000fSYKUAA4LG Energy Solution (LG Ensol) → 0014z00001bw6vaAAASK E&S → 0013800001FFCZ7AAPSK Chemicals → 0013800001G2bXHAAZSK Gas → 0013800001DG1Y6AALSK Innovation → 0013800001FFCZ2AAPSK Discovery → 0010z00001TgcUHAAZSK D&D → 0010z00001XDeFaAALLX Semicon → 0013800001CCbE4AALSeoul Semiconductor → 0013800001MGKpLAAX입력 계정명이 위 별칭과 일치/유사하면 조회 전에 해당 ID를 우선 사용해도 됩니다.
동명이인이 여러 개면 사용자에게 후보를 보여주고 선택을 받습니다.
계정이 없으면 실패 사유를 알리고 종료합니다.
조회 결과에서 최소한 아래 값을 확보합니다:
accountId (SFDC account id)accountName확정 후 조회 예시:
get_account_spend_summary(sfdcAccountId: "<resolved_account_id>")
get_account_spend_history(accountId: "<resolved_account_id>", includeMonthlyBreakdown: true)
확정된 단일 계정에 대해 아래 데이터를 조회합니다.
chargeR12 기준 정렬, 충분한 limit)chargeR12 기준 정렬)가능하면 병렬 호출합니다.
AWS account 매핑 분석은 MoM(전월 대비) 중심으로 제공합니다.
aws_sentral에서 제공되는 momPercentCharge를 기준으로 증감 추이를 해석합니다.아래 지표를 계산합니다.
chargeR12 합계 및 비중(awsAccount.chargeR12 / aggregateTotals.mons12.chargeAmount) * 100(service.chargeR12 / aggregateTotals.mons12.chargeAmount) * 100AWS 계정 분석에서는 각 행에 최소한 다음을 포함합니다:
accountRevenue.idaccountRevenue.nameaccountRevenue.chargeR12accountRevenue.momPercentChargeaccountRevenue.name/email/role 패턴 기반 추정 가능)accountRevenue.supportLevelaccountRevenue.role표/요약/권장 조치에서 AWS 계정을 언급할 때는 MoM을 항상 제시합니다. 서비스를 언급할 때는 **R12 금액 + 전체 비중(%)**을 항상 함께 제시합니다.
리포트 파일 예시:
application/artifacts/<sanitized_account_name>_revenue.html
필수 섹션:
<section id="account-monthly-trend-12m"> 유지<script> 내 const months12, const chargeData, const revenueData 유지Unknown으로 표기기타/미분류로 표기이메일에서 JS가 동작하지 않으므로, 아래 스크립트로 차트 이미지를 생성합니다:
application/skills/account-status/scripts/html_to_chart_image.mjs.jpg (용량 작음)예시:
node application/skills/account-status/scripts/html_to_chart_image.mjs \
application/artifacts/<sanitized_account_name>_revenue.html \
application/artifacts/<sanitized_account_name>_chart.jpg
의존성(chart.js, skia-canvas, sharp)은 루트 또는 해당 스킬 폴더에서 npm install로 준비합니다.
MCP tool 파라미터 크기 제한을 피하기 위해 차트 이미지는 기본적으로 저용량 설정(가로폭 축소 + JPEG 품질 하향)으로 생성합니다.
필요하면 아래 환경변수로 추가 축소를 적용합니다:
CHART_IMAGE_MAX_WIDTH=760 CHART_IMAGE_JPEG_QUALITY=65 \
node application/skills/account-status/scripts/html_to_chart_image.mjs \
application/artifacts/<sanitized_account_name>_revenue.html \
application/artifacts/<sanitized_account_name>_chart.jpg
이메일 본문(HTML) 구조:
<img ...>)차트 삽입 방식:
data:image/jpeg;base64,...)https:// 이미지 URLCHART_IMAGE_MAX_WIDTH/CHART_IMAGE_JPEG_QUALITY를 낮춰 재생성한 뒤 포함합니다.보고서(HTML + 차트 이미지)가 완성되면 수신 이메일 주소를 사용자에게 묻습니다. 이 단계에서는 주소만 확인하며, 추가 발송 확인은 받지 않습니다.
Step 7에서 이메일 주소를 받으면 즉시 발송합니다(재확인 없음).
큰 HTML 본문(예: data URL base64 이미지 포함, 20KB+)은 email_send의 body 파라미터로 직접 보내지 말 것.
email_draft → bodyFilePath 로 읽어 발송한다.권장 절차:
$TMPDIR/<account>_email_body.html).
base64 -i <chart.jpg> | tr -d '\n' > $TMPDIR/<acct>_chart_b64.txt 로 생성 후 heredoc에 주입./tmp/... 직접 쓰기는 실패하므로 $TMPDIR 사용.email_draft (operation=create) 호출 시 bodyFilePath에 위 파일 경로를 지정해 드래프트 생성.draftId/draftChangeKey로 email_draft (operation=update, send: true) 호출하여 즉시 발송.email_draft(operation: "create", to: ["<recipient>"], subject: "...",
bodyFilePath: "$TMPDIR/<acct>_email_body.html")
email_draft(operation: "update", draftId: "<id>", draftChangeKey: "<key>", send: true)
짧은 본문(차트 이미지 없이 요약만)일 때만 email_send의 body 파라미터를 직접 사용해도 무방하다.
CHART_IMAGE_MAX_WIDTH=600, CHART_IMAGE_JPEG_QUALITY=55면 JPEG 약 18KB, base64 인코딩 후 약 24KB로 Outlook 본문에 무리 없이 삽입됨.760 / 65 조합은 약 22KB / 30KB로 기본값으로 적당.wc -c 등으로 base64 길이를 확인해 너무 크면 재생성.__BODY_FROM_FILE__)로 나갔다면 삭제 시도하지 말고 재발송한다(원본 메일은 사용자가 수신자 측에서 처리).email_draft + bodyFilePath 절차를 사용한다.scripts/html_to_chart_image.mjs 의 템플릿 리터럴은 백슬래시 이스케이프 금지 (\...`가 아니라 백틱 그대로). 이스케이프된 상태면 Node가 SyntaxError: Invalid or unexpected token`으로 실패함.예시 제목:
<account name> 상태 분석 리포트 - YYYY-MM-DD작업 완료 시 사용자에게 아래를 제공:
N/A와 함께 명시합니다.email_send의 body 파라미터로 직접 전달하지 않고, 파일로 저장 후 email_draft의 bodyFilePath로 발송합니다(MCP 파라미터 크기/인용 이슈 회피).$TMPDIR 아래에 생성합니다. 샌드박스 환경에서 /tmp 직접 쓰기는 실패할 수 있습니다.development
Use this skill whenever the user wants to create, read, edit, or manipulate Word documents (.docx files). Triggers include: any mention of 'Word doc', 'word document', '.docx', or requests to produce professional documents with formatting like tables of contents, headings, page numbers, or letterheads. Also use when extracting or reorganizing content from .docx files, inserting or replacing images in documents, performing find-and-replace in Word files, working with tracked changes or comments, or converting content into a polished Word document. If the user asks for a 'report', 'memo', 'letter', 'template', or similar deliverable as a Word or .docx file, use this skill. Do NOT use for PDFs, spreadsheets, Google Docs, or general coding tasks unrelated to document generation.
tools
Amazon Bedrock 기반 PowerPoint(.pptx) 번역. 서식·레이아웃·차트 메타(제목/축 등)를 보존하며 텍스트를 한국어(ko) 등 대상 언어로 변환. CLI(`python -m ppt_translator.cli`)·SQLite 캐시·용어집· 원문 언어 자동 감지. PPT/슬라이드 번역, pptx 한국어, Bedrock 프레젠테이션 번역, batch translate, dry-run 비용 추정.
data-ai
Create or update AgentSkills. Use when designing, structuring, or packaging skills with scripts, references, and assets.
development
Search a knowledge base using Amazon Bedrock RAG (Retrieval-Augmented Generation). Use when users want to find information from uploaded documents, ask questions about stored knowledge, or retrieve relevant content from the knowledge base. Returns matched content with source references and URLs.