Use when creating a new project folder, starter pack, app scaffold, or agent-ready workspace — AGENTS.md, README, TASKS, DECISIONS, PROMPTS, an idempotent bootstrap script, and starter-pack modes.
日本語の概要は準備中です。原文の説明を表示しています。
Use when designing or implementing search, filtering, sorting, query bars, and result states in Apple-platform apps — keep search, filter, and sort as separate jobs with clear no-result states.
インストールする前に、エージェントに与えられる指示の中身を確認できます。
Keep search, filtering, and sorting as distinct jobs with native SwiftUI patterns, visible active filters, and useful no-result states. Reach for it when building search bars, filter chips, sort menus, command palettes, or result and empty states.
Use this skill when designing or implementing search, filtering, sorting, query bars, and result states in Apple-platform apps.
Use for project search, skill search, prompt search, file search, memory search, command palette filtering, report filtering, and no-result states.
Search finds. Filters narrow. Sort changes order.
Do not mix their jobs.
Use for:
.searchableSearch: user types text to find matching content
Filter: user chooses constraints like status/type/date
Sort: user changes order like newest/name/priority
Example:
Search: “sidebar”
Filter: Type = Skill
Sort: Last Updated Desc
struct SkillsView: View {
@State private var searchText = ""
@State private var selectedFilter: SkillFilter = .all
@State private var sort: SkillSort = .recent
var filteredSkills: [Skill] {
SkillSearch.filter(
skills,
query: searchText,
filter: selectedFilter,
sort: sort
)
}
var body: some View {
List(filteredSkills) { skill in
SkillRow(skill: skill)
}
.searchable(text: $searchText, placement: .toolbar)
.toolbar {
ToolbarItemGroup(placement: .primaryAction) {
filterMenu
sortMenu
}
}
.overlay {
if filteredSkills.isEmpty {
noResultsView
}
}
}
}
private var filterMenu: some View {
Menu {
Picker("Filter", selection: $selectedFilter) {
Text("All").tag(SkillFilter.all)
Text("Enabled").tag(SkillFilter.enabled)
Text("Needs Review").tag(SkillFilter.needsReview)
}
} label: {
Label("Filter", systemImage: "line.3.horizontal.decrease.circle")
}
}
private var sortMenu: some View {
Menu {
Picker("Sort", selection: $sort) {
Text("Recently Updated").tag(SkillSort.recent)
Text("Name").tag(SkillSort.name)
Text("Category").tag(SkillSort.category)
}
} label: {
Label("Sort", systemImage: "arrow.up.arrow.down")
}
}
enum SkillSearch {
static func filter(
_ skills: [Skill],
query: String,
filter: SkillFilter,
sort: SkillSort
) -> [Skill] {
let q = query.trimmingCharacters(in: .whitespacesAndNewlines).lowercased()
var result = skills
if !q.isEmpty {
result = result.filter { skill in
skill.name.lowercased().contains(q)
|| skill.category.lowercased().contains(q)
|| skill.summary.lowercased().contains(q)
|| skill.keywords.contains { $0.lowercased().contains(q) }
}
}
result = applyFilter(result, filter: filter)
result = applySort(result, sort: sort)
return result
}
}
ContentUnavailableView {
Label("No Results", systemImage: "magnifyingglass")
} description: {
Text("Try a project, skill, prompt, file, or command name.")
} actions: {
Button("Clear Search") {
searchText = ""
}
}
Projects: name, path, tags, recent files
Skills: name, category, trigger words, summary
Prompts: title, variables, model target, purpose
Files: filename, path, extension
Notes: title, tags, source, body excerpt
Reports: date, title, source apps
Command palette: command title, keywords, category
Status: All / Running / Done / Failed / Needs Review
Type: Project / Skill / Prompt / File / Note
Source: Local / Cloud / Imported
Date: Today / This Week / This Month
Provider: Ollama / OpenAI / Gemini
Enabled: Enabled / Disabled
[ ] Search field is easy to find
[ ] Search, filter, and sort are separate concepts
[ ] Results update predictably
[ ] Active filters are visible
[ ] Clear Search / Clear Filters exists
[ ] No-result state is useful
[ ] Sorting is stable
[ ] Search covers relevant fields
[ ] Keyboard shortcut ⌘F works where appropriate
[ ] VoiceOver labels are clear
Search field hidden in random menu
Filters mixed into search syntax only
No no-result state
No way to clear filters
Search only checks title when users expect content
Sort changes unexpectedly
Command palette used as only search
Use the apple-hig-search-filtering skill to improve search, filters, and sorting.
Rules:
- Search finds text matches.
- Filters narrow by structured constraints.
- Sort changes order.
- Use .searchable where appropriate.
- Put filters and sort in toolbar menus when space is limited.
- Show active filters.
- Add Clear Search and Clear Filters.
- Add useful no-result state.
- Support ⌘F where appropriate.
- Keep VoiceOver labels clear.
After coding:
1. List search fields added.
2. Explain filter/sort behavior.
3. Explain no-result state.
4. Give manual test steps.
まだレビューはありません。使ってみた感想をお寄せください。
概要と使いどころ
Use when creating a new project folder, starter pack, app scaffold, or agent-ready workspace — AGENTS.md, README, TASKS, DECISIONS, PROMPTS, an idempotent bootstrap script, and starter-pack modes.
日本語の概要は準備中です。原文の説明を表示しています。
Use when designing or implementing states for AI agent tasks, background jobs, local model runs, queues, and notifications — one shared set of states, only legal transitions, and a recovery path out of every failure.
日本語の概要は準備中です。原文の説明を表示しています。
Use when exposing app features to App Intents, Shortcuts, Siri, Spotlight, widgets, controls, or system actions — small safe AppIntents, AppShortcutsProvider, AppEnum/AppEntity, parameters, and open-vs-background behavior.
日本語の概要は準備中です。原文の説明を表示しています。
Use when designing, reviewing, or implementing a command-palette / ⌘K layer for an Apple-platform app — keyboard-first global search, ranked and grouped results, native floating panel, and protected destructive commands.
日本語の概要は準備中です。原文の説明を表示しています。
Use when designing or implementing empty, first-run, no-result, offline, error, or waiting states in Apple-platform apps — every empty state explains what is missing, why it matters, and what to do next.
日本語の概要は準備中です。原文の説明を表示しています。
Use when designing or implementing feedback, status, progress, alerts, errors, success states, and live activity indicators in Apple-platform apps — inline status, banners, alerts, notifications, and loading states.
日本語の概要は準備中です。原文の説明を表示しています。