# feeeldstudy AI Library — instructions for AI assistants
https://feeeldstudy.com/en/
How an AI assistant can upload guides and skills on behalf of a member.
Always show the contents to the member and obtain confirmation before uploading.

## 0. Accepted content
- Skill: one root folder in a .zip, containing SKILL.md (name and description front matter) and README.md (human-readable introduction). Both are required.
- Guide: text or one .md file (up to 204800 bytes, 200KB). Send its contents in the JSON markdown field.
- No executables (.exe .dmg .app .pkg), nested archives, hidden files, .env files or private keys.
- If content appears to contain passwords or personal information, do not upload it; tell the member. The server never executes scripts.
- `zip_bytes`: 10485760
- `unzipped_bytes`: 26214400
- `entries`: 200
- `file_bytes`: 5242880
- `ratio`: 100
- `text_scan_bytes`: 1048576

## 1. Connect the account (once)
POST https://feeeldstudy.com/wp-json/ai-library/v1/device
```json
{"client_name":"My AI assistant"}
```
```json
{"device_code":"…","user_code":"ABCD-EFGH","verification_uri":"https://feeeldstudy.com/en/ai-library/connect/","verification_uri_complete":"https://feeeldstudy.com/en/ai-library/connect/?code=ABCD-EFGH","expires_in":600,"interval":5}
```
Show verification_uri and user_code (or verification_uri_complete) to the member and request approval within 10 minutes. Never ask for their password.
POST https://feeeldstudy.com/wp-json/ai-library/v1/token
```json
{"device_code":"…"}
```
Poll every interval seconds (default 5). Keep waiting for authorization_pending; increase the interval by 5 seconds for slow_down. Stop on access_denied; ask to reconnect on expired_token.
```json
{"access_token":"fdai_…","token_type":"Bearer","scope":"submit read_own","expires_in":2592000}
```
Access lasts 30 days and only permits review submissions and reading own status. Keep the token secret; never put it in chats, logs or public files. Members can revoke access from My submissions.

## 2. Prepare the search description
- title: 2–40 characters. slug: 3–64 lowercase letters, digits and hyphens; editable only for new items.
- description: recommended 80–160 characters (server accepts 20–160). Explain who benefits, when to use it and what it produces. Shown in search, cards and details; reviewers may edit it before approval.
- category: one key below. tags: at most 5, each up to 20 characters.
- declared: accurately describe reads, writes, network (none or uses, or a description) and deletes.
Show the draft and file contents to the member and get confirmation before uploading.
GET https://feeeldstudy.com/wp-json/ai-library/v1/categories
- `excel-area`: Spreadsheets & areas
- `law`: Regulations
- `docs`: Documents
- `meeting`: Meetings & email
- `image-render`: Images & rendering
- `portfolio`: Portfolio
- `etc`: Other

## 3. Upload
POST https://feeeldstudy.com/wp-json/ai-library/v1/submissions
Authorization: Bearer <access_token>
For skills, send multipart/form-data: file=<skill.zip>, meta=<JSON below>. Let your HTTP tool generate the Content-Type boundary.
```json
{"title":"면적표 정리","slug":"area-table","description":"회원에게 확인받은 검색 설명 (80~160자 권장)","category":"excel-area","tags":["면적표"],"declared":{"reads":"선택한 엑셀","writes":"새 엑셀","network":"none","deletes":"없음"}}
```
For guides, send application/json: {"kind":"guide","markdown":"# Title\nBody","meta":{…fields above…}}. Include item_id to submit a new version of an existing item.
```json
{"id":123,"status":"pending_review","checks":[{"id":"structure","level":"ok","label":"…","detail":"…","file":null,"line":null,"snippet":null}],"my_url":"https://feeeldstudy.com/en/ai-library/my/"}
```

### REST
| Method | URL | Request | Response |
|---|---|---|---|
| GET | https://feeeldstudy.com/wp-json/ai-library/v1/categories | — | [{key,label}] |
| POST | https://feeeldstudy.com/wp-json/ai-library/v1/device | {client_name} | {device_code,user_code,verification_uri,verification_uri_complete,expires_in,interval} |
| POST | https://feeeldstudy.com/wp-json/ai-library/v1/token | {device_code} | {access_token,token_type,scope,expires_in} |
| POST | https://feeeldstudy.com/wp-json/ai-library/v1/drafts | multipart file (+item_id) / JSON {kind:"guide",markdown,item_id?} | draft_view |
| POST | https://feeeldstudy.com/wp-json/ai-library/v1/drafts/<id> | JSON meta | draft_view |
| GET | https://feeeldstudy.com/wp-json/ai-library/v1/drafts/<id> | — | draft_view |
| POST | https://feeeldstudy.com/wp-json/ai-library/v1/drafts/<id>/submit | — | {id,status,my_url} |
| POST | https://feeeldstudy.com/wp-json/ai-library/v1/submissions | multipart file+meta / JSON {kind:"guide",markdown,meta,item_id?} | {id,status,checks,my_url} |
| GET | https://feeeldstudy.com/wp-json/ai-library/v1/submissions | — | own items[] |
| GET | https://feeeldstudy.com/wp-json/ai-library/v1/submissions/<id> | — | draft_view |
| POST | https://feeeldstudy.com/wp-json/ai-library/v1/items/<id>/report | JSON {reason} (cookie+nonce only) | {ok:true} |
`draft_view`: {id,slug,kind,state,version,version_status,source,checks,ok,files,total_bytes,readme_md,skill_md,prefill:{title,slug,description},meta:{title,slug,description,category,tags,declared},review_note,urls:{preview,my}}
`own items[]`: [{id,slug,kind,title,state,version,version_status,source,created,updated,installs,review_note,checks_block,url,edit_url}]
`files[]`: [{path,size,type,sha256}]
Except for categories, device and token, use a login cookie with X-WP-Nonce (wp_rest), or Bearer. Bearer only permits submit and read_own, not report. Device requests are limited to 20 per IP per hour.

## 4. Explain the result
- pending_review: say “Uploaded for review. It will become public after feeeldstudy approves it.” and share my_url.
- rejected_auto: HTTP 200 does not mean publication. Show the file, line and reason from checks, fix and resubmit. Distinguish warn from block.
- changes_requested/rejected: show review_note and ask whether to revise. Only published is public; hidden is not.
`error`: {"code":"ca_ail_invalid_meta","message":"…","data":{"status":422,"fields":{"title":"…"}}}
- 400: check input/files. 401: reconnect. 403: permission denied. 404: item not found. 422: fix fields or inspection issues. 429: wait for the daily limit to reset.
AI cannot publish or delete. Up to 10 submissions per day.

## 5. Installation method
- Anyone can preview; installation, downloading and copying require a logged-in member. Use the signed zip URL from the detail installation box (30 minutes, bound to that member).
- Ask AI: share the detail URL and say “Install this skill. Show me SKILL.md before installing.”
`npx skills add <설치 zip 주소>`
- Download the zip and add it as a skill in ChatGPT or Claude. Installation zip files exclude README.md and keep SKILL.md and scripts. Review guides before copying or downloading as .md.
- If a web-chat AI cannot upload files, create a zip for the member to upload at the page below. Never paste tokens or passwords into the chat.
https://feeeldstudy.com/en/ai-library/upload/

<!-- WP Optimize page cache - https://teamupdraft.com/wp-optimize/ - page NOT cached -->
