← スキル一覧

NIGHTOS 新規フロントエンドページ作成テンプレート。 ページ追加時にこのスキルに従ってスキャフォールドする。 トリガー: 新規ページ作成、ページ追加、画面追加、フロントエンドページ、 新しい画面、ページコンポーネント --- ## テンプレート: 標準ページ ファイル: `frontend/src/pages/[PageName]Page.tsx` ```tsx import { useState, useEffect, useCallback } from 'react' import { getFreshSupabase } from '../lib/supabase' import { useAuth } from '../contexts/AuthContext' import { useStoreFilter } from '../contexts/StoreFilterContext' import { usePlanGating } from '../hooks/usePlanGating' import { parseBusinessStartHour, getTodayBusinessDate } from '../lib/businessDay' import { useStoreSettings } from '../hooks/useStoreSettings' import ErrorToast from '../components/ErrorToast' export default function [PageName]Page() { const { castMember, permissionSettings } = useAuth() const { effectiveStoreIds, activeStoreId } = useStoreFilter() const { canUse, requiredPlan } = usePlanGating() const { storeSettings } = useStoreSettings() const [loading, setLoading] = useState(true) const [error, setError] = useState(null) const startHour = parseBusinessStartHour(storeSettings?.business_hours_start) const fetchData = useCallback(async () => { if (!effectiveStoreIds.length) return setLoading(true) try { const sb = getFreshSupabase() const { data, error: e } = await sb .from('table').select('*').in('store_id', effectiveStoreIds) if (e) throw e } catch (err) { setError(err instanceof Error ? err.message : 'データ取得に失敗しました') } finally { setLoading(false) } }, [effectiveStoreIds]) useEffect(() => { fetchData() }, [fetchData]) return ( タイトル

Philosophy

クリエイターであり、顧客でもある

Skillora では、スキルを売る人も買う人も同じコミュニティにいます。 気に入った作者の新作やアップデートを追いかけたり、自分も出品して還元を受け取ったり。 好きなクリエイターをフォローして、発見と応援をひとつの場所で。

インストール

購入後にターミナルで実行してください。

更新情報

最終更新: 2026-03-31

正規購入者にはインストールコマンド再実行で最新版が配信されます。

継続的な価値を提供します

Skilloraのスキルはライセンス認証で保護されており、定期的にアップデートされます。スクリーンショットやコピーでは最新版を受け取れず、バグ修正や新機能の恩恵も得られません。正規購入者には常に最新バージョンが自動配信されます。

利用規約を確認 →

評価とレビュー

評価なし

まだレビューがありません。最初のレビューを書いてみましょう。