Skip to content
Back to skills

copy-masters

ASecurity

광고 대행사의 작업 흐름(클라이언트 브리프 → 원자료 → 플래너의 과제 재정의와 크리에이티브 브리프 → CD 크리에이티브 서저리 → 크리에이티브 팀 3개의 아이데이션 → CD 리뷰 두 번과 팀 재작업·변론 → 광고주 선택과 사실·규제 검수)을 역할별 에이전트로 따라가 헤드라인을 내는 카피 파이프라인. 사람 확인 없이 고르는 일까지 모델이 하고, 결과와 함께 각 단계가 업계 흐름대로 돌았는지 점검한 표를 낸다. "광고 카피 써줘", "카피 뽑아줘", "헤드라인 만들어줘", "copy-masters" 요청에 사용. 퍼포먼스/브랜드 모드, SNS 피드·검색광고·상세/랜딩페이지·영상 스크립트 채널의 헤드라인.

  • 2 stars
  • 0 votes
  • 0 copies
  • 1 view
  • Added October 2, 2026
ai-agentspythongobash

Works with

  • cli

Security analysis

A100/100

Pro scans all 9 files and shows the line behind each finding

Scanned October 2, 2026

npx -y skills add 5hyuns/ad-copy-agency-skill --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of copy-masters?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for copy-masters
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/5hyuns-copy-masters/badge)](https://www.skillsdirectory.com/skills/5hyuns-copy-masters)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: copy-masters
description: 광고 대행사의 작업 흐름(클라이언트 브리프 → 원자료 → 플래너의 과제 재정의와 크리에이티브 브리프 → CD 크리에이티브 서저리 → 크리에이티브 팀 3개의 아이데이션 → CD 리뷰 두 번과 팀 재작업·변론 → 광고주 선택과 사실·규제 검수)을 역할별 에이전트로 따라가 헤드라인을 내는 카피 파이프라인. 사람 확인 없이 고르는 일까지 모델이 하고, 결과와 함께 각 단계가 업계 흐름대로 돌았는지 점검한 표를 낸다. "광고 카피 써줘", "카피 뽑아줘", "헤드라인 만들어줘", "copy-masters" 요청에 사용. 퍼포먼스/브랜드 모드, SNS 피드·검색광고·상세/랜딩페이지·영상 스크립트 채널의 헤드라인.
---

# copy-masters — 대행사 작업 흐름으로 헤드라인 만들기 (v5)

## 무엇을 하는가

실제 광고는 한 사람이 문장을 잘 써서 나오지 않는다. 플래너가 받은 과제를 다시 정의하고, CD가 브리프를 심사하고, 여러 팀이 많이 써 오고, CD가 여러 번 쳐내고, 광고주가 고른다. 런던 대행사 연구(Turnbull & Wheeler)가 기록한 24단계 가운데 아이디어를 내는 단계는 둘뿐이고 나머지는 과제 합의와 검증이다. 이 스킬은 그 흐름을 역할별 에이전트로 따라간다.

설계 근거는 `reports/copy-masters 설계안 (v5).md`에 있다. 잘 알려진 광고 25편의 제작 기록(`research_notes/v5-workflow-cases/`)과 앞선 조사(`reports/카피 제작 과정과 스킬의 차이.md`)에서 가져왔다.

이전 판과의 관계: v1~v4는 대가(Ogilvy, Bernbach, 다니야마, 정철)의 방식을 옮겼다. v4는 같은 원자료를 받은 단일 프롬프트에 미리 정한 기준에서 졌고(`skill-tests/2026-09-30-v4-fictional/eval/market/result.md`), 그래서 대가 구조를 내렸다. v4는 `archive/copy-masters-v4/`에 있다.

## 원칙

1. **역할마다 다른 에이전트가 맡는다.** 플래너, CD, 팀, 광고주는 서로의 작업 과정을 보지 않고 앞 단계의 산출물 파일만 받는다. 쓴 팀은 자기 줄을 고르지 않는다. 팀은 다른 팀의 줄을 보지 않고, 1차에서 앞 팀이 연 루트의 평문만 "이미 나온 길"로 받는다(원칙 9와 5단계).
2. **공통 원자료에는 해석을 넣지 않는다.** 해석은 플래너의 일이다. 오케스트레이터는 어느 파일에도 자기 해석을 적지 않는다.
3. **과제는 다시 정의한다.** 사례 25편 중 16편에서 받은 과제를 "말할 것"으로 다시 정의하는 단계가 따로 있었다. 플래너는 말 상대 바꾸기, 문제 종류 바꾸기, 빈자리 찾기 가운데 하나로 재정의하고, 근거가 된 한 장면이나 한마디를 원자료 번호로 가리킨다.
4. **팀 프롬프트에 심사 기준을 심지 않는다.** 심은 것은 목표가 된다(v1의 사실 제약, v2의 관문 기준). 팀은 브리프와 원자료만 받는다. 기준은 CD와 광고주의 것이다.
5. **CD는 기준을 먼저 적고 줄마다 따로 판정한다.** 줄끼리 맞대거나 순위를 매기지 않는다. 호불호·장단점 비교로 고르지 않는다. 길이와 정보량은 판정 이유가 아니다(모델 판정자는 긴 줄을 고르는 버릇이 있다).
6. **죽은 줄을 변론할 자리를 둔다.** 사례 대부분에서 강한 반대가 있었고 누군가 아이디어를 지켰다. 팀마다 한 줄을 변론할 수 있다.
7. **사실만 지어내지 않는다.** 장면·비유·가상의 상황은 자유다. 제품의 수치·조건·후기·인증·수상·성과는 원자료나 브리프의 믿을 이유에 있어야 하고, 의뢰인 제공이 아닌 사실에는 `[의뢰인 확인 필요]`가 붙는다. 검수는 광고주 단계에서 한다.
8. **사람 확인 지점은 없다.** 고르는 일까지 모델이 한다. 사용자는 결과와 과정 점검을 받는다.
9. **팀은 차례로 돌고, 다음 팀은 이미 나온 길을 안다.** 같은 모델의 팀 셋은 같은 브리프에서 같은 길로 모인다. 실무에서 CD가 다음 팀을 붙일 때 "그 길은 이미 있다"고 알려 주듯, 앞 팀의 루트 평문을 넘기고 단일 제안은 그대로 두게 한다. 가상 제품 둘에서 서로 다른 길의 비율이 0.47 → 0.80, 0.33 → 0.87로 올랐고 제안 밖으로 나간 길은 없었다.
10. **잘 알려진 광고는 에이전트에게 읽히지 않는다.** 사례는 설계의 근거다. 예시 문장은 문체 모방을 부른다.
11. **흐름은 하나, 줄을 쓰고 고르는 단계만 언어를 탄다.** 다국적 캠페인에서 대행사는 헤드라인을 번역하지 않고, 같은 브리프로 시장마다 새로 쓴다(트랜스크리에이션). 1~4단계(OT, 원자료, 플래너, 서저리)는 템플릿 하나를 같이 쓰고 카피 언어로 결과를 쓴다. 5~9단계(팀, CD, 광고주)는 `templates/<카피 언어>/`의 템플릿을 쓴다. 채널 규격과 규제 검수표는 `references/<시장>/`에 있다. 언어·문화별 작법은 팀 프롬프트에 넣지 않는다(원칙 4). 문화 차이는 브리프와 원자료로 들어간다. 고객의 말은 번역하지 않는다.

## 실행 인자

| 인자 | 필수 | 값 |
|---|---|---|
| 주제 | 예 | 무엇을 광고하는가 |
| 사업 목표 | 예 | 한 줄. 사례의 과제도 "increase usage"처럼 짧았다 |
| 타깃 | 예 | 누구에게 말하는가 |
| 모드 | 예 | `퍼포먼스`(전환·클릭) / `브랜드`(기억·태도) |
| 채널 | 예 | `SNS 피드`, `검색광고`, `상세·랜딩페이지`, `영상 스크립트` 중 하나 |
| 브랜드명 | 예 | 산출물 폴더와 학습 로그의 키 |
| 제품 진실 | 아니오 | 회사가 스스로 말하는 제품의 핵심 |
| 필수 사항 | 아니오 | 꼭 들어가거나 빠져야 할 것, 말투 조건 |
| 업종 | 아니오 | 주어지면 업종별 규제를 추가 점검 |
| 사용자 자료 | 아니오 | 소개서, 후기, 인터뷰. 있으면 출처 등급이 "의뢰인 제공" |
| 카피 언어 | 아니오 | `ko`(기본) 또는 `en`. 헤드라인을 쓰는 말 |
| 시장 | 아니오 | `kr` 또는 `us`. 채널 규격과 규제 검수의 나라. 주어지지 않으면 카피 언어가 ko면 kr, en이면 us |

필수 인자가 빠지면 먼저 묻는다. 모드·채널·타깃은 추측하지 않는다.

## 산출물 위치

```
copy-runs/<브랜드>/
  learning-log.md
  <YYYY-MM-DD>-<주제-slug>/
    01-client-brief.md          # OT: 실행 인자 그대로
    02-raw.md                   # 원자료 (원문과 출처만)
    03-creative-brief.md        # 플래너의 크리에이티브 브리프
    04-surgery.md               # CD 크리에이티브 서저리
    05-team-A.md, -B.md, -C.md  # 팀 1차 아이데이션 (차례로)
    05-known-B.md, -C.md        # 다음 팀에게 넘긴 이미 나온 길
    06-pool-1.md, 06-pool-key.json   # CD 1차용 풀(팀 가림)
    06-cd-review-1.md           # CD 1차 리뷰
    07-feedback-A.md …          # 팀별 CD 판정
    07-team-A.md …              # 팀 재작업과 변론
    08-quotes.md                # 사용 승인을 받은 고객의 말 원문과 출처(있을 때만)
    08-pool-2.md, 08-pool-key.json   # CD 2차용 풀(팀·판 가림)
    08-cd-review-2.md           # CD 2차 리뷰
    09-candidates.md            # 광고주에게 가는 후보
    09-client-review.md         # 광고주 선택과 사실·규제 검수
    10-final.md                 # 최종 줄과 거쳐 온 길
    10-process-check.md         # 과정 점검
```

스크립트(`scripts/`)는 역할 사이에서 파일을 옮기고 가린다. 오케스트레이터가 줄을 손으로 옮기지 않는다. `{스킬}`은 이 스킬 폴더의 절대 경로다(프로젝트의 `.claude/skills/copy-masters/`든 `~/.claude/skills/copy-masters/`든). 스크립트는 `{스킬}/scripts/`에서 `python <스크립트> <인자> <실행 폴더>`로 부른다.

## 단계

### 0. 학습 로그 읽기
`copy-runs/<브랜드>/learning-log.md`가 있으면 읽고, 같은 채널·모드의 교훈을 사용자에게 한 줄로 알린다. 에이전트 프롬프트에는 넣지 않는다.

### 1. OT → `01-client-brief.md`
오케스트레이터가 실행 인자를 받은 그대로 적는다. 해석을 덧붙이지 않는다.
```
# 클라이언트 브리프
- 주제:
- 사업 목표:
- 타깃:
- 모드:
- 채널:
- 브랜드명:
- 제품 진실(회사의 말): (없으면 "없음")
- 필수 사항: (없으면 "없음")
- 업종: (없으면 "없음")
- 사용자 자료: (경로 또는 "없음")
- 카피 언어: ko 또는 en
- 시장: kr 또는 us
```
카피 언어가 en이면 항목 이름 뒤에 영어 이름을 괄호로 붙이고 값은 받은 말 그대로 적는다(`- 주제 (Subject):`, `- 사업 목표 (Business goal):`, `- 타깃 (Target):`, `- 모드 (Mode):`, `- 채널 (Channel):`, `- 브랜드명 (Brand):`, `- 카피 언어 (Copy language): en`). 스크립트가 이 파일의 `카피 언어`를 읽어 다음 역할에게 넘기는 파일의 말을 정한다.

### 2. 재료 모으기 → `02-raw.md` (`templates/common/collect-prompt.md`)
수집 에이전트 하나. 시장이 kr이 아니면 템플릿 맨 아래 "다른 시장일 때"를, 카피 언어가 en이면 "영어로 쓸 때"를 붙이고, 해당하지 않는 절은 뺀다. 검색 상한 10회, 원문 수신 15건(임시 값). 사용자 자료가 있으면 그것부터 옮긴다.

### 3. 플래너 → `03-creative-brief.md` (`templates/common/planner-prompt.md`)
플래너 에이전트 하나. 카피 언어가 en이면 "영어로 쓸 때"를 붙인다. 추가 조사 상한은 검색 5회, 원문 수신 8건.

### 4. 크리에이티브 서저리 → `04-surgery.md` (`templates/common/cd-surgery-prompt.md`)
CD 에이전트 하나. 카피 언어가 en이면 서저리와 플래너 고치기 모두 "영어로 쓸 때"를 붙인다. 판정이 "돌려보냄"이면 플래너 에이전트를 새로 띄워 같은 템플릿의 "고칠 때"로 한 번 고친다. 다시 서저리를 하지 않는다.

### 5. 팀 아이데이션 → `05-team-{A,B,C}.md` (`templates/<카피 언어>/team-prompt.md`)
5~9단계 템플릿의 `{시장}`에는 `kr` 또는 `us`를 넣는다. 영어 템플릿의 `{채널}`에는 채널 이름을 `SNS 피드 (Social feed)`처럼 한국어 정본과 영어를 함께 넣는다(채널 규격 파일의 절 제목이 한국어 정본이다).
팀 에이전트 셋을 **차례로** 띄운다. 팀당 줄 수 {줄 수}는 33으로 둔다(합쳐서 100줄 안팎).
- 팀 A: "이미 나온 길" 절 없이 띄운다.
- 팀 B: 팀 A가 끝나면 `python build_pool.py known <실행 폴더> B`를 돌리고, 출력의 목록을 팀 B 프롬프트의 "이미 나온 길"에 그대로 붙인다.
- 팀 C: 팀 B가 끝나면 `known <실행 폴더> C`로 같은 일을 한다(A와 B의 루트).
차례로 돌아서 이 단계는 동시 실행보다 약 세 배 걸린다. 토큰은 같다.
셋이 끝나면 `python build_pool.py round1 <실행 폴더>`로 `06-pool-1.md`를 만든다. 출력에 "루트 표에 없는 루트를 단 줄"이 있으면 그 줄은 풀에서 빠진 것이다. 그대로 진행하고 요약에 적는다.

### 6. CD 1차 → `06-cd-review-1.md` (`templates/<카피 언어>/cd-review-1-prompt.md`)
CD 에이전트를 새로 띄운다. 끝나면 `python build_pool.py feedback <실행 폴더>`. 판정 빠진 줄이 있으면 같은 CD 에이전트에게 SendMessage로 빠진 줄만 판정하게 한 뒤 다시 돌린다(한 번까지).

### 7. 재작업과 변론 → `07-team-{A,B,C}.md` (`templates/<카피 언어>/team-rework-prompt.md`)
팀 에이전트 셋을 새로, 한 메시지에서 동시에 띄운다. 루트당 줄 수는 8로 둔다.
원자료에 사용 승인을 받은 고객의 말이 있으면, round2 전에 그 말만 원문 그대로 출처와 함께 `08-quotes.md`에 옮긴다(`## 고객의 말` 아래 `| 말 | 출처 |` 표). 고쳐 쓰거나 고르지 않고, 다른 재료나 해석은 적지 않는다. 팀은 받은 재료를 바꿔 쓰는 게 일이라 원문을 그대로 내지 않는다. 원문 줄이 고쳐 쓴 줄을 이겼다(`skill-tests/2026-10-02-quote-verbatim/result.md`, `-cd2-proof/result.md`). 승인된 말이 없으면 이 파일을 만들지 않는다. 카피 언어와 다른 말로 된 후기는 번역해 넣지 않고 빼며, 카피 언어가 en이면 절 제목을 `## Customer quotes`, 표 머리를 `| Quote | Source |`로 쓴다.
끝나면 `python build_pool.py round2 <실행 폴더>`로 `08-pool-2.md`를 만든다.

### 8. CD 2차 → `08-cd-review-2.md` (`templates/<카피 언어>/cd-review-2-prompt.md`)
CD 에이전트를 새로 띄운다. 끝나면 `python build_pool.py candidates <실행 폴더>`로 `09-candidates.md`를 만든다.

### 9. 광고주 → `09-client-review.md` (`templates/<카피 언어>/client-prompt.md`)
광고주 에이전트 하나. 고를 줄이 없다고 하면 다시 돌리지 않고 그대로 보고한다.

### 10. 넘기기
- `python assemble.py <실행 폴더>` → `10-final.md`, `10-process-check.md`
- 학습 로그에 `templates/common/learning-log.md` 형식으로 덧붙인다.

## 끝나고 보고할 것
- 최종 줄과 대안 둘, 각 줄의 팀·루트
- 플래너의 재정의(방법과 근거가 된 장면)와 단일 제안
- 단계별 수(1차 줄 → CD 1차 → 재작업·변론 → CD 후보 → 광고주)
- 과정 점검에서 어긋난 항목
- 사실·규제 검수에서 걸린 줄과 `[의뢰인 확인 필요]` 항목
- 길이 기록(후보와 최종의 평균 글자 수가 풀보다 많이 긴가)

## 에이전트 프롬프트를 쓸 때
- 템플릿마다 맨 위의 "작성자 주의"를 따른다.
- "머릿속 과정을 빠짐없이 기록하라", "이 기록으로 심사한다" 같은 문구를 쓰면 안전장치 오류로 에이전트가 즉시 종료된다. 산출물 항목으로 요구한다.
- Tavily는 한도가 소진된 상태일 수 있다. WebSearch는 세션당 횟수 한도가 있다. 조사 에이전트 프롬프트에 상한을 적는다. Bash의 curl로 원문을 받는 방법이 잘 통한다.
- 역할 에이전트는 이전 라운드 에이전트를 이어 쓰지 않고 새로 띄운다. 이전 작업은 파일로 전한다.

## 알려진 한계
- **영어 카피는 한 번 시험했다.** 미국 가상 제품 SlowBowl 하나로 영어 전체 실행을 했다(`skill-tests/2026-10-02-en-trial/result.md`). 과정 점검 46개 통과, 판정어 모두 읽음. 고른 3줄의 영어 단일 프롬프트 두 회차 상대 승률은 0.39(단일끼리 0.67). 최종 줄(가장 긴 줄)이 모든 쌍에서 졌고 대안 하나는 0.83이었다. 같은 후보로 광고주를 9번 더 돌리니(지금 템플릿, 채널 안내 추가, 길이 문장 추가 각 3번) 모두 43자 대안 줄(단일 상대 0.67)을 최종으로 골라, 0.39는 광고주의 한 번 선택에 크게 기댄다(`skill-tests/2026-10-02-en-length/result.md`). CD 2차는 길이에 치우치지 않았고, 줄이 길어지는 곳은 팀 재작업이다(1차 생존 41.8자 → 재작업 58.5자, 한국어 고요베개 25.4 → 31.0). 미국 규제표로 광고주가 고객 후기 원문을 16 CFR 255.2로 뺐다. 아래 나머지 결과는 모두 한국어 가상 제품의 것이다.
- **단일 프롬프트를 이긴다는 근거가 없다.** 같은 입력을 받은 단일 프롬프트와 최종 3줄을 직접 비교했더니 v5 승률이 세 제품에서 0.44, 0.17, 0.44였다(`skill-tests/2026-10-02-v5-vs-single/result.md`). 단일은 원자료의 가장 강한 재료(승인된 고객의 말, 제품이 하는 일)를 곧바로 썼고, v5는 서저리와 CD 2차가 그 재료를 걸러 냈다. 단일 프롬프트에 v5 플래너의 브리프만 더 주어도 세 제품 모두 단일보다 못해졌으므로(같은 파일 2차), 원인은 주로 플래너의 재정의 단계에 있다. 그래서 브리프에 "날것 그대로의 재료" 칸을 더했다. 새 브리프는 옛 브리프보다 나았지만(0.61) 브리프 없는 단일을 아직 넘지 못한다(0.41, `skill-tests/2026-10-02-material-brief/result.md`). 단일 프롬프트를 한 번 더 돌려 보니 단일 자체가 크게 흔들렸다(모락에서 같은 프롬프트 두 회차가 0.17). 두 회차를 합친 v5 승률 여섯 개의 평균은 0.37이다. 찰칵일지와 수요일의 전화에서는 두 번 다 졌고, 모락에서는 단일이 약하게 나온 회차에 0.94로 이겼다(`skill-tests/2026-10-02-single-noise/result.md`). 그래서 이 스킬의 결과는 단일 프롬프트보다 대체로 못하거나 비슷하다고 본다. 쓸 이유는 결과보다 과정에 있다. 업계 흐름을 단계별로 따라가 볼 수 있고, 브리프 대조와 광고주 검수가 단일 프롬프트가 회차마다 되풀이한 사실 오류(채널 밖 사진이 정리되는 것처럼 읽히는 줄, 승인받은 고객 말의 임의 수정)를 막는다.
- **CD 2차가 증거를 앞세운 줄을 거르던 문제는 일부만 풀었다.** 옛 CD 2차는 승인받은 고객의 말 원문을 "믿을 이유 쪽", "정해진 답"이라며 뺐다(`skill-tests/2026-10-02-quote-verbatim/result.md`). 기준에 "단일 제안을 직접 말하는지로 보지 않는다"는 문장을 더하고 원문을 R00 줄로 풀에 넣자, 원문은 후보에 올랐고 수요일의 전화에서는 최종과 대안이 되어 단일을 0.68로 이겼다(`skill-tests/2026-10-02-cd2-proof/result.md`). 그러나 팀이 쓴 증거형 줄(제품이 하는 일)은 기준을 바꿔도 되살아나지 않았다. 원문 줄에 출처를 붙여 광고주에게 넘기는 부분은 찰칵일지 광고주가 출처 없는 후기라며 원문을 뺀 뒤에 더했고, 시험하지 않았다. CD 2차와 광고주를 같은 풀로 다시 돌려도 최종 줄이 크게 달라진다(0.50~1.00). CD 후보에는 지어낸 1인칭 후기 꼴 줄이 계속 오르고 광고주 검수에서 빠진다.
- **심판이 모두 모델이다.** CD와 광고주도 같은 모델이다. 사례의 반대와 변론은 서로 다른 사람의 이해관계에서 나왔는데, 여기서는 역할 지시로 흉내 낸다. 모델 판정은 독창성·놀라움에서 사람과 잘 맞지 않는다는 연구가 있다.
- **팀 셋이 같은 길로 모이는 문제는 차례 실행으로 줄였지만 다 풀지는 않았다.** 팀이 갈라지는 것은 확인했으나(`skill-tests/2026-10-02-divergence/result.md`, `-p2/result.md`), 찰칵일지 전체 실행(`skill-tests/2026-10-02-v5-run2/result.md`)에서 새 길은 CD 후보와 광고주 대안까지 남았지만, 최종 줄은 동시 실행과 같은 길에서 나왔고 가린 판정은 동시 실행 쪽 최종을 골랐다. 차례 실행이 최종 줄을 낫게 한다는 근거는 아직 없다. CD 1차의 살릴 루트 상한(3~5개)은 그 뒤에 템플릿에 넣었다. 상한 안에서도 새 길은 2~3개씩 살았다. 마지막 선택(광고주)은 제안을 곧바로 말하는 줄을 고르는 경향이 있어, 새 길은 대안 자리까지 가는 경우가 많다. 팀 B와 C는 앞 팀이 연 길을 피하므로 팀 순서가 결과에 영향을 준다. 시험은 조건마다 한 번씩, 판정도 같은 모델이 했다.
- **과정 점검은 단계가 돌았는지만 본다.** 단계가 잘 됐는지는 보지 않는다.
- **재료의 문.** 사례의 재정의는 시연, 포커스 그룹, 회의실의 한마디에서 나왔다. 이 스킬의 재료는 웹 원문뿐이고, 가상 제품이면 그마저 얇다.
- **결과물은 헤드라인 줄이다.** 실무의 단위는 그림과 함께인 루트이고, 서브·본문은 이 스킬 밖에 있다.
- **미확인 값:** 채널 글자 수 일부와 한국 법 조항은 `[미확인]`이다.

Files in this skill

  • README.ko.md8.3 KB
  • SKILL.md19.5 KB
  • docs/index.html23.3 KB
  • docs/llms.txt1.9 KB
  • docs/robots.txt91 B
  • docs/sitemap.xml418 B
  • scripts/assemble.py13.5 KB
  • scripts/build_pool.py10.9 KB
  • scripts/runfiles.py4 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…