원클릭으로
period-in-review
Summarise your iMessage activity for a recent period — today, this week, or this month. Defaults to the current week.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
메뉴
Summarise your iMessage activity for a recent period — today, this week, or this month. Defaults to the current week.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
SOC 직업 분류 기준
Use the imessage-analysis MCP server to answer questions about the user's iMessage history.
Compare your messaging activity between two time periods — volume, contacts, and trends side by side.
Analyse your group chat activity — most active groups, top talkers per group, and activity over time.
Check whether imessage-analysis is installed and the MCP server is registered, and fix anything that's missing.
Show the current status of the iMessage analysis dataset — last sync time, total messages, and whether it's up to date.
Summarise your most recent message exchanges — who you've been talking to, what topics came up, and the overall tone of recent activity.
| name | period-in-review |
| description | Summarise your iMessage activity for a recent period — today, this week, or this month. Defaults to the current week. |
Give the user a concise summary of their messaging activity for a recent period.
If the user specifies: use it. If not: default to this week (Monday through today).
| User says | Period |
|---|---|
| "today" | current calendar day |
| "yesterday" | previous calendar day |
| "this week" / default | Monday of current week through today |
| "last week" | previous Monday–Sunday |
| "this month" | 1st of current month through today |
| "last month" | previous calendar month |
status()
If last_sync is more than 6 hours old, offer to sync first (or sync automatically if it seems stale).
Replace START_DATE and END_DATE with YYYY-MM-DD strings for the period.
Volume and balance
SELECT
COUNT(*) AS total_messages,
SUM(CASE WHEN is_from_me = 1 THEN 1 ELSE 0 END) AS sent,
SUM(CASE WHEN is_from_me = 0 THEN 1 ELSE 0 END) AS received
FROM messages
WHERE date BETWEEN 'START_DATE' AND 'END_DATE'
Active contacts (1-on-1)
SELECT
name,
COUNT(*) AS messages,
SUM(CASE WHEN is_from_me = 1 THEN 1 ELSE 0 END) AS sent,
SUM(CASE WHEN is_from_me = 0 THEN 1 ELSE 0 END) AS received,
MAX(CAST(timestamp AS VARCHAR)) AS last_message
FROM messages
WHERE date BETWEEN 'START_DATE' AND 'END_DATE'
AND name IS NOT NULL
AND chat_size = 1
GROUP BY name
ORDER BY messages DESC
LIMIT 10
Day-by-day breakdown (week and month only — skip for single day)
SELECT
CAST(date AS VARCHAR) AS day,
COUNT(*) AS total,
SUM(CASE WHEN is_from_me = 1 THEN 1 ELSE 0 END) AS sent,
SUM(CASE WHEN is_from_me = 0 THEN 1 ELSE 0 END) AS received
FROM messages
WHERE date BETWEEN 'START_DATE' AND 'END_DATE'
GROUP BY date
ORDER BY date
Reactions exchanged
SELECT reaction, COUNT(*) AS n
FROM messages
WHERE date BETWEEN 'START_DATE' AND 'END_DATE'
AND reaction != 'no-reaction'
GROUP BY reaction
ORDER BY n DESC
LIMIT 5
Links shared
SELECT link_domain, COUNT(*) AS n
FROM messages
WHERE date BETWEEN 'START_DATE' AND 'END_DATE'
AND link_domain IS NOT NULL
GROUP BY link_domain
ORDER BY n DESC
LIMIT 5
Group chat activity (week and month only)
SELECT
COUNT(*) AS messages,
COUNT(DISTINCT chat_id) AS group_chats
FROM messages
WHERE date BETWEEN 'START_DATE' AND 'END_DATE'
AND chat_size > 1
Tailor the length to the period — a day recap should be a few sentences; a month can be a paragraph or two.
For a day:
For a week:
time_series)For a month:
Always end with an offer to drill deeper: "Want a full breakdown of [top contact] or a look at a specific day?"