{"id":28868,"date":"2026-09-06T01:40:37","date_gmt":"2026-09-06T01:40:37","guid":{"rendered":"https:\/\/umang.pk\/2026\/09\/06\/%d8%a7%db%8c%d8%ac%d9%86%d9%b9%db%8c-%d9%81%d9%84%d9%b9%d8%b1-%da%88%d9%88%db%8c%d9%84%d9%be%d9%85%d9%86%d9%b9-%d9%85%db%8c%da%ba-%d9%b9%db%8c%da%a9%d9%86%d8%a7%d9%84%d9%88%d8%ac%db%8c-%da%a9%d8%a7\/"},"modified":"2026-09-06T01:40:39","modified_gmt":"2026-09-06T01:40:39","slug":"%d8%a7%db%8c%d8%ac%d9%86%d9%b9%db%8c-%d9%81%d9%84%d9%b9%d8%b1-%da%88%d9%88%db%8c%d9%84%d9%be%d9%85%d9%86%d9%b9-%d9%85%db%8c%da%ba-%d9%b9%db%8c%da%a9%d9%86%d8%a7%d9%84%d9%88%d8%ac%db%8c-%da%a9%d8%a7","status":"publish","type":"post","link":"https:\/\/umang.pk\/en_us\/2026\/09\/06\/%d8%a7%db%8c%d8%ac%d9%86%d9%b9%db%8c-%d9%81%d9%84%d9%b9%d8%b1-%da%88%d9%88%db%8c%d9%84%d9%be%d9%85%d9%86%d9%b9-%d9%85%db%8c%da%ba-%d9%b9%db%8c%da%a9%d9%86%d8%a7%d9%84%d9%88%d8%ac%db%8c-%da%a9%d8%a7\/","title":{"rendered":"\u0627\u06cc\u062c\u0646\u0679\u06cc \u0641\u0644\u0679\u0631 \u0688\u0648\u06cc\u0644\u067e\u0645\u0646\u0679 \u0645\u06cc\u06ba \u0679\u06cc\u06a9\u0646\u0627\u0644\u0648\u062c\u06cc \u06a9\u0627 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u06cc\u0633\u06d2 \u06a9\u0631\u06cc\u06ba: \u0688\u0648\u06cc\u0644\u067e\u0631\u0632 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0627\u06cc\u06a9 \u06c1\u06cc\u0646\u0688 \u0628\u06a9"},"content":{"rendered":"\n<div id=\"\">\n<p>AI \u06a9\u06cc \u0645\u062f\u062f \u0633\u06d2 \u062a\u0631\u0642\u06cc \u06a9\u06d2 \u0628\u0627\u0631\u06d2 \u0645\u06cc\u06ba \u0633\u0628 \u0633\u06d2 \u0628\u0691\u06cc \u063a\u0644\u0637 \u0641\u06c1\u0645\u06cc\u0648\u06ba \u0645\u06cc\u06ba \u0633\u06d2 \u0627\u06cc\u06a9 \u06cc\u06c1 \u06c1\u06d2 \u06a9\u06c1 AI \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u0646\u06d2 \u06a9\u0627 \u0645\u0637\u0644\u0628 \u06cc\u06c1 \u06c1\u06d2 \u06a9\u06c1 \u0627\u0646\u062c\u06cc\u0646\u0626\u0631\u0646\u06af \u06a9\u06d2 \u0633\u0627\u0644\u0648\u06ba \u06a9\u06d2 \u062a\u062c\u0631\u0628\u06d2 \u06a9\u0648 \u062a\u0631\u06a9 \u06a9\u0631 \u062f\u06cc\u0627 \u062c\u0627\u0626\u06d2\u06d4 \u06cc\u06c1 \u0633\u0686 \u0646\u06c1\u06cc\u06ba \u06c1\u06d2\u06d4<\/p>\n<p>\u0622\u067e \u062c\u0648 \u0622\u0631\u06a9\u06cc\u0679\u06cc\u06a9\u0686\u0631\u0644 \u067e\u06cc\u0679\u0631\u0646 \u0622\u067e \u0646\u06d2 \u0633\u06cc\u06a9\u06be\u06d2 \u06c1\u06cc\u06ba\u060c \u0622\u067e \u0646\u06d2 \u062c\u0648 \u063a\u0644\u0637\u06cc\u0627\u06ba \u06a9\u06cc \u06c1\u06cc\u06ba\u060c \u0622\u067e \u06a9\u06cc \u0679\u06cc\u0645 \u062c\u0646 \u0627\u0635\u0648\u0644\u0648\u06ba \u067e\u0631 \u0639\u0645\u0644 \u06a9\u0631\u062a\u06cc \u06c1\u06d2\u060c \u0627\u0648\u0631 \u0641\u0644\u0679\u0631 \u0627\u0646\u062c\u06cc\u0646\u0626\u0631 \u06a9\u06d2 \u0637\u0648\u0631 \u067e\u0631 \u0622\u067e \u0646\u06d2 \u062c\u0648 \u0645\u0639\u06cc\u0627\u0631\u0627\u062a \u062a\u06cc\u0627\u0631 \u06a9\u06cc\u06d2 \u06c1\u06cc\u06ba \u0648\u06c1 \u0644\u06d2 \u0633\u06a9\u062a\u06d2 \u06c1\u06cc\u06ba \u0627\u0648\u0631 \u0627\u06cc\u062c\u0646\u0679 \u06a9\u06cc \u0645\u06c1\u0627\u0631\u062a\u0648\u06ba \u06a9\u06d2 \u0630\u0631\u06cc\u0639\u06d2 \u0627\u067e\u0646\u06d2 AI \u06a9\u0648\u0688\u0646\u06af \u0627\u06cc\u062c\u0646\u0679\u0633 \u06a9\u0648 \u0633\u06a9\u06be\u0627 \u0633\u06a9\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4 \u0627\u0633 \u06a9\u0627 \u0645\u0637\u0644\u0628 \u06c1\u06d2 \u06a9\u06c1 \u0622\u067e \u06a9\u0648 \u062a\u062c\u0631\u0628\u06c1 \u0627\u0648\u0631 AI \u06a9\u06d2 \u062f\u0631\u0645\u06cc\u0627\u0646 \u0627\u0646\u062a\u062e\u0627\u0628 \u06a9\u0631\u0646\u06d2 \u06a9\u06cc \u0636\u0631\u0648\u0631\u062a \u0646\u06c1\u06cc\u06ba \u06c1\u06d2\u06d4 \u0622\u067e \u062f\u0648\u0646\u0648\u06ba \u06a9\u0648 \u0633\u0627\u062a\u06be \u0644\u06d2 \u0633\u06a9\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4<\/p>\n<p>\u062a\u0627\u06c1\u0645\u060c \u062a\u0642\u0631\u06cc\u0628\u0627\u064b \u062a\u0645\u0627\u0645 \u0641\u0644\u0679\u0631 \u0688\u0648\u06cc\u0644\u067e\u0631\u0632 \u06a9\u0648 \u067e\u06c1\u0644\u06cc \u0628\u0627\u0631 \u06a9\u0633\u06cc \u062d\u0642\u06cc\u0642\u06cc \u067e\u0631\u0648\u062c\u06cc\u06a9\u0679 \u0645\u06cc\u06ba AI \u06a9\u0648\u0688\u0646\u06af \u0627\u06cc\u062c\u0646\u0679\u0633 \u06a9\u0627 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u062a\u06d2 \u06c1\u0648\u0626\u06d2 \u06a9\u0686\u06be \u0645\u0627\u06cc\u0648\u0633\u06cc \u06a9\u0627 \u0633\u0627\u0645\u0646\u0627 \u06a9\u0631\u0646\u0627 \u067e\u0691\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<p>\u0627\u06cc\u062c\u0646\u0679 \u0633\u06d2 \u067e\u0631\u0648\u0641\u0627\u0626\u0644 \u0627\u0633\u06a9\u0631\u06cc\u0646 \u06a9\u0648 \u067e\u064f\u0631 \u06a9\u0631\u0646\u06d2 \u06a9\u0648 \u06a9\u06c1\u06cc\u06ba\u06d4 \u06cc\u06c1 \u0627\u06cc\u0633\u06cc \u0686\u06cc\u0632 \u067e\u06cc\u062f\u0627 \u06a9\u0631\u062a\u0627 \u06c1\u06d2 \u062c\u0648 \u06a9\u0627\u0645 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4 \u0644\u06cc\u06a9\u0646 \u0635\u0627\u0641 \u0627\u0648\u0631 \u062f\u0648\u0628\u0627\u0631\u06c1 \u0642\u0627\u0628\u0644 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0648\u0688 \u0628\u0646\u0627\u0646\u06d2 \u06a9\u06d2 \u0628\u062c\u0627\u0626\u06d2\u060c <code>ProfileCard<\/code> \u0622\u067e \u06a9\u0627 \u0648\u06cc\u062c\u06cc\u0679 <code>widgets\/<\/code> \u0641\u0648\u0644\u0688\u0631 \u0645\u06cc\u06ba \u062f\u0631\u062c \u0630\u06cc\u0644 \u06a9\u0648 \u0644\u06a9\u06be\u06cc\u06ba: <code>_buildProfileCard()<\/code> \u0627\u0633\u06a9\u0631\u06cc\u0646 \u0641\u0627\u0626\u0644 \u06a9\u06d2 \u0627\u0646\u062f\u0631 \u0686\u06be\u067e\u0627 \u06c1\u0648\u0627 \u0646\u062c\u06cc \u0637\u0631\u06cc\u0642\u06c1\u06d4<\/p>\n<p>\u062a\u0646\u06c1\u0627\u0626\u06cc \u0645\u06cc\u06ba \u062e\u062f\u0634\u0627\u062a \u0631\u06a9\u06be\u0646\u06d2 \u06a9\u06d2 \u0628\u062c\u0627\u0626\u06d2\u061b <code>StatefulWidget<\/code> \u0627\u062d\u062a\u06cc\u0627\u0637 \u0633\u06d2 \u0688\u06cc\u0632\u0627\u0626\u0646 \u06a9\u0631\u062f\u06c1 \u0641\u0627\u0626\u0644 \u0688\u06be\u0627\u0646\u0686\u06d2 \u0645\u06cc\u06ba\u060c \u0645\u062a\u0648\u0642\u0639 \u062d\u0627\u0644\u062a \u06a9\u0648 \u0641\u0627\u0626\u0644 \u06a9\u06d2 \u0646\u06cc\u0686\u06d2 \u0634\u0627\u0645\u0644 \u06a9\u06cc\u0627 \u062c\u0627\u062a\u0627 \u06c1\u06d2 \u062c\u0633 \u0645\u06cc\u06ba \u067e\u06c1\u0644\u06d2 \u0633\u06d2 \u06c1\u06cc 10 \u06a9\u0644\u0627\u0633\u0632 \u06c1\u06cc\u06ba\u06d4<\/p>\n<p>\u0688\u06cc\u0679\u0627 \u0645\u0627\u0688\u0644 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u062a\u0627 \u06c1\u06d2: <code>Map<string dynamic=\"\"\/><\/code> \u0622\u067e \u06a9\u06d2 \u0628\u062c\u0627\u0626\u06d2 <code>freezed<\/code>&#8211; \u062a\u0634\u0631\u06cc\u062d \u0634\u062f\u06c1 \u0627\u0633\u0628\u0627\u0642\u06d4 \u062f\u0631\u0622\u0645\u062f \u0628\u06cc\u0631\u0644 \u0641\u0627\u0626\u0644 \u06a9\u0648 \u0686\u06be\u0648\u0691 \u062f\u06d2 \u06af\u0627 \u0627\u0648\u0631 \u0628\u0631\u0627\u06c1 \u0631\u0627\u0633\u062a \u0627\u0646\u062f\u0631\u0648\u0646\u06cc \u067e\u06cc\u06a9\u06cc\u062c \u06a9\u06d2 \u0631\u0627\u0633\u062a\u06d2 \u06a9\u0648 \u0645\u0627\u0631\u06d2 \u06af\u0627\u06d4 \u062a\u06be\u06cc\u0645 \u0688\u06cc\u0632\u0627\u0626\u0646 \u0679\u0648\u06a9\u0646 \u06a9\u0648 \u0646\u0638\u0631 \u0627\u0646\u062f\u0627\u0632 \u06a9\u0631\u062a\u06cc \u06c1\u06d2 \u0627\u0648\u0631 \u06c1\u0627\u0631\u0688 \u06a9\u0648\u0688 \u0634\u062f\u06c1 \u06c1\u06cc\u06a9\u0633\u0627\u0688\u06cc\u0633\u06cc\u0645\u0644 \u0648\u06cc\u0644\u06cc\u0648 \u06a9\u0627 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u062a\u06cc \u06c1\u06d2\u06d4 \u062e\u0631\u0627\u0628\u06cc \u06a9\u0648 \u0633\u0646\u0628\u06be\u0627\u0644\u0646\u06d2 \u0645\u06cc\u06ba \u0627\u0646 \u067e\u0679 \u06a9\u06cc \u062e\u0631\u0627\u0628\u06cc \u06a9\u06d2 \u062f\u0631\u062c\u06c1 \u0628\u0646\u062f\u06cc \u06a9\u06d2 \u0628\u062c\u0627\u0626\u06d2 \u062e\u0627\u0645 \u062a\u0627\u0631\u0648\u06ba \u06a9\u0627 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06c1\u0648\u062a\u0627 \u06c1\u06d2\u06d4 \u062c\u0628 \u06a9\u0648\u0626\u06cc \u0679\u06cc\u0645 \u0628\u0644\u0627\u06a9 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u062a\u06cc \u06c1\u06d2 \u062a\u0648 \u0631\u06cc\u0627\u0633\u062a\u06cc \u0627\u0646\u062a\u0638\u0627\u0645 \u0641\u0631\u0627\u06c1\u0645 \u06a9\u0646\u0646\u062f\u06c1 \u06c1\u0648\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<p>\u0627\u0633 \u0645\u06cc\u06ba \u0633\u06d2 \u06a9\u0648\u0626\u06cc \u0628\u06be\u06cc \u0645\u0637\u0644\u0642 \u0645\u0639\u0646\u06cc \u0645\u06cc\u06ba \u063a\u0644\u0637 \u0646\u06c1\u06cc\u06ba \u06c1\u06d2\u06d4 \u0627\u06cc\u062c\u0646\u0679 \u0646\u06d2 \u063a\u0644\u0637\u06cc \u0646\u06c1\u06cc\u06ba \u06a9\u06cc \u06a9\u06cc\u0648\u0646\u06a9\u06c1 \u0648\u06c1 \u0688\u0627\u0631\u0679 \u0645\u06cc\u06ba \u0627\u0686\u06be\u0627 \u0646\u06c1\u06cc\u06ba \u062a\u06be\u0627\u06d4 \u063a\u0644\u0637\u06cc\u0627\u06ba \u0627\u0633 \u0644\u06cc\u06d2 \u06c1\u0648\u0626\u06cc\u06ba \u06a9\u06cc\u0648\u0646\u06a9\u06c1 \u0679\u06cc\u0645 \u0646\u06c1\u06cc\u06ba \u062c\u0627\u0646\u062a\u06cc \u062a\u06be\u06cc \u06a9\u06c1 \u0641\u0644\u0679\u0631 \u06a9\u0648\u0688 \u06a9\u06cc\u0633\u06d2 \u0644\u06a9\u06be\u0646\u0627 \u06c1\u06d2\u06d4<\/p>\n<p>\u06cc\u06c1 \u0648\u06c1 \u0645\u0633\u0626\u0644\u06c1 \u06c1\u06d2 \u062c\u0633\u06d2 \u062d\u0644 \u06a9\u0631\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0627\u06cc\u062c\u0646\u0679 \u06a9\u06cc \u0645\u06c1\u0627\u0631\u062a\u06cc\u06ba \u067e\u06cc\u062f\u0627 \u06a9\u06cc \u06af\u0626\u06cc \u062a\u06be\u06cc\u06ba\u06d4<\/p>\n<p>\u0627\u06cc\u062c\u0646\u0679 \u06a9\u06cc \u0645\u06c1\u0627\u0631\u062a\u06cc\u06ba \u0633\u0679\u0631\u06a9\u0686\u0631\u0688 \u0645\u0627\u0631\u06a9 \u0688\u0627\u0624\u0646 \u0641\u0627\u0626\u0644\u06cc\u06ba \u06c1\u06cc\u06ba \u062c\u0648 \u0627\u06cc\u06a9 AI \u0627\u06cc\u062c\u0646\u0679 \u06a9\u0648 \u0646\u06c1 \u0635\u0631\u0641 &quot;\u06a9\u06cc\u0627&#8221; \u0628\u0644\u06a9\u06c1 \u06a9\u0633\u06cc \u0645\u062e\u0635\u0648\u0635 \u06a9\u0627\u0645 \u06a9\u0627 &quot;\u06a9\u06cc\u0633\u0627&#8221; \u0628\u06be\u06cc \u0633\u06a9\u06be\u0627\u062a\u06cc \u06c1\u06cc\u06ba\u06d4 \u0627\u06cc\u062c\u0646\u0679 \u06a9\u0648\u0688 \u062a\u06cc\u0627\u0631 \u06a9\u0631\u0646\u06d2 \u0633\u06d2 \u067e\u06c1\u0644\u06d2 \u0679\u06cc\u06a9\u0646\u0627\u0644\u0648\u062c\u06cc \u06a9\u0627 \u0627\u0646\u062a\u062e\u0627\u0628 \u0627\u0633 \u0628\u0627\u062a \u06a9\u0648 \u06cc\u0642\u06cc\u0646\u06cc \u0628\u0646\u0627\u062a\u0627 \u06c1\u06d2 \u06a9\u06c1 \u0679\u06cc\u0645 \u06a9\u06d2 \u06a9\u0646\u0648\u0646\u0634\u0646\u0632\u060c \u0622\u0631\u06a9\u06cc\u0679\u06cc\u06a9\u0686\u0631\u0644 \u067e\u06cc\u0679\u0631\u0646\u060c \u0641\u0627\u0626\u0644 \u0622\u0631\u06af\u0646\u0627\u0626\u0632\u06cc\u0634\u0646 \u06a9\u0646\u0648\u0646\u0634\u0646\u060c \u0646\u0627\u0645 \u06a9\u06d2 \u0645\u0639\u06cc\u0627\u0631\u0627\u062a\u060c \u0627\u0648\u0631 \u0645\u0639\u06cc\u0627\u0631 \u06a9\u06cc \u062a\u0648\u0642\u0639\u0627\u062a \u0627\u067e\u0646\u06cc \u062c\u06af\u06c1 \u067e\u0631 \u06c1\u06cc\u06ba\u06d4 \u0646\u062a\u06cc\u062c\u06c1 \u067e\u0631\u0648\u062c\u06cc\u06a9\u0679 \u0633\u06d2 \u062a\u0639\u0644\u0642 \u0631\u06a9\u06be\u0646\u06d2 \u0648\u0627\u0644\u0627 \u06a9\u0648\u0688 \u06c1\u06d2\u06d4<\/p>\n<p>\u0641\u0644\u0679\u0631 \u0679\u06cc\u0645 \u062f\u0631\u062c \u0630\u06cc\u0644 \u0633\u0631\u06a9\u0627\u0631\u06cc \u062a\u06a9\u0646\u06cc\u06a9\u06cc \u0630\u062e\u06cc\u0631\u0648\u06ba \u06a9\u0648 \u0628\u0631\u0642\u0631\u0627\u0631 \u0631\u06a9\u06be\u062a\u06cc \u06c1\u06d2: <code>github.com\/flutter\/agent-plugins<\/code>\u0688\u0627\u0631\u0679 \u0679\u06cc\u0645 \u0645\u0646\u062f\u0631\u062c\u06c1 \u0630\u06cc\u0644 \u062a\u06a9\u0645\u06cc\u0644\u06cc \u0633\u06cc\u0679\u0648\u06ba \u06a9\u0648 \u0628\u0631\u0642\u0631\u0627\u0631 \u0631\u06a9\u06be\u062a\u06cc \u06c1\u06d2: <code>github.com\/dart-lang\/skills<\/code>. \u0627\u0633 \u0645\u06cc\u06ba \u0631\u06cc\u0633\u067e\u0627\u0646\u0633\u06cc\u0648 \u0644\u06d2 \u0622\u0624\u0679\u060c \u0688\u06cc\u06a9\u0644\u06cc\u0631\u0679\u06cc\u0648 \u0631\u0648\u0679\u0646\u06af\u060c JSON \u0633\u06cc\u0631\u06cc\u0644\u0627\u0626\u0632\u06cc\u0634\u0646\u060c \u06cc\u0648\u0646\u0679 \u0679\u06cc\u0633\u0679\u0646\u06af\u060c \u0633\u0679\u06cc\u0679\u06a9 \u0627\u06cc\u0646\u0627\u0644\u06cc\u0633\u0633\u060c \u067e\u06cc\u06a9\u06cc\u062c \u067e\u0631 \u0627\u0646\u062d\u0635\u0627\u0631 \u0631\u06cc\u0632\u0648\u0644\u0648\u0634\u0646\u060c \u067e\u06cc\u0679\u0631\u0646 \u0645\u06cc\u0686\u0646\u06af\u060c \u0627\u0648\u0631 \u0628\u06c1\u062a \u06a9\u0686\u06be \u0634\u0627\u0645\u0644 \u06c1\u06d2\u06d4<\/p>\n<p>\u0644\u06cc\u06a9\u0646 \u0633\u0628 \u0633\u06d2 \u0632\u06cc\u0627\u062f\u06c1 \u0637\u0627\u0642\u062a\u0648\u0631 \u06c1\u0646\u0631 \u0648\u06c1 \u06c1\u06cc\u06ba \u062c\u0648 \u0622\u067e \u06a9\u06cc \u0627\u067e\u0646\u06cc \u062a\u062d\u0631\u06cc\u0631\u060c \u0628\u0637\u0648\u0631 \u0627\u0646\u062c\u06cc\u0646\u0626\u0631 \u0622\u067e \u06a9\u06d2 \u0645\u062e\u0635\u0648\u0635 \u062a\u062c\u0631\u0628\u06d2\u060c \u0622\u067e \u06a9\u06cc \u0679\u06cc\u0645 \u06a9\u06cc \u0645\u062e\u0635\u0648\u0635 \u063a\u0644\u0637\u06cc\u0627\u06ba\u060c \u0627\u0648\u0631 \u0622\u067e \u06a9\u06d2 \u067e\u0631\u0648\u062c\u06cc\u06a9\u0679 \u06a9\u06d2 \u0645\u062e\u0635\u0648\u0635 \u0646\u0645\u0648\u0646\u0648\u06ba \u06a9\u0648 \u0627\u0646\u06a9\u0648\u0688 \u06a9\u0631\u062a\u06cc \u06c1\u06cc\u06ba\u06d4 \u0622\u067e \u06a9\u06d2 \u0627\u067e\u0646\u06d2 \u067e\u0631\u0648\u0688\u06a9\u0634\u0646 \u06a9\u06d2 \u062a\u062c\u0631\u0628\u06d2 \u0633\u06d2 \u0644\u06a9\u06be\u06cc \u06af\u0626\u06cc \u062a\u06a9\u0646\u06cc\u06a9\u06cc\u06ba 10 \u0639\u0627\u0645 \u062a\u06a9\u0646\u06cc\u06a9\u0648\u06ba \u06a9\u06d2 \u0642\u0627\u0628\u0644 \u06c1\u06cc\u06ba \u06a9\u06cc\u0648\u0646\u06a9\u06c1 \u0648\u06c1 \u0627\u0646 \u062f\u0631\u0633\u062a \u063a\u0644\u0637\u06cc\u0648\u06ba \u06a9\u0648 \u0631\u0648\u06a9\u062a\u06cc \u06c1\u06cc\u06ba \u062c\u0648 \u0622\u067e \u06a9\u06cc \u0679\u06cc\u0645 \u0627\u0635\u0644 \u0645\u06cc\u06ba \u0627\u0646 \u06a9\u06d2 \u0628\u0631\u0642\u0631\u0627\u0631 \u0631\u06a9\u06be\u0646\u06d2 \u0648\u0627\u0644\u06d2 \u06a9\u0648\u0688 \u0628\u06cc\u0633\u0632 \u0645\u06cc\u06ba \u06a9\u0631\u062a\u06cc \u06c1\u06d2\u06d4<\/p>\n<p>\u0679\u06cc\u06a9\u0646\u0627\u0644\u0648\u062c\u06cc \u062a\u0645\u0627\u0645 \u0628\u0691\u06d2 AI \u06a9\u0648\u0688\u0646\u06af \u0627\u06cc\u062c\u0646\u0679\u0633 \u06a9\u06d2 \u0633\u0627\u062a\u06be \u06a9\u0627\u0645 \u06a9\u0631\u062a\u06cc \u06c1\u06d2\u06d4 \u0686\u0627\u06c1\u06d2 \u0622\u067e \u06a9\u06cc \u0679\u06cc\u0645 Claude Code\u060c Antigravity\u060c OpenAI Codex\u060c Cursor\u060c GitHub Copilot CLI\u060c \u06cc\u0627 \u06a9\u0648\u0626\u06cc \u0627\u0648\u0631 \u06c1\u0645 \u0622\u06c1\u0646\u06af \u0627\u06cc\u062c\u0646\u0679 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u062a\u06cc \u06c1\u0648\u060c \u0679\u06cc\u06a9\u0646\u0627\u0644\u0648\u062c\u06cc \u0639\u0627\u0644\u0645\u06af\u06cc\u0631 \u0645\u0639\u06cc\u0627\u0631\u0627\u062a \u06a9\u06cc \u067e\u06cc\u0631\u0648\u06cc \u06a9\u0631\u062a\u06cc \u06c1\u06d2\u06d4 \u0627\u06cc\u06a9 \u0628\u0627\u0631 \u0627\u06cc\u06a9 \u0645\u06c1\u0627\u0631\u062a \u0644\u06a9\u06be\u06cc\u06ba \u0627\u0648\u0631 \u06cc\u06c1 \u06a9\u06c1\u06cc\u06ba \u0628\u06be\u06cc \u06a9\u0627\u0645 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<p>\u0627\u0633 \u06c1\u06cc\u0646\u0688 \u0628\u06a9 \u0645\u06cc\u06ba \u06c1\u0631 \u0686\u06cc\u0632 \u06a9\u0627 \u0627\u062d\u0627\u0637\u06c1 \u06a9\u06cc\u0627 \u06af\u06cc\u0627 \u06c1\u06d2: \u0679\u06cc\u06a9\u0646\u0627\u0644\u0648\u062c\u06cc\u0632 \u06a9\u06cc\u0627 \u06c1\u06cc\u06ba\u060c \u0648\u06c1 \u0627\u0646\u062f\u0631\u0648\u0646\u06cc \u0637\u0648\u0631 \u067e\u0631 \u06a9\u06cc\u0633\u06d2 \u06a9\u0627\u0645 \u06a9\u0631\u062a\u06cc \u06c1\u06cc\u06ba\u060c \u0622\u0641\u06cc\u0634\u0644 \u0641\u0644\u0679\u0631 \u0627\u0648\u0631 \u0688\u0627\u0631\u0679 \u0679\u06cc\u06a9\u0646\u0627\u0644\u0648\u062c\u06cc\u0632 \u06a9\u0648 \u06a9\u06cc\u0633\u06d2 \u0627\u0646\u0633\u0679\u0627\u0644 \u06a9\u06cc\u0627 \u062c\u0627\u0626\u06d2\u060c \u06c1\u0631 \u0627\u06cc\u06a9 \u0627\u06c1\u0645 \u0627\u06cc\u062c\u0646\u0679 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0679\u06cc\u06a9\u0646\u0627\u0644\u0648\u062c\u06cc\u0632 \u06a9\u0648 \u06a9\u06cc\u0633\u06d2 \u062a\u0631\u062a\u06cc\u0628 \u062f\u06cc\u0627 \u062c\u0627\u0626\u06d2\u060c \u0645\u0648\u062c\u0648\u062f\u06c1 \u0679\u06cc\u06a9\u0646\u0627\u0644\u0648\u062c\u06cc\u0632 \u06a9\u0648 \u06af\u06c1\u0631\u0627\u0626\u06cc \u0633\u06d2 \u06a9\u06cc\u0633\u06d2 \u067e\u0691\u06be\u06cc\u06ba \u0627\u0648\u0631 \u0633\u0645\u062c\u06be\u06cc\u06ba\u060c \u0627\u0648\u0631 \u0633\u0628 \u0633\u06d2 \u0627\u06c1\u0645 \u0628\u0627\u062a \u06cc\u06c1 \u06c1\u06d2 \u06a9\u06c1 \u0622\u067e \u06a9\u06cc \u0627\u067e\u0646\u06cc \u0679\u06cc\u06a9\u0646\u0627\u0644\u0648\u062c\u06cc\u0632 \u06a9\u06cc\u0633\u06d2 \u0644\u06a9\u06be\u06cc\u06ba \u062c\u0648 \u0622\u067e \u06a9\u06d2 \u0645\u062e\u0635\u0648\u0635 \u06a9\u0648\u0688 \u06a9\u0648 \u0628\u06c1\u062a\u0631 \u0628\u0646\u0627\u062a\u06cc \u06c1\u06cc\u06ba\u06d4<\/p>\n<p>\u06c1\u0645 \u0636\u0631\u0648\u0631\u06cc \u0645\u06c1\u0627\u0631\u062a\u0648\u06ba \u06a9\u0627 \u0628\u06be\u06cc \u0627\u062d\u0627\u0637\u06c1 \u06a9\u0631\u062a\u06d2 \u06c1\u06cc\u06ba \u062c\u0648 \u06c1\u0631 \u0641\u0644\u0679\u0631 \u0679\u06cc\u0645 \u06a9\u06d2 \u067e\u0627\u0633 \u06c1\u0648\u0646\u0627 \u0636\u0631\u0648\u0631\u06cc \u06c1\u06d2\u060c \u0688\u0627\u0631\u0679 \u06a9\u06cc \u0645\u06c1\u0627\u0631\u062a\u06cc\u06ba \u062c\u0646 \u0633\u06d2 \u062a\u0645\u0627\u0645 \u0688\u0648\u06cc\u0644\u067e\u0631\u0632 \u0645\u0633\u062a\u0641\u06cc\u062f \u06c1\u0648\u062a\u06d2 \u06c1\u06cc\u06ba\u060c \u0627\u0648\u0631 \u0627\u06cc\u0633\u06d2 \u062c\u062f\u06cc\u062f \u0646\u0645\u0648\u0646\u0648\u06ba \u06a9\u0627 \u0628\u06be\u06cc \u0627\u062d\u0627\u0637\u06c1 \u06a9\u0631\u062a\u06d2 \u06c1\u06cc\u06ba \u062c\u0648 \u0648\u0642\u062a \u06a9\u06d2 \u0633\u0627\u062a\u06be \u0633\u0627\u062a\u06be \u0622\u067e \u06a9\u06cc \u0645\u06c1\u0627\u0631\u062a\u0648\u06ba \u06a9\u0648 \u062c\u0648\u0691 \u062f\u06cc\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4<\/p>\n<p>\u0633\u0628 \u06a9\u06d2 \u0628\u0639\u062f\u060c \u0622\u067e \u06a9\u0648 \u0679\u06cc\u06a9\u0646\u0627\u0644\u0648\u062c\u06cc \u06a9\u0627 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u0646\u06d2 \u06a9\u0627 \u0637\u0631\u06cc\u0642\u06c1 \u0645\u0639\u0644\u0648\u0645 \u0646\u06c1\u06cc\u06ba \u06c1\u0648\u06af\u0627. \u0622\u067e \u0627\u0633\u06cc \u0646\u06cc\u062a \u0633\u06d2 \u06a9\u0648\u0688 \u0644\u06a9\u06be\u06cc\u06ba \u06af\u06d2 \u062c\u0633 \u0646\u06cc\u062a \u0633\u06d2 \u0622\u067e \u0635\u0627\u0641 \u0641\u0644\u0679\u0631 \u06a9\u0648\u0688 \u0644\u06a9\u06be\u062a\u06d2 \u06c1\u06cc\u06ba\u060c \u0627\u0648\u0631 \u0622\u067e \u0633\u0645\u062c\u06be \u062c\u0627\u0626\u06cc\u06ba \u06af\u06d2 \u06a9\u06c1 \u0627\u06cc\u0633\u0627 \u06a9\u0631\u0646\u0627 \u0622\u067e \u06a9\u06cc \u0679\u06cc\u0645 \u06a9\u06d2 \u0627\u0646\u062c\u06cc\u0646\u0626\u0631\u0646\u06af \u06a9\u06d2 \u0645\u0639\u06cc\u0627\u0631 \u0645\u06cc\u06ba \u06a9\u06cc\u0627 \u062c\u0627\u0646\u06d2 \u0648\u0627\u0644\u0627 \u0633\u0628 \u0633\u06d2 \u0628\u0691\u0627 \u0641\u0627\u0626\u062f\u06c1 \u0645\u0646\u062f \u0633\u0631\u0645\u0627\u06cc\u06c1 \u06a9\u0627\u0631\u06cc \u06a9\u06cc\u0648\u06ba \u06c1\u06d2\u06d4<\/p>\n<h2 id=\"heading-table-of-contents\">\u0627\u0646\u0688\u06cc\u06a9\u0633<\/h2>\n<h2 id=\"heading-prerequisites\">\u0634\u0631\u0637\u06cc\u06ba<\/h2>\n<p>\u0627\u0633 \u06af\u0627\u0626\u06cc\u0688 \u06a9\u06d2 \u0633\u0627\u062a\u06be \u0622\u06af\u06d2 \u0628\u0691\u06be\u0646\u06d2 \u0633\u06d2 \u067e\u06c1\u0644\u06d2\u060c \u0622\u067e \u06a9\u0648 \u062f\u0631\u062c \u0630\u06cc\u0644 \u06a9\u06cc \u0636\u0631\u0648\u0631\u062a \u06c1\u0648\u06af\u06cc:<\/p>\n<h3 id=\"heading-1-flutter-and-dart-proficiency\">1. \u067e\u06be\u0691\u067e\u06be\u0691\u0627\u0646\u0627 \u0627\u0648\u0631 \u0688\u0627\u0631\u0679 \u06a9\u06cc \u0645\u06c1\u0627\u0631\u062a<\/h3>\n<p>\u0622\u067e \u06a9\u0648 \u0645\u0644\u0679\u06cc \u0627\u0633\u06a9\u0631\u06cc\u0646 \u0641\u0644\u0679\u0631 \u0627\u06cc\u067e\u0633 \u0628\u0646\u0627\u0646\u06d2\u060c \u0631\u06cc\u0627\u0633\u062a\u06cc \u0646\u0638\u0645 \u0648 \u0646\u0633\u0642 \u06a9\u06d2 \u0646\u0645\u0648\u0646\u0648\u06ba \u06a9\u0627 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u062a\u06d2 \u06c1\u0648\u0626\u06d2\u060c \u0627\u0648\u0631 \u06a9\u0644\u06cc\u0646 \u0622\u0631\u06a9\u06cc\u0679\u06cc\u06a9\u0686\u0631 \u06a9\u06d2 \u0628\u0646\u06cc\u0627\u062f\u06cc \u0627\u0635\u0648\u0644\u0648\u06ba \u067e\u0631 \u0639\u0645\u0644 \u06a9\u0631\u0646\u06d2 \u0645\u06cc\u06ba \u0645\u0627\u06c1\u0631 \u06c1\u0648\u0646\u0627 \u0686\u0627\u06c1\u06cc\u06d2\u06d4 \u0622\u067e \u06a9\u0648 \u0633\u06cc\u0646\u0626\u0631 \u0627\u0646\u062c\u06cc\u0646\u0626\u0631 \u0628\u0646\u0646\u06d2 \u06a9\u06cc \u0636\u0631\u0648\u0631\u062a \u0646\u06c1\u06cc\u06ba \u06c1\u06d2\u060c \u0644\u06cc\u06a9\u0646 \u0627\u0633 \u06af\u0627\u0626\u06cc\u0688 \u0645\u06cc\u06ba \u0645\u0648\u062c\u0648\u062f \u062a\u06a9\u0646\u06cc\u06a9\u06cc \u0645\u062b\u0627\u0644\u0648\u06ba \u0633\u06d2 \u0627\u0646\u062f\u0627\u0632\u06c1 \u06c1\u0648\u062a\u0627 \u06c1\u06d2 \u06a9\u06c1 \u0622\u067e \u062c\u0627\u0646\u062a\u06d2 \u06c1\u06cc\u06ba \u06a9\u06c1 \u062a\u06a9\u0646\u06cc\u06a9\u06cc \u0645\u06c1\u0627\u0631\u062a\u06cc\u06ba \u06a9\u06cc\u0627 \u06c1\u06cc\u06ba\u06d4 <code>StatefulWidget<\/code> \u0631\u06cc\u067e\u0648\u0632\u0679\u0631\u06cc \u067e\u06cc\u0679\u0631\u0646 \u06a9\u06cc\u0633\u0627 \u0644\u06af\u062a\u0627 \u06c1\u06d2\u060c \u0645\u06c1\u0631 \u0628\u0646\u062f \u06a9\u0644\u0627\u0633\u0632 \u06a9\u06cc\u0648\u06ba \u0627\u06c1\u0645 \u06c1\u06cc\u06ba\u060c \u0627\u0648\u0631 <code>json_serializable<\/code> \u0628\u0646\u0627\u0626\u06cc\u06ba\u06d4<\/p>\n<h3 id=\"heading-2-a-working-ai-coding-agent\">2. \u0627\u06d2 \u0622\u0626\u06cc \u06a9\u0648\u0688\u0646\u06af \u0627\u06cc\u062c\u0646\u0679 \u06a9\u0627\u0631\u0631\u0648\u0627\u0626\u06cc \u0645\u06cc\u06ba<\/h3>\n<p>\u06cc\u06c1 \u0679\u06cc\u06a9\u0646\u0627\u0644\u0648\u062c\u06cc \u0627\u06cc\u062c\u0646\u0679\u0648\u06ba \u06a9\u06d2 \u0633\u0627\u062a\u06be \u06a9\u0627\u0645 \u06a9\u0631\u062a\u06cc \u06c1\u06d2 \u062c\u0633 \u0645\u06cc\u06ba \u06a9\u0644\u0627\u0688 \u06a9\u0648\u0688\u060c \u0627\u06cc\u0646\u0679\u06cc \u06af\u0631\u06cc\u0648\u06cc\u0679\u06cc\u060c \u0627\u0648\u067e\u0646 \u0627\u06d2 \u0622\u0626\u06cc \u06a9\u0648\u0688\u06cc\u06a9\u0633\u060c \u06af\u0679 \u06c1\u0628 \u06a9\u0648\u067e\u0627\u0626\u0644\u0679 \u0633\u06cc \u0627\u06cc\u0644 \u0622\u0626\u06cc\u060c \u06a9\u0631\u0633\u0631\u060c \u0627\u0648\u0631 \u0628\u06c1\u062a \u06a9\u0686\u06be \u0634\u0627\u0645\u0644 \u06c1\u06d2\u06d4 \u0627\u0646 \u0645\u06cc\u06ba \u0633\u06d2 \u06a9\u0645 \u0627\u0632 \u06a9\u0645 \u0627\u06cc\u06a9 \u0627\u0646\u0633\u0679\u0627\u0644 \u0627\u0648\u0631 \u06a9\u0627\u0645 \u06a9\u0631\u0646\u0627 \u0636\u0631\u0648\u0631\u06cc \u06c1\u06d2\u06d4 \u06cc\u06c1 \u06af\u0627\u0626\u06cc\u0688 \u062a\u0645\u0627\u0645 \u0627\u06cc\u062c\u0646\u0679\u0648\u06ba \u06a9\u06d2 \u0644\u06cc\u06d2 \u0645\u062e\u0635\u0648\u0635 \u062a\u0631\u062a\u06cc\u0628\u0627\u062a \u06a9\u0627 \u0627\u062d\u0627\u0637\u06c1 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<h3 id=\"heading-3-nodejs-installed\">3. Node.js \u0627\u0646\u0633\u0679\u0627\u0644 \u06a9\u0631\u06cc\u06ba\u06d4<\/h3>\n<p>\u06a9\u06c1 <code>skills<\/code> \u0633\u0631\u06a9\u0627\u0631\u06cc \u0645\u06c1\u0627\u0631\u062a\u0648\u06ba \u06a9\u0648 \u0627\u0646\u0633\u0679\u0627\u0644 \u06a9\u0631\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06c1\u0648\u0646\u06d2 \u0648\u0627\u0644\u06d2 CLI \u0679\u0648\u0644\u0632 npm \u06a9\u06d2 \u0630\u0631\u06cc\u0639\u06d2 \u062a\u0642\u0633\u06cc\u0645 \u06a9\u06cc\u06d2 \u062c\u0627\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4 \u0686\u0644\u0627\u0626\u06cc\u06ba <code>node -v<\/code> \u0686\u06cc\u06a9 \u06a9\u0631\u06cc\u06ba\u06d4 \u0627\u06af\u0631 \u0622\u067e \u06a9\u06d2 \u067e\u0627\u0633 Node.js \u0627\u0646\u0633\u0679\u0627\u0644 \u0646\u06c1\u06cc\u06ba \u06c1\u06d2 \u062a\u0648 \u0627\u0633\u06d2 nodejs.org \u0633\u06d2 \u0688\u0627\u0624\u0646 \u0644\u0648\u0688 \u06a9\u0631\u06cc\u06ba\u06d4<\/p>\n<h3 id=\"heading-4-a-flutter-or-dart-project-to-work-with\">4. \u0641\u0644\u0679\u0631 \u06cc\u0627 \u0688\u0627\u0631\u0679 \u067e\u0631\u0648\u062c\u06cc\u06a9\u0679 \u062c\u0633 \u067e\u0631 \u06a9\u0627\u0645 \u06a9\u0631\u0646\u0627 \u06c1\u06d2\u06d4<\/h3>\n<p>\u0627\u0633 \u06af\u0627\u0626\u06cc\u0688 \u0645\u06cc\u06ba \u062f\u06cc \u06af\u0626\u06cc \u0645\u062b\u0627\u0644\u06cc\u06ba \u0627\u0648\u0631 \u062a\u06a9\u0646\u06cc\u06a9\u06cc \u0645\u0634\u0642\u06cc\u06ba \u0628\u06c1\u062a\u0631\u06cc\u0646 \u06a9\u0627\u0645 \u06a9\u0631\u062a\u06cc \u06c1\u06cc\u06ba \u062c\u0628 \u062e\u0644\u0627\u0635\u06c1 \u06a9\u06cc \u067e\u06cc\u0631\u0648\u06cc \u06a9\u0631\u0646\u06d2 \u06a9\u06d2 \u0628\u062c\u0627\u0626\u06d2 \u062d\u0642\u06cc\u0642\u06cc \u0645\u0646\u0635\u0648\u0628\u0648\u06ba \u067e\u0631 \u0644\u0627\u06af\u0648 \u06a9\u06cc\u0627 \u062c\u0627\u0626\u06d2\u06d4<\/p>\n<h3 id=\"heading-5-basic-markdown-familiarity\">5. \u0628\u0646\u06cc\u0627\u062f\u06cc \u0645\u0627\u0631\u06a9 \u0688\u0627\u0624\u0646 \u0648\u0627\u0642\u0641\u06cc\u062a<\/h3>\n<p>\u0645\u06c1\u0627\u0631\u062a\u06cc\u06ba \u0645\u0627\u0631\u06a9 \u0688\u0627\u0624\u0646 \u0645\u06cc\u06ba \u0644\u06a9\u06be\u06cc \u062c\u0627\u062a\u06cc \u06c1\u06cc\u06ba\u06d4 \u0622\u067e \u06a9\u0648 \u06cc\u06c1 \u062c\u0627\u0646\u0646\u0627 \u06c1\u0648\u06af\u0627 \u06a9\u06c1 \u0639\u0646\u0648\u0627\u0646 \u06a9\u06cc\u0627 \u06c1\u06d2 (<code>##<\/code>)\u060c \u06a9\u0648\u0688 \u0628\u0644\u0627\u06a9 \u06a9\u06cc \u0638\u0627\u06c1\u0631\u06cc \u0634\u06a9\u0644 (\u0679\u0631\u067e\u0644 \u0628\u06cc\u06a9 \u0679\u0650\u06a9\u0633)\u060c \u0627\u0648\u0631 YAML \u0641\u0631\u0646\u0679 \u0628\u0644\u0627\u06a9 \u06a9\u06cc \u0638\u0627\u06c1\u0631\u06cc \u0634\u06a9\u0644 ( <code>---<\/code> \u0688\u06be\u06cc\u0631 \u06a9\u06d2 \u0633\u0628 \u0633\u06d2 \u0627\u0648\u067e\u0631 \u0628\u0644\u0627\u06a9\u0633 \u0645\u06cc\u06ba \u0628\u0646\u0688\u0644)\u06d4<\/p>\n<p>\u0627\u0633 \u06a9\u06d2 \u0639\u0644\u0627\u0648\u06c1\u060c \u0622\u067e \u06a9\u0648 \u06a9\u0633\u06cc \u062e\u0627\u0635 \u0679\u0648\u0644\u0632 \u06a9\u06cc \u0636\u0631\u0648\u0631\u062a \u0646\u06c1\u06cc\u06ba \u06c1\u06d2\u06d4 \u0627\u0633\u06a9\u0644\u0632 \u0633\u0627\u062f\u06c1 \u0679\u06cc\u06a9\u0633\u0679 \u0641\u0627\u0626\u0644\u06cc\u06ba \u06c1\u06cc\u06ba \u062c\u0648 \u0622\u067e \u06a9\u06d2 \u067e\u0631\u0648\u062c\u06cc\u06a9\u0679 \u06a9\u06d2 \u0641\u0648\u0644\u0688\u0631 \u0645\u06cc\u06ba \u0645\u0648\u062c\u0648\u062f \u06c1\u06cc\u06ba\u06d4 \u0627\u0628\u062a\u062f\u0627\u0626\u06cc CLI \u06a9\u0645\u0627\u0646\u0688\u0632 \u06a9\u06d2 \u0639\u0644\u0627\u0648\u06c1 \u0628\u0646\u0627\u0646\u06d2\u060c \u0645\u0631\u062a\u0628 \u06a9\u0631\u0646\u06d2 \u06cc\u0627 \u0627\u0646\u0633\u0679\u0627\u0644 \u06a9\u0631\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u06a9\u0686\u06be \u0646\u06c1\u06cc\u06ba \u06c1\u06d2\u06d4<\/p>\n<h2 id=\"heading-what-are-agent-skills\">\u0627\u06cc\u062c\u0646\u0679 \u06a9\u06cc \u0645\u06c1\u0627\u0631\u062a\u06cc\u06ba \u06a9\u06cc\u0627 \u06c1\u06cc\u06ba\u061f<\/h2>\n<p>\u0688\u0627\u0631\u0679 \u06a9\u0648 \u062c\u0627\u0646\u0646\u06d2 \u0648\u0627\u0644\u06d2 \u0688\u0648\u06cc\u0644\u067e\u0631 \u06a9\u06cc \u062e\u062f\u0645\u0627\u062a \u062d\u0627\u0635\u0644 \u06a9\u0631\u0646\u06d2 \u0627\u0648\u0631 \u0627\u06cc\u06a9 \u0627\u06cc\u0633\u06d2 \u0688\u0648\u06cc\u0644\u067e\u0631 \u06a9\u06cc \u062e\u062f\u0645\u0627\u062a \u062d\u0627\u0635\u0644 \u06a9\u0631\u0646\u06d2 \u06a9\u06d2 \u062f\u0631\u0645\u06cc\u0627\u0646 \u0641\u0631\u0642 \u06a9\u06d2 \u0628\u0627\u0631\u06d2 \u0645\u06cc\u06ba \u0633\u0648\u0686\u06cc\u06ba \u062c\u0648 \u0622\u067e \u06a9\u06d2 \u062c\u06cc\u0633\u06d2 \u0641\u0644\u0679\u0631 \u067e\u0631\u0648\u062c\u06cc\u06a9\u0679 \u067e\u0631 \u062f\u0648 \u0633\u0627\u0644\u0648\u06ba \u0633\u06d2 \u06a9\u0627\u0645 \u06a9\u0631 \u0631\u06c1\u0627 \u06c1\u06d2\u06d4<\/p>\n<p>\u0622\u067e \u0641\u0644\u0679\u0631 \u06a9\u0648\u0688 \u0644\u06a9\u06be \u0633\u06a9\u062a\u06d2 \u06c1\u06cc\u06ba \u062c\u0648 \u062f\u0648\u0646\u0648\u06ba \u06a9\u06d2 \u0633\u0627\u062a\u06be \u06a9\u0627\u0645 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4 \u0644\u06cc\u06a9\u0646 \u062a\u062c\u0631\u0628\u06c1 \u06a9\u0627\u0631 \u0644\u0648\u06af \u062c\u0627\u0646\u062a\u06d2 \u06c1\u06cc\u06ba \u06a9\u06c1 \u06a9\u0633\u06cc \u062f\u0633\u062a\u0627\u0648\u06cc\u0632 \u0645\u06cc\u06ba \u06a9\u06cc\u0627 \u0646\u06c1\u06cc\u06ba \u06c1\u06d2\u06d4 \u0627\u0633 \u06a9\u0627 \u0645\u0637\u0644\u0628 \u06cc\u06c1 \u06c1\u06d2 \u06a9\u06c1 \u0679\u06cc\u0645 \u0646\u062c\u06cc \u062a\u0639\u0645\u06cc\u0631\u0627\u062a\u06cc \u0637\u0631\u06cc\u0642\u06d2 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u0646\u06c1\u06cc\u06ba \u06a9\u0631\u062a\u06cc \u06c1\u06d2\u060c \u06a9\u06c1 \u0648\u06c1 \u06c1\u0645\u06cc\u0634\u06c1 \u0648\u06cc\u062c\u06cc\u0679 \u0633\u06cc\u06a9\u0634\u0646\u0632 \u06a9\u0648 \u0627\u067e\u0646\u06cc \u0641\u0627\u0626\u0644\u0648\u06ba \u0645\u06cc\u06ba \u0646\u06a9\u0627\u0644\u062a\u06cc \u06c1\u06d2\u060c \u06a9\u06c1 \u0648\u06c1 \u0644\u0648\u0688\u0646\u06af \u06a9\u06cc \u062d\u0627\u0644\u062a \u06a9\u0648 \u0633\u0646\u0628\u06be\u0627\u0644\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0627\u06cc\u06a9 \u0645\u062e\u0635\u0648\u0635 \u067e\u06cc\u0679\u0631\u0646 \u06a9\u0627 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u062a\u06cc \u06c1\u06d2\u060c \u06a9\u06c1 \u0628\u0644\u0627\u06a9 \u06a9\u06d2 \u0648\u0627\u0642\u0639\u0627\u062a \u06a9\u0648 \u0645\u0627\u0636\u06cc \u06a9\u06d2 \u062a\u0646\u0627\u0624 \u06a9\u06d2 \u0641\u0639\u0644 \u06a9\u06d2 \u0633\u0627\u062a\u06be \u0646\u0627\u0645 \u062f\u06cc\u0627 \u062c\u0627\u062a\u0627 \u06c1\u06d2\u060c \u0627\u0648\u0631 \u06cc\u06c1 \u06a9\u06c1 \u0648\u06c1 \u0645\u0627\u0636\u06cc \u06a9\u06d2 \u062f\u0648\u0631 \u0645\u06cc\u06ba \u06a9\u0628\u06be\u06cc \u0641\u0639\u0644 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u0646\u06c1\u06cc\u06ba \u06a9\u0631\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4 <code>BuildContext<\/code> \u0628\u063a\u06cc\u0631 \u062c\u0627\u0646\u0686 \u06a9\u06d2 \u063a\u06cc\u0631 \u0645\u0637\u0627\u0628\u0642\u062a \u067e\u0630\u06cc\u0631 \u0648\u0642\u0641\u06c1 \u06a9\u06d2 \u0627\u0646\u062f\u0631 <code>mounted<\/code>\u0679\u06cc\u0645 \u06a9\u06cc \u0637\u0631\u0641 \u0633\u06d2 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u06cc\u0627 \u062c\u0627\u062a\u0627 \u06c1\u06d2 <code>fpdart<\/code> \u06a9\u06d2 \u0644\u06cc\u06d2 <code>Either<\/code> \u067e\u0631\u062a \u06a9\u06cc \u062d\u062f\u0648\u062f \u06a9\u0648 \u0639\u0628\u0648\u0631 \u06a9\u0631\u0646\u06d2 \u0627\u0648\u0631 \u0627\u0633\u062a\u062b\u0646\u0627\u0621 \u06a9\u0648 \u0628\u0691\u06be\u0627\u0646\u06d2 \u06a9\u06d2 \u0628\u062c\u0627\u0626\u06d2 \u0642\u0633\u0645 \u06a9\u06cc \u0648\u0636\u0627\u062d\u062a \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<p>\u06c1\u0646\u0631 AI \u0627\u06cc\u062c\u0646\u0679\u0648\u06ba \u062a\u06a9 \u06c1\u0646\u0631 \u0645\u0646\u062f \u0688\u0648\u06cc\u0644\u067e\u0631 \u06a9\u0627 \u0639\u0644\u0645 \u0644\u0627\u0646\u06d2 \u06a9\u0627 \u0627\u06cc\u06a9 \u0637\u0631\u06cc\u0642\u06c1 \u06c1\u06d2\u06d4 \u06cc\u06c1 \u0627\u06cc\u06a9 \u062f\u0633\u062a\u0627\u0648\u06cc\u0632 \u06c1\u06d2 \u062c\u0648 \u0646\u06c1 \u0635\u0631\u0641 \u0627\u0633 \u0628\u0627\u062a \u06a9\u06cc \u0648\u0636\u0627\u062d\u062a \u06a9\u0631\u062a\u06cc \u06c1\u06d2 \u06a9\u06c1 \u06a9\u06cc\u0627 \u06a9\u0631\u0646\u0627 \u06c1\u06d2\u060c \u0628\u0644\u06a9\u06c1 \u0627\u0633\u06d2 \u06a9\u06cc\u0633\u06d2 \u06a9\u0631\u0646\u0627 \u06c1\u06d2\u060c \u06a9\u0633 \u0686\u06cc\u0632 \u0633\u06d2 \u0628\u0686\u0646\u0627 \u06c1\u06d2\u060c \u0627\u0648\u0631 \u0642\u0648\u0627\u0639\u062f \u06a9\u06cc\u0648\u06ba \u0645\u0648\u062c\u0648\u062f \u06c1\u06cc\u06ba\u06d4<\/p>\n<p>\u0628\u0627\u0636\u0627\u0628\u0637\u06c1 \u0637\u0648\u0631 \u067e\u0631\u060c \u0627\u06cc\u062c\u0646\u0679 \u0679\u06cc\u06a9\u0646\u0627\u0644\u0648\u062c\u06cc AI \u0627\u06cc\u062c\u0646\u0679\u0648\u06ba \u06a9\u0648 \u06a9\u0627\u0645 \u067e\u0631 \u0645\u0628\u0646\u06cc \u0628\u0644\u06cc\u0648 \u067e\u0631\u0646\u0679\u0633 \u06a9\u0627 \u0627\u06cc\u06a9 \u0633\u06cc\u0679 \u0641\u0631\u0627\u06c1\u0645 \u06a9\u0631\u0646\u06d2 \u06a9\u0627 \u0627\u06cc\u06a9 \u0645\u0639\u06cc\u0627\u0631\u06cc \u0637\u0631\u06cc\u0642\u06c1 \u0641\u0631\u0627\u06c1\u0645 \u06a9\u0631\u062a\u06cc \u06c1\u06d2\u06d4 \u0627\u06cc\u062c\u0646\u0679\u0648\u06ba \u06a9\u0648 \u062d\u0642\u06cc\u0642\u06cc \u0688\u0648\u0645\u06cc\u0646 \u06a9\u06cc \u0645\u06c1\u0627\u0631\u062a \u0627\u0648\u0631 \u062f\u06c1\u0631\u0627\u0626\u06d2 \u062c\u0627\u0646\u06d2 \u06a9\u06d2 \u0642\u0627\u0628\u0644 \u0648\u0631\u06a9 \u0641\u0644\u0648 \u0641\u0631\u0627\u06c1\u0645 \u06a9\u0631\u06a9\u06d2\u060c \u0622\u067e \u063a\u0644\u0637\u06cc\u0648\u06ba \u06a9\u0648 \u06a9\u0627\u0641\u06cc \u062d\u062f \u062a\u06a9 \u06a9\u0645 \u06a9\u0631 \u0633\u06a9\u062a\u06d2 \u06c1\u06cc\u06ba \u0627\u0648\u0631 \u0645\u0633\u062a\u0642\u0644 \u0646\u0645\u0648\u0646\u0648\u06ba \u06a9\u0648 \u0646\u0627\u0641\u0630 \u06a9\u0631 \u0633\u06a9\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4<\/p>\n<p>\u06a9\u0644\u06cc\u062f\u06cc \u0644\u0641\u0638 \u06a9\u0627\u0645 \u067e\u0631 \u0645\u0628\u0646\u06cc \u06c1\u06d2\u06d4 \u0679\u06cc\u06a9\u0646\u0627\u0644\u0648\u062c\u06cc \u0627\u06cc\u06a9 \u0633\u0679\u0627\u0626\u0644 \u06af\u0627\u0626\u06cc\u0688 \u0646\u06c1\u06cc\u06ba \u06c1\u06d2. \u06a9\u0627\u0645 \u06a9\u06d2 \u0645\u062e\u0635\u0648\u0635 \u0632\u0645\u0631\u06d2 \u0633\u06d2 \u0645\u062a\u0639\u0644\u0642 \u06c1\u062f\u0627\u06cc\u0627\u062a \u06a9\u0627 \u0645\u062c\u0645\u0648\u0639\u06c1\u06d4<\/p>\n<h3 id=\"heading-the-universal-standard\">\u0639\u0627\u0644\u0645\u06af\u06cc\u0631 \u0645\u0639\u06cc\u0627\u0631<\/h3>\n<p>\u0645\u06c1\u0627\u0631\u062a\u06cc\u06ba Agentkills.io \u067e\u0631 \u0631\u06a9\u06be\u06cc \u06af\u0626\u06cc \u062a\u0635\u0631\u06cc\u062d\u0627\u062a \u067e\u0631 \u0639\u0645\u0644 \u06a9\u0631\u062a\u06cc \u06c1\u06cc\u06ba\u06d4 \u06cc\u06c1 \u062a\u0635\u0631\u06cc\u062d \u0641\u0627\u0626\u0644 \u0641\u0627\u0631\u0645\u06cc\u0679 (YAML \u0633\u0627\u0628\u0642\u06c1 \u200b\u200b\u06a9\u06d2 \u0633\u0627\u062a\u06be \u0645\u0627\u0631\u06a9 \u0688\u0627\u0624\u0646)\u060c \u0688\u0627\u0626\u0631\u06cc\u06a9\u0679\u0631\u06cc \u0644\u0648\u06a9\u06cc\u0634\u0646 (<code>.agents\/skills\/<\/code>) \u0627\u0648\u0631 \u0646\u0627\u0645 \u062f\u06cc\u0646\u06d2 \u06a9\u06d2 \u06a9\u0646\u0648\u0646\u0634\u0646\u0632\u06d4<\/p>\n<p>\u0648\u0636\u0627\u062d\u062a\u06cc\u06ba \u0622\u0641\u0627\u0642\u06cc \u06c1\u06cc\u06ba\u060c \u0644\u06c1\u0630\u0627 \u0648\u06c1\u06cc \u062a\u06a9\u0646\u06cc\u06a9\u06cc \u0641\u0627\u0626\u0644\u06cc\u06ba Claude Code\u060c Cursor\u060c Antigravity\u060c Codex\u060c \u0627\u0648\u0631 \u062f\u06cc\u06af\u0631 \u0627\u06cc\u062c\u0646\u0679\u0648\u06ba \u06a9\u06d2 \u0633\u0627\u062a\u06be \u06a9\u0627\u0645 \u06a9\u0631\u06cc\u06ba \u06af\u06cc \u062c\u0648 \u0645\u0639\u06cc\u0627\u0631 \u06a9\u06cc \u067e\u06cc\u0631\u0648\u06cc \u06a9\u0631\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4<\/p>\n<p>\u06cc\u06c1 \u067e\u0648\u0631\u0679\u06cc\u0628\u0644\u0679\u06cc \u0622\u067e \u06a9\u06cc \u0679\u06cc\u0645 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0627\u06c1\u0645 \u06c1\u06d2\u06d4 \u06c1\u0631 \u0627\u06cc\u062c\u0646\u0679 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0627\u0644\u06af \u0645\u06c1\u0627\u0631\u062a \u067e\u06cc\u062f\u0627 \u06a9\u0631\u0646\u06d2 \u06a9\u06cc \u0636\u0631\u0648\u0631\u062a \u0646\u06c1\u06cc\u06ba \u06c1\u06d2\u06d4 \u062c\u0628 \u0622\u067e \u06a9\u0648\u0626\u06cc \u06c1\u0646\u0631 \u0644\u06a9\u06be\u062a\u06d2 \u06c1\u06cc\u06ba \u0627\u0648\u0631 \u0627\u0633\u06d2 \u06a9\u0633\u06cc \u0630\u062e\u06cc\u0631\u06d2 \u0645\u06cc\u06ba \u0628\u06be\u06cc\u062c \u062f\u06cc\u062a\u06d2 \u06c1\u06cc\u06ba\u060c \u062a\u0648 \u0622\u067e \u06a9\u06cc \u0679\u06cc\u0645 \u06a9\u06d2 \u062a\u0645\u0627\u0645 \u0627\u06cc\u062c\u0646\u0679 \u0641\u0648\u0631\u06cc \u0637\u0648\u0631 \u067e\u0631 \u0627\u0633 \u0633\u06d2 \u0641\u0627\u0626\u062f\u06c1 \u0627\u0679\u06be\u0627 \u0633\u06a9\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4<\/p>\n<h3 id=\"heading-where-skills-live\">\u062c\u06c1\u0627\u06ba \u0679\u06cc\u06a9\u0646\u0627\u0644\u0648\u062c\u06cc \u0632\u0646\u062f\u06c1 \u06c1\u0648 \u062c\u0627\u062a\u06cc \u06c1\u06d2\u06d4<\/h3>\n<p>\u0679\u06cc\u06a9\u0646\u0627\u0644\u0648\u062c\u06cc <code>.agents\/skills\/<\/code> \u067e\u0631\u0648\u062c\u06cc\u06a9\u0679 \u0648\u0631\u06a9 \u0627\u0633\u067e\u06cc\u0633 \u06a9\u06cc \u0688\u0627\u0626\u0631\u06a9\u0679\u0631\u06cc\u06d4 \u06cc\u06c1 \u0648\u06c1 \u0645\u0639\u06cc\u0627\u0631\u06cc \u0645\u0642\u0627\u0645 \u06c1\u06d2 \u062c\u0633\u06d2 \u062a\u0645\u0627\u0645 \u06c1\u0645 \u0622\u06c1\u0646\u06af \u0627\u06cc\u062c\u0646\u0679 \u06a9\u0633\u06cc \u06a9\u0627\u0645 \u06a9\u0627 \u06a9\u0627\u0645 \u0634\u0631\u0648\u0639 \u06a9\u0631\u062a\u06d2 \u0648\u0642\u062a \u062e\u0648\u062f \u0628\u062e\u0648\u062f \u062a\u0644\u0627\u0634 \u06a9\u0631\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4<\/p>\n<pre><code class=\"language-plaintext\">your_flutter_project\/\n  .agents\/\n    skills\/\n      flutter-file-organization.md\n      flutter-state-management-bloc.md\n      flutter-testing.md\n      flutter-theming.md\n      flutter-error-handling.md\n      flutter-navigation.md\n      flutter-feature-architecture.md\n      dart-unit-testing.md\n      dart-static-analysis.md\n      dart-pattern-matching.md\n  lib\/\n  android\/\n  ios\/\n  pubspec.yaml\n<\/code><\/pre>\n<p><code>.agents\/skills\/<\/code>    \u06cc\u06c1 \u0627\u06cc\u062c\u0646\u0679 \u062a\u06a9\u0646\u06cc\u06a9\u06cc \u0648\u0636\u0627\u062d\u062a\u0648\u06ba \u06a9\u06d2 \u0630\u0631\u06cc\u0639\u06c1 \u0642\u0627\u0626\u0645 \u06a9\u0631\u062f\u06c1 \u0627\u0635\u0648\u0644 \u06c1\u06cc\u06ba\u06d4 \u062c\u0628 \u06a9\u0648\u0626\u06cc \u0627\u06cc\u062c\u0646\u0679 \u06a9\u0633\u06cc \u067e\u0631\u0648\u062c\u06cc\u06a9\u0679 \u067e\u0631 \u0633\u06cc\u0634\u0646 \u0634\u0631\u0648\u0639 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u060c \u062a\u0648 \u0648\u06c1 \u0627\u0633 \u0688\u0627\u0626\u0631\u06a9\u0679\u0631\u06cc \u06a9\u0648 \u062a\u0644\u0627\u0634 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u060c \u062a\u06a9\u0646\u06cc\u06a9\u06cc \u0641\u0627\u0626\u0644\u0648\u06ba \u06a9\u0648 \u0627\u0646\u0688\u06cc\u06a9\u0633 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u060c \u062f\u0633\u062a\u06cc\u0627\u0628 \u062e\u0635\u0648\u0635\u06cc\u0627\u062a \u06a9\u0627 \u062a\u0639\u06cc\u0646 \u06a9\u0631\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0645\u06cc\u0679\u0627 \u0688\u06cc\u0679\u0627 \u067e\u0691\u06be\u062a\u0627 \u06c1\u06d2\u060c \u0627\u0648\u0631 \u0645\u06a9\u0645\u0644 \u062a\u06a9\u0646\u06cc\u06a9\u06cc \u0645\u0648\u0627\u062f \u0635\u0631\u0641 \u0627\u0633 \u0635\u0648\u0631\u062a \u0645\u06cc\u06ba \u0644\u0648\u0688 \u06a9\u0631\u062a\u0627 \u06c1\u06d2 \u062c\u0628 \u0622\u067e\u0631\u06cc\u0634\u0646 \u062a\u06a9\u0646\u06cc\u06a9\u06cc \u0648\u0636\u0627\u062d\u062a \u0633\u06d2 \u0645\u06cc\u0644 \u06a9\u06be\u0627\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<h3 id=\"heading-what-makes-skills-different-from-system-prompts-or-rules\">\u06a9\u0633 \u0637\u0631\u062d \u0645\u06c1\u0627\u0631\u062a\u06cc\u06ba \u0633\u0633\u0679\u0645 \u06a9\u06d2 \u0627\u0634\u0627\u0631\u06d2 \u06cc\u0627 \u0642\u0648\u0627\u0639\u062f \u0633\u06d2 \u0645\u062e\u062a\u0644\u0641 \u06c1\u06cc\u06ba\u06d4<\/h3>\n<p>\u0627\u06cc\u06a9 \u0628\u0627\u0631 \u06a9\u0627 \u067e\u06cc\u063a\u0627\u0645 \u0627\u06cc\u062c\u0646\u0679 \u06a9\u0648 \u0628\u062a\u0627\u062a\u0627 \u06c1\u06d2 \u06a9\u06c1 \u0648\u06c1 \u0627\u0633 \u0633\u06cc\u0634\u0646 \u0633\u06d2 \u06a9\u06cc\u0627 \u0686\u0627\u06c1\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4 AI \u0642\u0648\u0627\u0646\u06cc\u0646 \u06a9\u06cc \u0641\u0627\u0626\u0644\u06cc\u06ba\u060c \u062c\u06cc\u0633\u06d2 <code>.cursorrules<\/code> \u06cc\u0627 <code>CLAUDE.md<\/code>) \u0627\u06cc\u062c\u0646\u0679\u0648\u06ba \u06a9\u0648 \u067e\u0631\u0648\u062c\u06cc\u06a9\u0679 \u06a9\u06d2 \u0648\u0633\u06cc\u0639 \u062d\u0642\u0627\u0626\u0642 \u0633\u06d2 \u0622\u06af\u0627\u06c1 \u06a9\u0631\u062a\u0627 \u06c1\u06d2 \u062c\u0648 \u062a\u0645\u0627\u0645 \u06a9\u0627\u0645\u0648\u06ba \u067e\u0631 \u0644\u0627\u06af\u0648 \u06c1\u0648\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4 \u06c1\u0646\u0631 \u0627\u06cc\u062c\u0646\u0679\u0648\u06ba \u06a9\u0648 \u0633\u06a9\u06be\u0627\u062a\u0627 \u06c1\u06d2 \u06a9\u06c1 \u0645\u0633\u062a\u0642\u0628\u0644 \u06a9\u06cc \u062a\u0645\u0627\u0645 \u062f\u0631\u062e\u0648\u0627\u0633\u062a\u0648\u06ba \u0645\u06cc\u06ba \u0645\u062e\u0635\u0648\u0635 \u0642\u0633\u0645 \u06a9\u06d2 \u06a9\u0627\u0645\u0648\u06ba \u06a9\u0648 \u06a9\u0633 \u0637\u0631\u062d \u062f\u0631\u0633\u062a \u0637\u0631\u06cc\u0642\u06d2 \u0633\u06d2 \u0627\u0646\u062c\u0627\u0645 \u062f\u06cc\u0627 \u062c\u0627\u0626\u06d2\u060c \u062c\u0648 \u0635\u0631\u0641 \u0645\u062a\u0639\u0644\u0642\u06c1 \u06c1\u0648\u0646\u06d2 \u067e\u0631 \u06c1\u06cc \u0644\u0648\u0688 \u06a9\u06cc\u06d2 \u062c\u0627\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4<\/p>\n<p>\u062c\u0628 \u0622\u067e Flutter \u0641\u0627\u0626\u0644\u0648\u06ba \u06a9\u0648 \u062a\u0631\u062a\u06cc\u0628 \u062f\u06cc\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u062a\u06a9\u0646\u06cc\u06a9 \u0644\u06a9\u06be\u062a\u06d2 \u06c1\u06cc\u06ba\u060c \u062a\u0648 \u0622\u067e \u06a9\u0648 \u06c1\u0631 \u0633\u06cc\u0634\u0646 \u0645\u06cc\u06ba \u0686\u06cc\u0679 \u0645\u06cc\u06ba \u0642\u0648\u0627\u0639\u062f \u06a9\u06cc \u0648\u0636\u0627\u062d\u062a \u06a9\u0631\u0646\u06d2 \u06a9\u06cc \u0636\u0631\u0648\u0631\u062a \u0646\u06c1\u06cc\u06ba \u06c1\u0648\u062a\u06cc \u06c1\u06d2\u06d4 \u062c\u0628 \u0628\u06be\u06cc \u0622\u067e \u06cc\u0627 \u0679\u06cc\u0645 \u06a9\u0627 \u06a9\u0648\u0626\u06cc \u0631\u06a9\u0646 \u06a9\u0633\u06cc \u0627\u06cc\u062c\u0646\u0679 \u0633\u06d2 \u0641\u0644\u0679\u0631 \u0641\u0627\u0626\u0644 \u0628\u0646\u0627\u0646\u06d2\u060c \u062a\u0642\u0633\u06cc\u0645 \u06a9\u0631\u0646\u06d2 \u06cc\u0627 \u0631\u06cc \u0641\u06cc\u06a9\u0679\u0631 \u06a9\u0631\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u06a9\u06c1\u062a\u06d2 \u06c1\u06cc\u06ba\u060c \u0645\u06c1\u0627\u0631\u062a \u062e\u0648\u062f \u0628\u062e\u0648\u062f \u0644\u0648\u0688 \u06c1\u0648 \u062c\u0627\u062a\u06cc \u06c1\u06d2 \u0627\u0648\u0631 \u0627\u0633\u06cc \u0645\u0639\u06cc\u0627\u0631 \u06a9\u06cc \u0631\u06c1\u0646\u0645\u0627\u0626\u06cc \u0641\u0631\u0627\u06c1\u0645 \u06a9\u0631\u062a\u06cc \u06c1\u06d2\u06d4 \u062c\u0628 \u06a9\u0648\u0626\u06cc \u0646\u06cc\u0627 \u0688\u0648\u06cc\u0644\u067e\u0631 \u0622\u067e \u06a9\u06cc \u0679\u06cc\u0645 \u0645\u06cc\u06ba \u0634\u0627\u0645\u0644 \u06c1\u0648\u062a\u0627 \u06c1\u06d2 \u0627\u0648\u0631 \u0622\u067e \u06a9\u06d2 AI \u0627\u06cc\u062c\u0646\u0679 \u06a9\u0627 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u0634\u0631\u0648\u0639 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u060c \u062a\u0648 \u0648\u06c1 \u0622\u067e \u06a9\u06cc \u0679\u06cc\u0645 \u06a9\u06d2 \u0645\u0639\u06cc\u0627\u0631\u0627\u062a \u06a9\u0648 \u062f\u0633\u062a\u06cc \u0637\u0648\u0631 \u067e\u0631 \u0633\u06cc\u06a9\u06be\u06d2 \u0628\u063a\u06cc\u0631\u060c \u0622\u067e \u06a9\u06cc \u0679\u06cc\u0645 \u06a9\u06d2 \u067e\u06c1\u0644\u06d2 \u062f\u0646 \u0633\u06d2 \u0644\u06a9\u06be\u06cc \u06af\u0626\u06cc \u062a\u0645\u0627\u0645 \u0679\u06cc\u06a9\u0646\u0627\u0644\u0648\u062c\u06cc\u0632 \u0633\u06d2 \u0641\u0627\u0626\u062f\u06c1 \u0627\u0679\u06be\u0627 \u0633\u06a9\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<h2 id=\"heading-the-problem-why-ai-agents-get-flutter-wrong\">\u0645\u0633\u0626\u0644\u06c1: \u0627\u06d2 \u0622\u0626\u06cc \u0627\u06cc\u062c\u0646\u0679 \u067e\u06be\u0691\u067e\u06be\u0691\u0627\u0646\u06d2 \u0645\u06cc\u06ba \u062e\u0631\u0627\u0628\u06cc\u0627\u06ba \u06a9\u06cc\u0648\u06ba \u067e\u06cc\u062f\u0627 \u06a9\u0631\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4<\/h2>\n<p>\u06cc\u06c1 \u0633\u0645\u062c\u06be\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u06a9\u06c1 \u06c1\u0645\u06cc\u06ba \u0679\u06cc\u06a9\u0646\u0627\u0644\u0648\u062c\u06cc \u06a9\u06cc \u0636\u0631\u0648\u0631\u062a \u06a9\u06cc\u0648\u06ba \u06c1\u06d2\u060c \u06c1\u0645\u06cc\u06ba \u0627\u0646 \u0645\u062e\u0635\u0648\u0635 \u0627\u0648\u0631 \u0642\u0627\u0628\u0644 \u067e\u06cc\u0634\u0646 \u06af\u0648\u0626\u06cc \u0637\u0631\u06cc\u0642\u0648\u06ba \u06a9\u0648 \u0633\u0645\u062c\u06be\u0646\u06d2 \u06a9\u06cc \u0636\u0631\u0648\u0631\u062a \u06c1\u06d2 \u062c\u0646 \u06a9\u06d2 \u0628\u063a\u06cc\u0631 AI \u0627\u06cc\u062c\u0646\u0679 \u0641\u0644\u0679\u0631 \u0627\u0648\u0631 \u0688\u0627\u0631\u0679 \u0645\u06cc\u06ba \u0646\u0627\u06a9\u0627\u0645 \u06c1\u0648 \u062c\u0627\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4 \u06cc\u06c1 \u0646\u0627\u06a9\u0627\u0645\u06cc\u0627\u06ba \u0628\u06d2 \u062a\u0631\u062a\u06cc\u0628 \u0646\u06c1\u06cc\u06ba \u06c1\u06cc\u06ba\u06d4 \u0648\u06c1 \u06a9\u0686\u06be \u0628\u0646\u06cc\u0627\u062f\u06cc \u0648\u062c\u0648\u06c1\u0627\u062a \u06a9\u0627 \u067e\u062a\u06c1 \u0644\u06af\u0627\u062a\u06d2 \u06c1\u06cc\u06ba \u062c\u0646\u06c1\u06cc\u06ba \u062d\u0644 \u06a9\u0631\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0679\u06cc\u06a9\u0646\u0627\u0644\u0648\u062c\u06cc \u06a9\u0648 \u0688\u06cc\u0632\u0627\u0626\u0646 \u06a9\u06cc\u0627 \u06af\u06cc\u0627 \u06c1\u06d2\u06d4<\/p>\n<h3 id=\"heading-the-training-data-problem\">\u062a\u0631\u0628\u06cc\u062a\u06cc \u0688\u06cc\u0679\u0627 \u06a9\u0627 \u0645\u0633\u0626\u0644\u06c1<\/h3>\n<p>\u0627\u06d2 \u0622\u0626\u06cc \u0627\u06cc\u062c\u0646\u0679 \u06a9\u0648 \u0679\u0631\u06cc\u0646\u0646\u06af \u0688\u06cc\u0679\u0627 \u06a9\u06d2 \u0630\u0631\u06cc\u0639\u06d2 \u0688\u0627\u0631\u0679 \u0627\u0648\u0631 \u0641\u0644\u0679\u0631 \u06a9\u0627 \u0639\u0644\u0645 \u06c1\u0648\u062a\u0627 \u06c1\u06d2\u06d4 \u0627\u0633 \u06a9\u06d2 \u062a\u0631\u0628\u06cc\u062a\u06cc \u0688\u06cc\u0679\u0627 \u0645\u06cc\u06ba \u0641\u0644\u0679\u0631 \u06a9\u0648\u0688 \u06a9\u06cc \u0644\u0627\u06a9\u06be\u0648\u06ba \u0644\u0627\u0626\u0646\u06cc\u06ba \u06c1\u06cc\u06ba \u062c\u0648 \u0639\u0648\u0627\u0645\u06cc \u0630\u062e\u06cc\u0631\u0648\u06ba\u060c \u062f\u0633\u062a\u0627\u0648\u06cc\u0632\u0627\u062a\u060c \u0633\u0628\u0642 \u0622\u0645\u0648\u0632 \u0627\u0648\u0631 \u0641\u0648\u0631\u0645 \u06a9\u06d2 \u062c\u0648\u0627\u0628\u0627\u062a \u0633\u06d2 \u06a9\u06be\u06cc\u0646\u0686\u06cc \u06af\u0626\u06cc \u06c1\u06cc\u06ba\u06d4 \u0627\u0633 \u0645\u06cc\u06ba \u067e\u0631\u0627\u0646\u06d2 \u067e\u06cc\u0679\u0631\u0646 (\u0646\u0627\u0644 \u067e\u0631\u06cc \u0633\u06cc\u0641 \u0688\u0627\u0631\u0679)\u060c \u062e\u0631\u0627\u0628 \u067e\u06cc\u0679\u0631\u0646 (\u0627\u0639\u0644\u06cc \u062f\u0631\u062c\u06d2 \u06a9\u06d2 \u0648\u06cc\u062c\u0679\u0633) \u0627\u0648\u0631 \u0648\u06c1 \u067e\u06cc\u0679\u0631\u0646 \u0634\u0627\u0645\u0644 \u06c1\u06cc\u06ba \u062c\u0648 \u0627\u0646\u0641\u0631\u0627\u062f\u06cc \u0637\u0648\u0631 \u067e\u0631 \u062f\u0631\u0633\u062a \u06c1\u06cc\u06ba \u0644\u06cc\u06a9\u0646 \u06a9\u0633\u06cc \u062e\u0627\u0635 \u0679\u06cc\u0645 \u06a9\u06d2 \u0645\u0639\u06cc\u0627\u0631 \u067e\u0631 \u067e\u0648\u0631\u0627 \u0646\u06c1\u06cc\u06ba \u0627\u062a\u0631\u062a\u06d2\u06d4<\/p>\n<p>\u062c\u0628 \u0627\u06cc\u062c\u0646\u0679 \u0628\u063a\u06cc\u0631 \u0645\u06c1\u0627\u0631\u062a \u06a9\u06d2 \u06a9\u0648\u0688 \u062a\u06cc\u0627\u0631 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u060c \u062a\u0648 \u06cc\u06c1 \u062a\u0645\u0627\u0645 \u0645\u062e\u0644\u0648\u0637 \u062a\u0631\u0628\u06cc\u062a\u06cc \u0688\u06cc\u0679\u0627 \u06a9\u0627 \u0641\u0627\u0626\u062f\u06c1 \u0627\u0679\u06be\u0627\u062a\u0627 \u06c1\u06d2\u06d4 \u0622\u067e 2021 \u0679\u06cc\u0648\u0679\u0648\u0631\u06cc\u0644 \u0627\u0633\u0679\u0627\u0626\u0644 \u0645\u06cc\u06ba \u06a9\u0648\u0688 \u062a\u06cc\u0627\u0631 \u06a9\u0631 \u0633\u06a9\u062a\u06d2 \u06c1\u06cc\u06ba: <code>setState<\/code> \u06a9\u06c1\u06cc\u06ba \u0628\u06be\u06cc \u06cc\u0627 \u0630\u062e\u06cc\u0631\u06c1 \u0627\u0646\u062f\u0627\u0632 \u0645\u06cc\u06ba \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u062a\u06d2 \u06c1\u0648\u0626\u06d2: <code>ChangeNotifier<\/code> \u0627\u06af\u0631 \u0622\u067e \u06a9\u06cc \u0679\u06cc\u0645 \u0628\u0644\u0627\u06a9 \u06cc\u0627 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u062a\u06cc \u06c1\u06d2\u06d4 <code>Navigator.push<\/code> \u062c\u0628 \u0679\u06cc\u0645\u06cc\u06ba \u06af\u06c1\u0631\u06d2 \u0644\u0646\u06a9\u0646\u06af \u0633\u067e\u0648\u0631\u0679 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0627\u0646\u0635\u0627\u0641 \u06a9\u06d2 \u0633\u0627\u062a\u06be GoRouter \u06a9\u0627 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u062a\u06cc \u06c1\u06cc\u06ba\u06d4<\/p>\n<p>\u0679\u06cc\u06a9\u0646\u0627\u0644\u0648\u062c\u06cc \u0627\u06cc\u062c\u0646\u0679\u0648\u06ba \u06a9\u06d2 \u0645\u0648\u062c\u0648\u062f\u06c1 \u0639\u0644\u0645 \u06a9\u06cc \u062c\u06af\u06c1 \u0646\u06c1\u06cc\u06ba \u0644\u06cc\u062a\u06cc\u06d4 \u06cc\u06c1 \u0627\u0646\u062c\u06cc\u0646\u0626\u0631\u0646\u06af \u06a9\u0627 \u0648\u0627\u0636\u062d \u0633\u06cc\u0627\u0642 \u0648 \u0633\u0628\u0627\u0642 \u0641\u0631\u0627\u06c1\u0645 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4 \u0679\u06cc\u06a9\u0646\u0627\u0644\u0648\u062c\u06cc \u06a9\u06d2 \u0628\u063a\u06cc\u0631\u060c \u0627\u06cc\u062c\u0646\u0679 \u0645\u062e\u062a\u0644\u0641 \u0645\u0639\u06cc\u0627\u0631 \u06a9\u06d2 \u067e\u06cc\u0679\u0631\u0646 \u06a9\u06d2 \u0645\u062c\u0645\u0648\u0639\u0648\u06ba \u06a9\u06cc \u0627\u06cc\u06a9 \u0648\u0633\u06cc\u0639 \u0631\u06cc\u0646\u062c \u0645\u06cc\u06ba \u0633\u06d2 \u0627\u0646\u062a\u062e\u0627\u0628 \u06a9\u0631\u06cc\u06ba \u06af\u06d2\u06d4 \u0679\u06cc\u0645 \u06a9\u06cc \u0637\u0631\u0641 \u0633\u06d2 \u0637\u06d2 \u0634\u062f\u06c1 \u062a\u06a9\u0646\u06cc\u06a9\u0648\u06ba \u06a9\u0627 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u0627\u0633 \u0628\u0627\u062a \u06a9\u0648 \u06cc\u0642\u06cc\u0646\u06cc \u0628\u0646\u0627\u062a\u0627 \u06c1\u06d2 \u06a9\u06c1 \u06cc\u06c1 \u0646\u0645\u0648\u0646\u06d2 \u067e\u0631\u0627\u062c\u06cc\u06a9\u0679 \u06a9\u06d2 \u0641\u0646 \u062a\u0639\u0645\u06cc\u0631\u060c \u06a9\u0646\u0648\u0646\u0634\u0646\u0632 \u0627\u0648\u0631 \u0645\u0639\u06cc\u0627\u0631\u0627\u062a \u06a9\u06cc \u0648\u062c\u06c1 \u0633\u06d2 \u0645\u062d\u062f\u0648\u062f \u06c1\u06cc\u06ba\u060c \u062c\u0633 \u06a9\u06d2 \u0646\u062a\u06cc\u062c\u06d2 \u0645\u06cc\u06ba \u0622\u0646\u06d2 \u0648\u0627\u0644\u06d2 \u06a9\u0648\u0688 \u06a9\u0648 \u0645\u0648\u062c\u0648\u062f\u06c1 \u06a9\u0648\u0688\u0628\u06cc\u0633 \u06a9\u06d2 \u0633\u0627\u062a\u06be \u0645\u0632\u06cc\u062f \u06c1\u0645 \u0622\u06c1\u0646\u06af \u0628\u0646\u0627\u06cc\u0627 \u062c\u0627\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<h3 id=\"heading-the-most-common-flutter-specific-failures\">\u067e\u06be\u0691\u067e\u06be\u0691\u0627\u0646\u06d2 \u0633\u06d2 \u0645\u062a\u0639\u0644\u0642 \u0633\u0628 \u0633\u06d2 \u0639\u0627\u0645 \u063a\u0644\u0637\u06cc\u0627\u06ba<\/h3>\n<p>\u0627\u06cc\u062c\u0646\u0679\u0648\u06ba \u0646\u06d2 \u067e\u06cc\u0686\u06cc\u062f\u06c1 \u0627\u0633\u06a9\u0631\u06cc\u0646\u0648\u06ba \u06a9\u0648 \u0645\u0646\u062f\u0631\u062c\u06c1 \u0630\u06cc\u0644 \u0646\u062c\u06cc \u0637\u0631\u06cc\u0642\u0648\u06ba \u0633\u06d2 \u0628\u0646\u0627\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u06a9\u06c1\u0627: <code>_buildHeader()<\/code>, <code>_buildStatsList()<\/code>\u0627\u0648\u0631 <code>_buildActionBar()<\/code> \u0627\u0633\u06a9\u0631\u06cc\u0646 \u06a9\u0644\u0627\u0633 \u06a9\u06d2 \u0627\u0646\u062f\u0631\u06d4 \u06cc\u06c1 \u0627\u06cc\u06a9 \u062f\u0631\u0633\u062a \u0688\u0627\u0631\u0679 \u06c1\u06d2\u060c \u0644\u06cc\u06a9\u0646 \u0633\u0627\u062e\u062a\u06cc \u0637\u0648\u0631 \u067e\u0631 \u0646\u0642\u0635\u0627\u0646 \u062f\u06c1 \u06c1\u06d2\u06d4 \u06cc\u06c1 \u0633\u06cc\u06a9\u0634\u0646\u0632 \u0639\u0644\u06cc\u062d\u062f\u06c1 \u0679\u06cc\u0633\u0679 \u0627\u06cc\u0628\u0644 \u0627\u0648\u0631 \u062f\u0648\u0628\u0627\u0631\u06c1 \u0642\u0627\u0628\u0644 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u0648\u06cc\u062c\u06cc\u0679 \u06a9\u0644\u0627\u0633\u0632 \u06c1\u0648\u0646\u06d2 \u0686\u0627\u06c1\u0626\u06cc\u06ba\u06d4 <code>widgets\/<\/code> \u0641\u0648\u0644\u0688\u0631<\/p>\n<h4 id=\"heading-2-separating-statefulwidget-from-state\">2. StatefulWidget \u06a9\u0648 \u0631\u06cc\u0627\u0633\u062a \u0633\u06d2 \u0627\u0644\u06af \u06a9\u0631\u06cc\u06ba\u06d4<\/h4>\n<p>\u0628\u0691\u06cc \u0641\u0627\u0626\u0644\u0648\u06ba \u06a9\u0648 \u062a\u0642\u0633\u06cc\u0645 \u06a9\u0631\u062a\u06d2 \u0648\u0642\u062a\u060c \u0627\u06cc\u062c\u0646\u0679 \u0641\u0627\u0626\u0644\u0648\u06ba \u06a9\u0648 \u0645\u0646\u062a\u0642\u0644 \u06a9\u0631 \u0633\u06a9\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4 <code>StatefulWidget<\/code> \u06a9\u0644\u0627\u0633 \u06a9\u0648 \u0627\u06cc\u06a9 \u0641\u0627\u0626\u0644 \u0645\u06cc\u06ba \u062a\u0628\u062f\u06cc\u0644 \u06a9\u0631\u06cc\u06ba\u06d4 <code>State<t\/><\/code> \u062f\u0648\u0633\u0631\u0648\u06ba \u06a9\u0648 \u0633\u0628\u0642 \u0633\u06a9\u06be\u0627\u0646\u0627\u06d4 \u06cc\u06c1 \u0641\u0644\u0679\u0631 \u06a9\u0645\u067e\u0644\u06cc\u0634\u0646 \u06a9\u06cc \u0628\u0646\u06cc\u0627\u062f\u06cc \u0631\u06a9\u0627\u0648\u0679\u0648\u06ba \u06a9\u0648 \u062a\u0648\u0691 \u062f\u06cc\u062a\u0627 \u06c1\u06d2\u06d4 \u062f\u0648\u0646\u0648\u06ba \u0641\u0627\u0626\u0644\u06cc\u06ba \u06c1\u0645\u06cc\u0634\u06c1 \u0627\u06cc\u06a9 \u06c1\u06cc \u0641\u0627\u0626\u0644 \u0645\u06cc\u06ba \u06c1\u0648\u0646\u06cc \u0686\u0627\u06c1\u0626\u06cc\u06ba\u06d4<\/p>\n<h4 id=\"heading-3-ignoring-your-state-management-choice\">3. \u0631\u06cc\u0627\u0633\u062a\u06cc \u0627\u0646\u062a\u0638\u0627\u0645\u06cc \u0627\u0646\u062a\u062e\u0627\u0628 \u06a9\u0648 \u0646\u0638\u0631 \u0627\u0646\u062f\u0627\u0632 \u06a9\u0631\u06cc\u06ba\u06d4<\/h4>\n<p>\u0631\u06cc\u0627\u0633\u062a\u06cc \u0627\u0646\u062a\u0638\u0627\u0645\u06cc \u062a\u0631\u062c\u06cc\u062d\u0627\u062a \u06a9\u0648 \u062c\u0627\u0646\u06d2 \u0628\u063a\u06cc\u0631\u060c \u0627\u06cc\u062c\u0646\u0679 \u0679\u0631\u06cc\u0646\u0646\u06af \u0688\u06cc\u0679\u0627 \u0645\u06cc\u06ba \u0627\u06a9\u062b\u0631 \u067e\u0627\u0626\u06d2 \u062c\u0627\u0646\u06d2 \u0648\u0627\u0644\u06d2 \u0646\u0645\u0648\u0646\u0648\u06ba \u06a9\u0627 \u0627\u0646\u062a\u062e\u0627\u0628 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4 \u0627\u06cc\u06a9 \u0633\u06cc\u0634\u0646 \u0627\u06cc\u06a9 \u0628\u0644\u0627\u06a9 \u0628\u0646\u0627\u062a\u0627 \u06c1\u06d2\u06d4 \u0627\u06af\u0644\u0627\u060c \u0627\u06cc\u06a9 \u0641\u0631\u0627\u06c1\u0645 \u06a9\u0646\u0646\u062f\u06c1 \u0628\u0646\u0627\u0626\u06cc\u06ba\u06d4 \u0622\u06af\u06d2 \u06a9\u06cc\u0627 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u0646\u0627 \u06c1\u06d2\u06d4 <code>setState<\/code>. \u06cc\u06c1 \u0633\u0628 \u0627\u06cc\u06a9 \u06c1\u06cc \u06a9\u0648\u0688 \u0628\u06cc\u0633 \u0645\u06cc\u06ba \u06c1\u06d2\u06d4<\/p>\n<h4 id=\"heading-4-using-map-instead-of-typed-models\">4. \u0627\u0646 \u067e\u0679 \u0645\u0627\u0688\u0644 \u06a9\u06d2 \u0628\u062c\u0627\u0626\u06d2 \u0646\u0642\u0634\u06c1 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u06cc\u06ba\u06d4<\/h4>\n<p>\u0633\u06cc\u0631\u06cc\u0644\u0627\u0626\u0632\u06cc\u0634\u0646 \u06a9\u06d2 \u0642\u0648\u0627\u0639\u062f \u06a9\u0648 \u062c\u0627\u0646\u06d2 \u0628\u063a\u06cc\u0631\u060c \u0627\u06cc\u062c\u0646\u0679 \u0688\u06cc\u0641\u0627\u0644\u0679 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4 <code>Map<string dynamic=\"\"\/><\/code>. \u0627\u06af\u0631 \u0622\u067e \u06a9\u06cc \u0679\u06cc\u0645 \u0627\u0633\u06d2 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u062a\u06cc \u06c1\u06d2\u06d4 <code>freezed<\/code> \u0627\u0648\u0631 <code>json_serializable<\/code>\u062a\u0645\u0627\u0645 \u062a\u06cc\u0627\u0631 \u06a9\u0631\u062f\u06c1 \u0645\u0627\u0688\u0644\u0632 \u06a9\u0648 \u0645\u06a9\u0645\u0644 \u0637\u0648\u0631 \u067e\u0631 \u062f\u0648\u0628\u0627\u0631\u06c1 \u0644\u06a9\u06be\u0646\u0627 \u067e\u0691\u06d2 \u06af\u0627\u06d4<\/p>\n<h4 id=\"heading-5-hardcoded-visual-values\">5. \u06c1\u0627\u0631\u0688 \u06a9\u0648\u0688 \u0634\u062f\u06c1 \u0628\u0635\u0631\u06cc \u0627\u0642\u062f\u0627\u0631\u06d4<\/h4>\n<p>\u0627\u06cc\u062c\u0646\u0679 \u06a9\u06cc \u0688\u06cc\u0641\u0627\u0644\u0679 \u0642\u062f\u0631 \u0627\u06cc\u06a9 \u0644\u063a\u0648\u06cc \u0642\u062f\u0631 \u06c1\u06d2\u06d4 <code>Color(0xFF6750A4)<\/code>, <code>EdgeInsets.all(16)<\/code>\u0627\u0648\u0631 <code>BorderRadius.circular(8)<\/code>. \u0627\u06af\u0631 \u0622\u067e \u06a9\u06d2 \u067e\u0631\u0648\u062c\u06cc\u06a9\u0679 \u0645\u06cc\u06ba \u062a\u06be\u06cc\u0645 \u0627\u06cc\u06a9\u0633\u0679\u06cc\u0646\u0634\u0646\u0632 \u0627\u0648\u0631 \u0648\u0642\u0641\u06c1 \u06a9\u0646\u0633\u0679\u0646\u0679 \u06a9\u06d2 \u0633\u0627\u062a\u06be \u0688\u06cc\u0632\u0627\u0626\u0646 \u0633\u0633\u0679\u0645 \u06c1\u06d2 \u062a\u0648 \u0627\u06cc\u062c\u0646\u0679 \u0627\u0646\u06c1\u06cc\u06ba \u0645\u06a9\u0645\u0644 \u0637\u0648\u0631 \u067e\u0631 \u0646\u0638\u0631 \u0627\u0646\u062f\u0627\u0632 \u06a9\u0631 \u062f\u06d2 \u06af\u0627\u06d4<\/p>\n<p>\u0628\u06c1\u062a \u0633\u06cc \u0679\u06cc\u0645\u06cc\u06ba \u062e\u0627\u0635 \u0637\u0648\u0631 \u067e\u0631 \u0648\u0636\u0627\u062d\u062a\u06cc \u0646\u0627\u0645\u0648\u06ba \u06a9\u06d2 \u0633\u0627\u062a\u06be \u062e\u0648\u062f \u062f\u0633\u062a\u0627\u0648\u06cc\u0632\u06cc \u06a9\u0648\u0688 \u06a9\u06d2 \u062d\u0642 \u0645\u06cc\u06ba \u06a9\u0648\u0688 \u06a9\u06d2 \u062a\u0628\u0635\u0631\u0648\u06ba \u0633\u06d2 \u06af\u0631\u06cc\u0632 \u06a9\u0631\u062a\u06cc \u06c1\u06cc\u06ba\u06d4 \u0627\u06cc\u062c\u0646\u0679 \u0628\u0637\u0648\u0631 \u0688\u06cc\u0641\u0627\u0644\u0679 \u0648\u0636\u0627\u062d\u062a\u06cc \u062a\u0634\u0631\u06cc\u062d\u0627\u062a \u0634\u0627\u0645\u0644 \u06a9\u0631\u062a\u06d2 \u06c1\u06cc\u06ba \u06a9\u06cc\u0648\u0646\u06a9\u06c1 \u0632\u06cc\u0627\u062f\u06c1 \u062a\u0631 \u062a\u0631\u0628\u06cc\u062a\u06cc \u0688\u06cc\u0679\u0627 \u0645\u06cc\u06ba \u0648\u0636\u0627\u062d\u062a\u06cc \u062a\u0634\u0631\u06cc\u062d\u0627\u062a \u0634\u0627\u0645\u0644 \u06c1\u0648\u062a\u06cc \u06c1\u06cc\u06ba \u062c\u0646 \u06a9\u06d2 \u0644\u06cc\u06d2 \u062c\u0627\u0626\u0632\u0648\u06ba \u06a9\u06d2 \u062f\u0631\u0645\u06cc\u0627\u0646 \u0635\u0641\u0627\u0626\u06cc \u06a9\u06cc \u0636\u0631\u0648\u0631\u062a \u06c1\u0648\u062a\u06cc \u06c1\u06d2\u06d4<\/p>\n<h4 id=\"heading-7-wrong-import-paths\">7. \u063a\u0644\u0637 \u062f\u0631\u0622\u0645\u062f\u06cc \u0631\u0627\u0633\u062a\u06c1\u06d4<\/h4>\n<p>\u0627\u06cc\u062c\u0646\u0679 \u0627\u0646\u062f\u0631\u0648\u0646\u06cc \u067e\u06cc\u06a9\u06cc\u062c \u06a9\u0627 \u0631\u0627\u0633\u062a\u06c1 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u062a\u0627 \u06c1\u06d2 (<code>package:myapp\/src\/internal\/models\/user.dart<\/code>\u0628\u06cc\u0631\u0644 \u0641\u0627\u0626\u0644 (<code>package:myapp\/features\/profile\/profile.dart<\/code>)\u060c \u0627\u0646\u062f\u0631\u0648\u0646\u06cc APIs \u06a9\u06d2 \u0644\u06cc\u06d2 \u063a\u06cc\u0631 \u0645\u0631\u0626\u06cc \u067e\u0627\u0628\u0646\u062f\u06cc\u0627\u06ba \u062a\u062e\u0644\u06cc\u0642 \u06a9\u0631\u062a\u0627 \u06c1\u06d2 \u062c\u0648 \u0686\u06be\u067e\u0646\u06d2 \u0686\u0627\u06c1\u0626\u06cc\u06ba\u06d4<\/p>\n<h4 id=\"heading-8-raw-exception-handling\">8. \u0645\u0642\u0627\u0645\u06cc \u0627\u0633\u062a\u062b\u0646\u06cc\u0670 \u06c1\u06cc\u0646\u0688\u0644\u0646\u06af\u06d4<\/h4>\n<p>\u063a\u0644\u0637\u06cc \u06a9\u06d2 \u0641\u0646 \u062a\u0639\u0645\u06cc\u0631 \u06a9\u0648 \u062c\u0627\u0646\u06d2 \u0628\u063a\u06cc\u0631\u060c \u0627\u06cc\u062c\u0646\u0679 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u062a\u0627 \u06c1\u06d2: <code>try-catch<\/code> \u062e\u0627\u0645 <code>Exception<\/code> \u06cc\u06c1 \u0679\u06cc\u0645 \u06a9\u06d2 \u0630\u0631\u06cc\u0639\u06d2 \u062f\u0627\u062e\u0644 \u06a9\u0631\u062f\u06c1 \u063a\u0644\u0637\u06cc \u06a9\u06d2 \u062f\u0631\u062c\u06c1 \u0628\u0646\u062f\u06cc \u06a9\u0648 \u0646\u0638\u0631 \u0627\u0646\u062f\u0627\u0632 \u06a9\u0631\u062a\u0627 \u06c1\u06d2 \u0627\u0648\u0631 \u06a9\u0648\u0688 \u0628\u06cc\u0633 \u0645\u06cc\u06ba \u063a\u0644\u0637\u06cc \u0633\u06d2 \u0646\u0645\u0679\u0646\u06d2 \u06a9\u0648 \u0645\u062a\u0636\u0627\u062f \u0628\u0646\u0627 \u062f\u06cc\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<h2 id=\"heading-how-skills-work-progressive-disclosure\">\u0679\u06cc\u06a9\u0646\u0627\u0644\u0648\u062c\u06cc \u06a9\u06cc\u0633\u06d2 \u06a9\u0627\u0645 \u06a9\u0631\u062a\u06cc \u06c1\u06d2: \u062a\u0631\u0642\u06cc \u067e\u0633\u0646\u062f \u0627\u0646\u06a9\u0634\u0627\u0641<\/h2>\n<p>\u0679\u06cc\u06a9\u0646\u0627\u0644\u0648\u062c\u06cc \u06a9\u06d2 \u067e\u06cc\u0686\u06be\u06d2 \u0645\u06cc\u06a9\u0627\u0646\u0632\u0645 \u062e\u0648\u0628\u0635\u0648\u0631\u062a \u0627\u0648\u0631 \u0645\u0648\u062b\u0631 \u06c1\u06cc\u06ba\u06d4 \u0633\u06cc\u0627\u0642 \u0648 \u0633\u0628\u0627\u0642 \u06a9\u06cc \u0648\u0646\u0688\u0648 \u0645\u06cc\u06ba \u062a\u0645\u0627\u0645 \u06a9\u0645\u0627\u0646\u0688\u0632 \u06a9\u0648 \u067e\u06c1\u0644\u06d2 \u0633\u06d2 \u0644\u0648\u0688 \u06a9\u0631\u0646\u06d2 \u06a9\u06d2 \u0628\u062c\u0627\u0626\u06d2\u060c \u0627\u06cc\u062c\u0646\u0679 \u067e\u06c1\u0644\u06d2 \u0635\u0631\u0641 \u0645\u06cc\u0679\u0627 \u0688\u06cc\u0679\u0627 \u067e\u0691\u06be\u062a\u0627 \u06c1\u06d2\u06d4 \u0628\u06be\u0627\u0631\u06cc\u060c \u062a\u0641\u0635\u06cc\u0644\u06cc \u06c1\u062f\u0627\u06cc\u0627\u062a \u0635\u0631\u0641 \u0627\u0633 \u0648\u0642\u062a \u062d\u0627\u0635\u0644 \u06a9\u0631\u06cc\u06ba \u062c\u0628 \u0622\u067e \u06a9\u0648 \u062f\u0631\u062d\u0642\u06cc\u0642\u062a \u06c1\u0627\u062a\u06be \u0645\u06cc\u06ba \u06a9\u0627\u0645 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0627\u0646 \u06a9\u06cc \u0636\u0631\u0648\u0631\u062a \u06c1\u0648\u06d4<\/p>\n<p>\u0641\u0644\u0679\u0631 \u062f\u0633\u062a\u0627\u0648\u06cc\u0632\u0627\u062a \u0627\u0633 \u06a9\u0648 &quot;\u062a\u0631\u0642\u06cc \u067e\u0633\u0646\u062f \u0627\u0646\u06a9\u0634\u0627\u0641&#8221; \u06a9\u06d2 \u0637\u0648\u0631 \u067e\u0631 \u0628\u06cc\u0627\u0646 \u06a9\u0631\u062a\u06cc \u06c1\u06cc\u06ba\u060c \u062c\u06cc\u0633\u0627 \u06a9\u06c1 \u0641\u0644\u0679\u0631 \u0645\u06cc\u06ba \u06c1\u06cc \u0633\u0633\u062a \u0644\u0648\u0688\u0646\u06af\u06d4<\/p>\n<p>\u06cc\u06c1 \u0688\u06cc\u0632\u0627\u0626\u0646 \u0627\u06cc\u06a9 \u062d\u0642\u06cc\u0642\u06cc \u0645\u0633\u0626\u0644\u06c1 \u062d\u0644 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4 AI \u0627\u06cc\u062c\u0646\u0679 \u06a9\u06cc \u0633\u06cc\u0627\u0642 \u0648 \u0633\u0628\u0627\u0642 \u06a9\u06cc \u0648\u0646\u0688\u0648 \u0644\u0627\u0645\u062d\u062f\u0648\u062f \u0646\u06c1\u06cc\u06ba \u06c1\u06d2\u06d4 \u0627\u06af\u0631 \u06c1\u0631 \u06c1\u0646\u0631 \u06c1\u0631 \u06a9\u0627\u0645 \u06a9\u06d2 \u0644\u06cc\u06d2 \u067e\u0648\u0631\u0627 \u0645\u0648\u0627\u062f \u0644\u0648\u0688 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u060c \u062a\u0648 \u0627\u06cc\u062c\u0646\u0679 \u063a\u06cc\u0631 \u0645\u062a\u0639\u0644\u0642\u06c1 \u0645\u0639\u0644\u0648\u0645\u0627\u062a \u067e\u0631 \u0627\u067e\u0646\u0627 \u0633\u06cc\u0627\u0642 \u0648 \u0633\u0628\u0627\u0642 \u06a9\u0627 \u0628\u062c\u0679 \u06a9\u06be\u0627 \u062c\u0627\u0626\u06cc\u06ba \u06af\u06d2\u06d4 \u062c\u0628 \u0622\u067e \u06a9\u0633\u06cc \u0627\u06cc\u062c\u0646\u0679 \u0633\u06d2 \u06cc\u0648\u0646\u0679 \u0679\u06cc\u0633\u0679 \u0644\u06a9\u06be\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u06a9\u06c1\u062a\u06d2 \u06c1\u06cc\u06ba\u060c \u062a\u0648 \u0646\u06cc\u0648\u06cc\u06af\u06cc\u0634\u0646 \u06a9\u06cc \u0645\u06c1\u0627\u0631\u062a \u06a9\u0648 \u0633\u06cc\u0627\u0642 \u0648 \u0633\u0628\u0627\u0642 \u06a9\u06d2 \u0645\u0637\u0627\u0628\u0642 \u06c1\u0648\u0646\u06d2 \u06a9\u06cc \u0636\u0631\u0648\u0631\u062a \u0646\u06c1\u06cc\u06ba \u06c1\u06d2\u06d4 \u0631\u0648\u0679\u0646\u06af \u062a\u0631\u062a\u06cc\u0628 \u062f\u06cc\u062a\u06d2 \u0648\u0642\u062a \u062c\u0627\u0646\u0686 \u06a9\u06cc \u062a\u06a9\u0646\u06cc\u06a9\u0648\u06ba \u06a9\u0648 \u0633\u06cc\u0627\u0642 \u0648 \u0633\u0628\u0627\u0642 \u0645\u06cc\u06ba \u06c1\u0648\u0646\u06d2 \u06a9\u06cc \u0636\u0631\u0648\u0631\u062a \u0646\u06c1\u06cc\u06ba \u06c1\u06d2\u06d4<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/umang.pk\/wp-content\/uploads\/2026\/09\/1788658837_179_\u0627\u06cc\u062c\u0646\u0679\u06cc-\u0641\u0644\u0679\u0631-\u0688\u0648\u06cc\u0644\u067e\u0645\u0646\u0679-\u0645\u06cc\u06ba-\u0679\u06cc\u06a9\u0646\u0627\u0644\u0648\u062c\u06cc-\u06a9\u0627-\u0627\u0633\u062a\u0639\u0645\u0627\u0644-\u06a9\u06cc\u0633\u06d2-\u06a9\u0631\u06cc\u06ba-\u0688\u0648\u06cc\u0644\u067e\u0631\u0632.png\" alt=\"AI \u0627\u06cc\u062c\u0646\u0679 \u0679\u06cc\u06a9\u0646\u0627\u0644\u0648\u062c\u06cc \u06a9\u06d2 \u0628\u062a\u062f\u0631\u06cc\u062c \u0631\u0648\u0644 \u0622\u0624\u0679 \u06a9\u0648 \u0648\u0627\u0636\u062d \u06a9\u0631\u0646\u06d2 \u0648\u0627\u0644\u0627 \u0627\u06cc\u06a9 \u062f\u0648 \u0642\u062f\u0645\u06cc \u062e\u0627\u06a9\u06c1\u06d4 \u0641\u06cc\u0632 1 \u0638\u0627\u06c1\u0631 \u06a9\u0631\u062a\u0627 \u06c1\u06d2 \u06a9\u06c1 \u0627\u06cc\u062c\u0646\u0679 \u0635\u0631\u0641 \u06c1\u0631 \u0627\u0633\u06a9\u0644 \u0641\u0627\u0626\u0644 \u06a9\u0627 \u062f\u06cc\u0628\u0627\u0686\u06c1 \u067e\u0691\u06be\u062a\u0627 \u06c1\u06d2 \u0627\u0648\u0631 \u0633\u06cc\u0627\u0642 \u0648 \u0633\u0628\u0627\u0642 \u06a9\u06d2 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0648 \u06c1\u0644\u06a9\u0627 \u0631\u06a9\u06be\u062a\u0627 \u06c1\u06d2\u06d4 \u0641\u06cc\u0632 2 \u0645\u062a\u0639\u0644\u0642\u06c1 \u0645\u06c1\u0627\u0631\u062a\u0648\u06ba \u0633\u06d2 \u0635\u0627\u0631\u0641 \u06a9\u06cc \u062f\u0631\u062e\u0648\u0627\u0633\u062a\u0648\u06ba \u0633\u06d2 \u0645\u0645\u0627\u062b\u0644 \u0627\u06cc\u062c\u0646\u0679 \u06a9\u0648 \u062f\u06a9\u06be\u0627\u062a\u0627 \u06c1\u06d2\u060c \u063a\u06cc\u0631 \u0645\u062a\u0639\u0644\u0642\u06c1 \u0645\u06c1\u0627\u0631\u062a\u0648\u06ba \u06a9\u0648 \u0686\u06be\u0648\u0691 \u06a9\u0631 \u067e\u0648\u0631\u0627 \u0645\u0648\u0627\u062f \u0644\u0648\u0688 \u06a9\u0631 \u0631\u06c1\u0627 \u06c1\u06d2\u06d4 \u0646\u062a\u06cc\u062c\u06d2 \u06a9\u06d2 \u0637\u0648\u0631 \u067e\u0631\u060c \u0622\u067e \u063a\u06cc\u0631 \u0636\u0631\u0648\u0631\u06cc \u0633\u06cc\u0627\u0642 \u0648 \u0633\u0628\u0627\u0642 \u06a9\u06d2 \u0628\u063a\u06cc\u0631 \u0645\u062a\u0639\u0644\u0642\u06c1 \u0645\u06c1\u0627\u0631\u062a \u062d\u0627\u0635\u0644 \u06a9\u0631\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4\" style=\"display:block;margin:0 auto\" width=\"600\" height=\"400\" loading=\"lazy\" title=\"\"><\/p>\n<p>\u062a\u0631\u0642\u06cc \u067e\u0633\u0646\u062f \u0627\u0646\u06a9\u0634\u0627\u0641 \u0627\u06cc\u062c\u0646\u0679 \u06a9\u06cc \u0635\u0648\u0631\u062a\u062d\u0627\u0644 \u06a9\u0648 \u0641\u0648\u06a9\u0633 \u0645\u06cc\u06ba \u0631\u06a9\u06be\u062a\u0627 \u06c1\u06d2\u06d4 \u0633\u0628 \u0633\u06d2 \u067e\u06c1\u0644\u06d2\u060c \u0627\u06cc\u062c\u0646\u0679 \u062a\u0645\u0627\u0645 \u062f\u0633\u062a\u06cc\u0627\u0628 \u0679\u06cc\u06a9\u0646\u0627\u0644\u0648\u062c\u06cc\u0632 \u0633\u06d2 \u06c1\u0644\u06a9\u06d2 \u0648\u0632\u0646 \u06a9\u06d2 \u0645\u06cc\u0679\u0627 \u0688\u06cc\u0679\u0627 \u06a9\u0648 \u0627\u0646\u0688\u06cc\u06a9\u0633 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4 \u062c\u0628 \u06a9\u0648\u0626\u06cc \u06a9\u0627\u0645 \u0622\u062a\u0627 \u06c1\u06d2\u060c \u062a\u0648 \u06c1\u0645 \u0627\u0633 \u06a9\u06cc \u062a\u0641\u0635\u06cc\u0644 \u06a9\u0627 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u0627\u0633 \u0628\u0627\u062a \u06a9\u06cc \u0646\u0634\u0627\u0646\u062f\u06c1\u06cc \u06a9\u0631\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u06a9\u0631\u062a\u06d2 \u06c1\u06cc\u06ba \u06a9\u06c1 \u06a9\u0648\u0646 \u0633\u06cc \u0645\u06c1\u0627\u0631\u062a\u06cc\u06ba \u0634\u0627\u0645\u0644 \u06c1\u06cc\u06ba \u0627\u0648\u0631 \u0635\u0631\u0641 \u0645\u06a9\u0645\u0644 \u06c1\u062f\u0627\u06cc\u0627\u062a \u0644\u0648\u0688 \u06a9\u0631\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4 \u0627\u06cc\u062c\u0646\u0679\u0648\u06ba \u06a9\u0648 \u0627\u0646 \u06a9\u06d2 \u06a9\u0627\u0645\u0648\u06ba \u06a9\u06d2 \u0644\u06cc\u06d2 \u062a\u0641\u0635\u06cc\u0644\u06cc \u06c1\u062f\u0627\u06cc\u0627\u062a \u0641\u0631\u0627\u06c1\u0645 \u06a9\u0631\u062a\u06d2 \u06c1\u0648\u0626\u06d2 \u0633\u06cc\u0627\u0642 \u0648 \u0633\u0628\u0627\u0642 \u06a9\u06d2 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0648 \u06a9\u0645 \u06a9\u0631\u062a\u06d2 \u06c1\u0648\u0626\u06d2 \u063a\u06cc\u0631 \u0645\u062a\u0639\u0644\u0642\u06c1 \u0645\u06c1\u0627\u0631\u062a\u06cc\u06ba \u0627\u062a\u0627\u0631\u06cc \u062c\u0627\u062a\u06cc \u06c1\u06cc\u06ba\u06d4<\/p>\n<p>\u0627\u0633 \u062a\u0631\u0642\u06cc \u067e\u0633\u0646\u062f \u0627\u0646\u06a9\u0634\u0627\u0641\u06cc \u0645\u0627\u0688\u0644 \u06a9\u0627 \u0645\u0637\u0644\u0628 \u06c1\u06d2 \u06a9\u06c1 \u0622\u067e \u0633\u06cc\u0627\u0642 \u0648 \u0633\u0628\u0627\u0642 \u06a9\u06d2 \u0632\u06cc\u0627\u062f\u06c1 \u0628\u06c1\u0627\u0624 \u06a9\u06cc \u0641\u06a9\u0631 \u06a9\u06cc\u06d2 \u0628\u063a\u06cc\u0631 \u0627\u067e\u0646\u06d2 \u067e\u0631\u0648\u062c\u06cc\u06a9\u0679 \u0645\u06cc\u06ba \u0628\u06c1\u062a \u0633\u06cc \u0679\u06cc\u06a9\u0646\u0627\u0644\u0648\u062c\u06cc\u0632 \u0631\u06a9\u06be \u0633\u06a9\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4 20 \u0645\u06c1\u0627\u0631\u062a\u0648\u06ba \u06a9\u0627 \u06c1\u0648\u0646\u0627 \u0627\u06cc\u06a9 \u0645\u06c1\u0627\u0631\u062a \u0631\u06a9\u06be\u0646\u06d2 \u0633\u06d2 20 \u06af\u0646\u0627 \u0632\u06cc\u0627\u062f\u06c1 \u0645\u06c1\u0646\u06af\u0627 \u0646\u06c1\u06cc\u06ba \u06c1\u06d2\u06d4 \u06a9\u0633\u06cc \u062e\u0627\u0635 \u06a9\u0627\u0645 \u06a9\u06d2 \u0644\u06cc\u06d2\u060c \u0635\u0631\u0641 \u0645\u062a\u0639\u0644\u0642\u06c1 \u0633\u0628 \u0633\u06cc\u0679 \u0644\u0648\u0688 \u06a9\u06cc\u0627 \u062c\u0627\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<h2 id=\"heading-the-anatomy-of-a-skill-file\">\u0645\u06c1\u0627\u0631\u062a \u06a9\u06cc \u0641\u0627\u0626\u0644 \u06a9\u0627 \u062a\u062c\u0632\u06cc\u06c1<\/h2>\n<p>\u062a\u0645\u0627\u0645 \u0679\u06cc\u06a9\u0646\u0627\u0644\u0648\u062c\u06cc\u0632 \u0627\u06cc\u06a9 \u0645\u062e\u0635\u0648\u0635 \u0688\u06be\u0627\u0646\u0686\u06d2 \u06a9\u06cc \u067e\u06cc\u0631\u0648\u06cc \u06a9\u0631\u062a\u06cc \u06c1\u06cc\u06ba\u06d4 \u0645\u0624\u062b\u0631 \u062a\u06a9\u0646\u06cc\u06a9\u0648\u06ba \u06a9\u0648 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0627\u0633 \u0688\u06be\u0627\u0646\u0686\u06d2 \u06a9\u06cc \u06af\u06c1\u0631\u06cc \u0633\u0645\u062c\u06be \u0627\u06cc\u06a9 \u0634\u0631\u0637 \u06c1\u06d2\u06d4<\/p>\n<pre><code class=\"language-markdown\">---\nname: skill-name-in-kebab-case\ndescription: A clear, specific description that answers: what does this skill cover,\nwhen should it be applied, and what trigger words indicate this task needs this skill?\nThis is the ONLY part the agent reads when deciding whether this skill is relevant.\naliases: [alternative-name, another-name]\nsources: [chat, code]\n---\n\n# Skill Title\n\nBrief introduction of what this skill covers and why it exists.\n\n## First Major Section\n\nContent with specific, actionable rules.\n\n## Second Major Section\n\nMore rules, examples, counterexamples.\n\n## Code Examples\n\nConcrete code demonstrating the patterns.\n<\/code><\/pre>\n<h3 id=\"heading-the-frontmatter-block-in-detail\">\u0641\u0631\u0646\u0679 \u0645\u06cc\u0679\u0631 \u0628\u0644\u0627\u06a9 \u06a9\u06cc \u062a\u0641\u0635\u06cc\u0644\u0627\u062a<\/h3>\n<pre><code class=\"language-markdown\">---\nname: flutter-file-organization\ndescription: Organize and split Flutter\/Dart files while preserving StatefulWidget\nand State relationships. Use when creating, refactoring, splitting, or reorganizing\nDart files and classes. Applies whenever a new screen, widget, model, or Bloc file\nis being created or an existing file is being restructured.\naliases: [flutter-files, dart-organization]\nsources: [chat, code]\n---\n<\/code><\/pre>\n<p><code>name<\/code>    \u067e\u0648\u0631\u06d2 \u067e\u0631\u0648\u062c\u06cc\u06a9\u0679 \u0645\u06cc\u06ba \u0627\u0633 \u0645\u06c1\u0627\u0631\u062a \u06a9\u06d2 \u0644\u06cc\u06d2 \u0627\u06cc\u06a9 \u0645\u0646\u0641\u0631\u062f \u0634\u0646\u0627\u062e\u062a \u06a9\u0646\u0646\u062f\u06c1\u06d4 \u06cc\u06c1 \u06a9\u0628\u0627\u0628 \u0627\u0634\u0627\u0631\u06d2 \u06a9\u0646\u0648\u0646\u0634\u0646 \u06a9\u06cc \u067e\u06cc\u0631\u0648\u06cc \u06a9\u0631\u062a\u0627 \u06c1\u06d2 (\u0686\u06be\u0648\u0679\u06d2 \u062d\u0631\u0648\u0641 \u06a9\u0648 \u06c1\u0627\u0626\u0641\u0646 \u0633\u06d2 \u0627\u0644\u06af \u06a9\u06cc\u0627 \u062c\u0627\u062a\u0627 \u06c1\u06d2) \u0627\u0648\u0631 \u0639\u0627\u0645 \u0637\u0648\u0631 \u067e\u0631 \u067e\u0644\u06cc\u0679 \u0641\u0627\u0631\u0645 \u06cc\u0627 \u0688\u0648\u0645\u06cc\u0646 (<code>flutter-<\/code>, <code>dart-<\/code>, <code>react-<\/code>\u0648\u063a\u06cc\u0631\u06c1)\u06d4 \u0646\u0627\u0645 \u06a9\u0627 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u0627\u06cc\u062c\u0646\u0679 \u06a9\u06d2 \u0630\u0631\u06cc\u0639\u06c1 \u062a\u062e\u0645\u06cc\u0646\u06c1 \u0645\u06cc\u06ba \u0645\u06c1\u0627\u0631\u062a \u06a9\u0627 \u062d\u0648\u0627\u0644\u06c1 \u062f\u06cc\u062a\u06d2 \u0648\u0642\u062a \u0627\u0648\u0631 CLI \u06a9\u06d2 \u0630\u0631\u06cc\u0639\u06c1 \u0645\u06c1\u0627\u0631\u062a \u06a9\u0627 \u0627\u0646\u062a\u0638\u0627\u0645 \u06a9\u0631\u062a\u06d2 \u0648\u0642\u062a \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u06cc\u0627 \u062c\u0627\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<p><code>description<\/code>    \u06cc\u06c1 \u067e\u0648\u0631\u06cc \u0641\u0627\u0626\u0644 \u0645\u06cc\u06ba \u0633\u0628 \u0633\u06d2 \u0627\u06c1\u0645 \u0641\u06cc\u0644\u0688 \u06c1\u06d2\u06d4 \u06cc\u06c1 \u0648\u0627\u062d\u062f \u0641\u06cc\u0644\u0688 \u06c1\u06d2 \u062c\u0648 \u0627\u06cc\u062c\u0646\u0679 \u06c1\u0644\u06a9\u06d2 \u0648\u0632\u0646 \u06a9\u06d2 \u067e\u06c1\u0644\u06d2 \u0645\u0631\u062d\u0644\u06d2 \u06a9\u06cc \u0627\u0634\u0627\u0631\u06cc\u06c1 \u0633\u0627\u0632\u06cc \u06a9\u06d2 \u062f\u0648\u0631\u0627\u0646 \u067e\u0691\u06be\u062a\u0627 \u06c1\u06d2\u06d4 \u0627\u06cc\u06a9 \u0646\u0627\u0642\u0635 \u062a\u062d\u0631\u06cc\u0631\u06cc \u0648\u0636\u0627\u062d\u062a \u06a9\u0627 \u0645\u0637\u0644\u0628 \u06c1\u06d2 \u06a9\u06c1 \u0627\u06cc\u06a9 \u0645\u06a9\u0645\u0644 \u062a\u062d\u0631\u06cc\u0631\u06cc \u0645\u06c1\u0627\u0631\u062a \u06a9\u0627 \u0628\u0627\u0688\u06cc \u0644\u0648\u0688 \u0646\u06c1\u06cc\u06ba \u06c1\u0648\u06af\u0627\u06d4 \u0648\u0636\u0627\u062d\u062a \u0645\u06cc\u06ba \u062a\u06cc\u0646 \u0633\u0648\u0627\u0644\u0648\u06ba \u06a9\u0627 \u062c\u0648\u0627\u0628 \u06c1\u0648\u0646\u0627 \u0686\u0627\u06c1\u06cc\u06d2\u06d4 \u0627\u0633 \u0645\u06c1\u0627\u0631\u062a \u06a9\u0627 \u0627\u062d\u0627\u0637\u06c1 \u06a9\u06cc\u0627 \u06c1\u06d2\u060c \u0627\u0633\u06d2 \u06a9\u0628 \u0645\u062a\u062d\u0631\u06a9 \u06a9\u06cc\u0627 \u062c\u0627\u0646\u0627 \u0686\u0627\u06c1\u06cc\u06d2\u060c \u0627\u0648\u0631 \u0648\u06c1 \u06a9\u0648\u0646 \u0633\u06d2 \u0645\u062e\u0635\u0648\u0635 \u0679\u0631\u06af\u0631 \u0627\u0644\u0641\u0627\u0638 \u06cc\u0627 \u062c\u0645\u0644\u06d2 \u06c1\u06cc\u06ba \u062c\u0648 \u0627\u0633 \u06a9\u06cc \u0645\u0637\u0627\u0628\u0642\u062a \u06a9\u06cc \u0646\u0634\u0627\u0646\u062f\u06c1\u06cc \u06a9\u0631\u062a\u06d2 \u06c1\u06cc\u06ba\u061f \u063a\u0648\u0631 \u06a9\u0631\u06cc\u06ba \u06a9\u06c1 \u0645\u062b\u0627\u0644 \u0645\u06cc\u06ba \u0641\u0627\u0626\u0644 \u06a9\u06cc \u0627\u0642\u0633\u0627\u0645 \u06a9\u06cc \u0627\u06cc\u06a9 \u062c\u0627\u0645\u0639 \u0641\u06c1\u0631\u0633\u062a\u060c \u0648\u0636\u0627\u062d\u062a \u06a9\u06d2 \u0633\u0627\u062a\u06be &quot;\u062a\u062e\u0644\u06cc\u0642\u060c \u0631\u06cc \u0641\u06cc\u06a9\u0679\u0631\u0646\u06af\u060c \u062a\u0642\u0633\u06cc\u0645 \u06cc\u0627 \u062a\u0646\u0638\u06cc\u0645 \u0646\u0648 \u06a9\u06d2 \u062f\u0648\u0631\u0627\u0646 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u06cc\u0627 \u062c\u0627\u062a\u0627 \u06c1\u06d2&#8221; \u06a9\u06cc\u0633\u06d2 \u0634\u0627\u0645\u0644 \u06c1\u06d2\u06d4 \u06c1\u0631 \u062c\u0645\u0644\u06c1 \u0627\u06cc\u06a9 \u0645\u0645\u06a9\u0646\u06c1 \u0645\u062d\u0631\u06a9 \u06c1\u06d2 \u062c\u0648 \u0627\u06cc\u062c\u0646\u0679\u0648\u06ba \u06a9\u0648 \u0627\u0633 \u06c1\u0646\u0631 \u0633\u06d2 \u06a9\u0627\u0645 \u06a9\u06cc \u062a\u0641\u0635\u06cc\u0644 \u0633\u06d2 \u0645\u0644\u0646\u06d2 \u0645\u06cc\u06ba \u0645\u062f\u062f \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<p><code>aliases<\/code>    \u0627\u0633 \u0645\u06c1\u0627\u0631\u062a \u06a9\u06d2 \u0644\u06cc\u06d2 \u0627\u06cc\u06a9 \u0645\u062a\u0628\u0627\u062f\u0644 \u0646\u0627\u0645 \u0641\u0631\u0627\u06c1\u0645 \u06a9\u0631\u062a\u0627 \u06c1\u06d2 \u062c\u0633\u06d2 \u0627\u06cc\u062c\u0646\u0679 \u0627\u0633 \u06a9\u0627 \u062d\u0648\u0627\u0644\u06c1 \u062f\u06cc\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631 \u0633\u06a9\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4 \u06cc\u06c1 \u0627\u062e\u062a\u06cc\u0627\u0631\u06cc \u06c1\u06d2\u060c \u0644\u06cc\u06a9\u0646 \u0645\u0641\u06cc\u062f \u06c1\u06d2 \u0627\u06af\u0631 \u0645\u06c1\u0627\u0631\u062a \u06a9\u0648 \u0645\u062e\u062a\u0644\u0641 \u062d\u0627\u0644\u0627\u062a \u0645\u06cc\u06ba \u06a9\u0633\u06cc \u0627\u0648\u0631 \u0686\u06cc\u0632 \u0633\u06d2 \u0637\u0644\u0628 \u06a9\u06cc\u0627 \u062c\u0627\u0626\u06d2\u06d4<\/p>\n<p><code>sources<\/code>    \u0627\u0634\u0627\u0631\u06c1 \u06a9\u0631\u062a\u0627 \u06c1\u06d2 \u06a9\u06c1 \u06cc\u06c1 \u0645\u06c1\u0627\u0631\u062a \u06a9\u06c1\u0627\u06ba \u0633\u06d2 \u0622\u062a\u06cc \u06c1\u06d2\u06d4 \u062d\u0633\u0628 \u0636\u0631\u0648\u0631\u062a \u0679\u06cc\u0645 \u06a9\u06cc \u0645\u06c1\u0627\u0631\u062a\u0648\u06ba \u06a9\u06d2 \u0644\u06cc\u06d2\u060c \u0648\u06c1 \u0639\u0627\u0645 \u0637\u0648\u0631 \u067e\u0631 \u0634\u0627\u0645\u0644 \u06c1\u06cc\u06ba: <code>[chat]<\/code>. \u067e\u06cc\u06a9\u06cc\u062c \u06a9\u06d2 \u0645\u0635\u0646\u0641 \u06a9\u06cc \u0637\u0631\u0641 \u0633\u06d2 \u0641\u0631\u0627\u06c1\u0645 \u06a9\u0631\u062f\u06c1 \u0679\u06cc\u06a9\u0646\u0627\u0644\u0648\u062c\u06cc\u0632 \u06a9\u06d2 \u0644\u06cc\u06d2\u060c \u0627\u0633 \u0645\u06cc\u06ba \u0634\u0627\u0645\u0644 \u06c1\u0648 \u0633\u06a9\u062a\u06d2 \u06c1\u06cc\u06ba: <code>[package]<\/code>.<\/p>\n<h3 id=\"heading-the-skill-body-structure\">\u0645\u06c1\u0627\u0631\u062a \u062c\u0633\u0645\u0627\u0646\u06cc \u0633\u0627\u062e\u062a<\/h3>\n<p>\u0627\u0633\u06a9\u0644 \u0628\u0627\u0688\u06cc \u0645\u062e\u0635\u0648\u0635 \u0633\u0627\u062e\u062a\u06cc \u0627\u0635\u0648\u0644\u0648\u06ba \u06a9\u06d2 \u0633\u0627\u062a\u06be \u062e\u0627\u0644\u0635 \u0645\u0627\u0631\u06a9 \u0688\u0627\u0624\u0646 \u06c1\u06d2 \u062c\u0648 \u0627\u0633\u06d2 \u0627\u06cc\u062c\u0646\u0679 \u06a9\u06d2 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0633\u0628 \u0633\u06d2 \u0632\u06cc\u0627\u062f\u06c1 \u0645\u0624\u062b\u0631 \u0628\u0646\u0627\u062a\u06cc \u06c1\u06d2\u06d4<\/p>\n<pre><code class=\"language-markdown\"># Title Section (h1)\nBrief context-setting paragraph. What problem does this skill solve? Why does it exist?\nKeep this under three sentences.\n\n## Core Rules (h2 sections)\nNumbered or bulleted lists of specific, verifiable rules.\nEach rule should be independently actionable.\n\n## Named Sub-Pattern (h2 sections)\nMore specific guidance for a particular sub-domain of the skill.\nLead with the rule, then show the wrong pattern, then show the right pattern.\n\n## Code Example (h2 sections)\nComplete, runnable code that demonstrates the most important patterns.\nAlways show both wrong and right versions for patterns that agents commonly get wrong.\n<\/code><\/pre>\n<p>\u0627\u06cc\u062c\u0646\u0679 \u0645\u06c1\u0627\u0631\u062a \u06a9\u06cc \u062a\u0631\u062a\u06cc\u0628 \u06a9\u0648 \u0633\u0645\u062c\u06be\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0645\u0648\u0636\u0648\u0639 \u06a9\u06cc \u0633\u0627\u062e\u062a \u06a9\u0648 \u062a\u0644\u0627\u0634 \u06a9\u0631\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4 \u0648\u0627\u0636\u062d <code>##<\/code> \u0627\u06cc\u06a9 \u0639\u0646\u0648\u0627\u0646 \u062c\u0633 \u0645\u06cc\u06ba \u0630\u06cc\u0644\u06cc \u0639\u0646\u0648\u0627\u0646 \u06a9\u0627 \u0627\u062d\u0627\u0637\u06c1 \u06a9\u06cc\u0627 \u06af\u06cc\u0627 \u06c1\u06d2 \u0627\u06cc\u062c\u0646\u0679\u0648\u06ba \u06a9\u0648 \u0628\u0691\u06cc \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u06a9\u06d2 \u0627\u0646\u062f\u0631 \u0645\u062e\u0635\u0648\u0635 \u062d\u0635\u06d2 \u062a\u0644\u0627\u0634 \u06a9\u0631\u0646\u06d2 \u0645\u06cc\u06ba \u0645\u062f\u062f \u06a9\u0631\u062a\u0627 \u06c1\u06d2 \u062c\u0648 \u0645\u0648\u062c\u0648\u062f\u06c1 \u0630\u06cc\u0644\u06cc \u06a9\u0627\u0645 \u0633\u06d2 \u0645\u062a\u0639\u0644\u0642 \u06c1\u06cc\u06ba\u06d4<\/p>\n<h2 id=\"heading-installing-official-flutter-and-dart-skills\">\u0622\u0641\u06cc\u0634\u0644 \u0641\u0644\u0679\u0631 \u0627\u0648\u0631 \u0688\u0627\u0631\u0679 \u0679\u06cc\u06a9\u0646\u0627\u0644\u0648\u062c\u06cc\u0632 \u0627\u0646\u0633\u0679\u0627\u0644 \u06a9\u0631\u06cc\u06ba\u06d4<\/h2>\n<p>\u0641\u0644\u0679\u0631 \u0627\u0648\u0631 \u0688\u0627\u0631\u0679 \u0679\u06cc\u0645\u06cc\u06ba \u0628\u0627\u0636\u0627\u0628\u0637\u06c1 \u062a\u06a9\u0646\u06cc\u06a9\u06cc \u0630\u062e\u06cc\u0631\u06d2 \u06a9\u0648 \u0628\u0631\u0642\u0631\u0627\u0631 \u0631\u06a9\u06be\u062a\u06cc \u06c1\u06cc\u06ba \u062c\u0648 \u0645\u0627\u062d\u0648\u0644\u06cc\u0627\u062a\u06cc \u0646\u0638\u0627\u0645 \u0645\u06cc\u06ba \u0628\u06c1\u062a\u0631\u06cc\u0646 \u0637\u0631\u06cc\u0642\u0648\u06ba \u06a9\u06d2 \u0628\u0627\u0631\u06d2 \u0645\u06cc\u06ba \u0633\u0627\u0644\u0648\u06ba \u06a9\u06d2 \u0639\u0644\u0645 \u06a9\u06cc \u0646\u0645\u0627\u0626\u0646\u062f\u06af\u06cc \u06a9\u0631\u062a\u06cc \u06c1\u06cc\u06ba\u06d4 \u06cc\u06c1 \u0646\u0642\u0637\u06c1 \u0622\u063a\u0627\u0632 \u06c1\u06d2\u06d4<\/p>\n<h3 id=\"heading-installing-flutter-skills\">\u0641\u0644\u0679\u0631 \u0633\u06a9\u0644\u0632 \u0627\u0646\u0633\u0679\u0627\u0644 \u06a9\u0631\u06cc\u06ba\u06d4<\/h3>\n<pre><code class=\"language-bash\">npx skills add flutter\/agent-plugins --skill '*' --agent universal --yes\n<\/code><\/pre>\n<p><code>npx skills add<\/code>    \u067e\u06be\u0627\u0646\u0633\u06cc <code>skills<\/code> npm \u06a9\u06d2 \u0630\u0631\u06cc\u0639\u06d2 \u0627\u06cc\u06a9 CLI \u0679\u0648\u0644 \u062c\u0633 \u0645\u06cc\u06ba \u0645\u0633\u062a\u0642\u0644 \u0627\u0646\u0633\u0679\u0627\u0644\u06cc\u0634\u0646 \u06a9\u06cc \u0636\u0631\u0648\u0631\u062a \u0646\u06c1\u06cc\u06ba \u06c1\u06d2\u06d4 <code>flutter\/agent-plugins<\/code> GitHub \u0631\u06cc\u067e\u0648\u0632\u0679\u0631\u06cc \u06a9\u0627 \u0631\u0627\u0633\u062a\u06c1 \u062c\u06c1\u0627\u06ba \u0641\u0644\u0679\u0631 \u0679\u06cc\u0645 \u0622\u0641\u06cc\u0634\u0644 \u0641\u0644\u0679\u0631 \u0679\u06cc\u06a9\u0646\u0627\u0644\u0648\u062c\u06cc \u06a9\u0648 \u0628\u0631\u0642\u0631\u0627\u0631 \u0631\u06a9\u06be\u062a\u06cc \u06c1\u06d2\u06d4 <code>--skill '*'<\/code> \u06cc\u06c1 \u0627\u06cc\u06a9 \u0648\u0627\u0626\u0644\u0688 \u06a9\u0627\u0631\u0688 \u06c1\u06d2 \u062c\u0648 \u06a9\u0633\u06cc \u0645\u062e\u0635\u0648\u0635 \u0679\u06cc\u06a9\u0646\u0627\u0644\u0648\u062c\u06cc \u06a9\u0648 \u0645\u0646\u062a\u062e\u0628 \u06a9\u0631\u0646\u06d2 \u06a9\u06d2 \u0628\u062c\u0627\u0626\u06d2 \u062a\u0645\u0627\u0645 \u062f\u0633\u062a\u06cc\u0627\u0628 \u0679\u06cc\u06a9\u0646\u0627\u0644\u0648\u062c\u06cc\u0632 \u06a9\u0648 \u0630\u062e\u06cc\u0631\u06c1 \u0645\u06cc\u06ba \u0627\u0646\u0633\u0679\u0627\u0644 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4 <code>--agent universal<\/code> \u0645\u06cc\u06ba \u0627\u067e\u0646\u06cc \u0635\u0644\u0627\u062d\u06cc\u062a\u06cc\u06ba \u0631\u06a9\u06be\u06cc\u06ba\u06d4 <code>.agents\/skills\/<\/code> \u0688\u0627\u0626\u0631\u06cc\u06a9\u0679\u0631\u06cc \u0648\u06c1 \u0639\u0627\u0644\u0645\u06af\u06cc\u0631 \u0645\u0642\u0627\u0645 \u06c1\u06d2 \u062c\u06c1\u0627\u06ba \u062a\u0645\u0627\u0645 \u06c1\u0645 \u0622\u06c1\u0646\u06af \u0627\u06cc\u062c\u0646\u0679 \u0646\u0638\u0631 \u0622\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4 <code>--yes<\/code> \u0622\u067e \u0627\u0646\u0679\u0631\u0627\u06cc\u06a9\u0679\u0648 \u06a9\u0646\u0641\u0631\u0645\u06cc\u0634\u0646 \u067e\u0631\u0627\u0645\u067e\u0679 \u06a9\u0648 \u0646\u0638\u0631\u0627\u0646\u062f\u0627\u0632 \u06a9\u0631\u062a\u06d2 \u06c1\u0648\u0626\u06d2 \u0627\u0633 \u06a9\u0645\u0627\u0646\u0688 \u06a9\u0648 \u0627\u067e\u0646\u06d2 \u067e\u0631\u0648\u062c\u06cc\u06a9\u0679 \u0633\u06cc\u0679 \u0627\u067e \u0627\u0633\u06a9\u0631\u067e\u0679 \u06cc\u0627 \u0645\u06cc\u06a9 \u0641\u0627\u0626\u0644 \u0645\u06cc\u06ba \u0645\u062d\u0641\u0648\u0638 \u0637\u0631\u06cc\u0642\u06d2 \u0633\u06d2 \u0631\u06a9\u06be \u0633\u06a9\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4<\/p>\n<p>\u0627\u0633 \u06a9\u0645\u0627\u0646\u0688 \u06a9\u0648 \u0686\u0644\u0627\u0646\u06d2 \u06a9\u06d2 \u0628\u0639\u062f\u060c \u0622\u067e \u06a9\u0627 \u067e\u0631\u0648\u062c\u06cc\u06a9\u0679 \u0631\u06cc\u0633\u067e\u0627\u0646\u0633\u06cc\u0648 \u0644\u06d2 \u0622\u0624\u0679\u060c GoRouter \u06a9\u06d2 \u0633\u0627\u062a\u06be \u0627\u0639\u0644\u0627\u0646\u06cc\u06c1 \u0631\u0648\u0679\u0646\u06af\u060c \u0627\u0648\u0631 JSON \u0633\u06cc\u0631\u06cc\u0644\u0627\u0626\u0632\u06cc\u0634\u0646 \u0645\u06cc\u06ba \u0645\u06c1\u0627\u0631\u062a \u062d\u0627\u0635\u0644 \u06a9\u0631\u06d2 \u06af\u0627\u06d4 <code>json_serializable<\/code>\u0627\u0646\u0679\u06cc\u06af\u0631\u06cc\u0634\u0646 \u0679\u06cc\u0633\u0679 \u0633\u06cc\u0679 \u0627\u067e\u060c \u0648\u06cc\u062c\u06cc\u0679 \u067e\u06cc\u0634 \u0646\u0638\u0627\u0631\u06c1 \u0633\u06cc\u0679 \u0627\u067e\u060c \u0648\u06cc\u062c\u06cc\u0679 \u0679\u06cc\u0633\u0679\u0646\u06af\u060c BLoC \u0627\u0648\u0631 \u06a9\u0644\u06cc\u0646 \u0622\u0631\u06a9\u06cc\u0679\u06cc\u06a9\u0686\u0631 \u06a9\u0627 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u062a\u06d2 \u06c1\u0648\u0626\u06d2 \u0622\u0631\u06a9\u06cc\u0679\u06cc\u06a9\u0686\u0631\u0644 \u0628\u06c1\u062a\u0631\u06cc\u0646 \u0637\u0631\u06cc\u0642\u06d2\u060c \u0628\u0644\u0627\u06a9 \u0627\u0633\u0679\u06cc\u0679 \u0645\u06cc\u0646\u062c\u0645\u0646\u0679\u060c \u0628\u0644\u0627\u06a9 \u0641\u0627\u0631\u0645\u0632\u060c \u0627\u0648\u0631 \u0645\u0632\u06cc\u062f \u0628\u06c1\u062a \u06a9\u0686\u06be \u0634\u0627\u0645\u0644 \u06c1\u06d2\u06d4<\/p>\n<h3 id=\"heading-installing-dart-skills\">\u0688\u0627\u0631\u0679 \u0645\u06c1\u0627\u0631\u062a \u06a9\u06cc \u062a\u0646\u0635\u06cc\u0628<\/h3>\n<pre><code class=\"language-bash\">npx skills add dart-lang\/skills --skill '*' --agent universal --yes\n<\/code><\/pre>\n<p>\u0688\u0627\u0631\u0679 \u0679\u06cc\u0645 \u0641\u0644\u0679\u0631 \u06a9\u06d2 \u0648\u06cc\u062c\u06cc\u0679 \u0633\u0633\u0679\u0645 \u0633\u06d2 \u0627\u0644\u06af\u060c \u0688\u0627\u0631\u0679 \u0644\u06cc\u0646\u06af\u0648\u06cc\u062c \u067e\u0631 \u0645\u0631\u06a9\u0648\u0632 \u0679\u06cc\u06a9\u0646\u0627\u0644\u0648\u062c\u06cc\u0632 \u06a9\u0627 \u0627\u06cc\u06a9 \u062a\u06a9\u0645\u06cc\u0644\u06cc \u0633\u06cc\u0679 \u0628\u0631\u0642\u0631\u0627\u0631 \u0631\u06a9\u06be\u062a\u06cc \u06c1\u06d2\u06d4 \u06cc\u06c1 \u062a\u06a9\u0646\u06cc\u06a9\u06cc\u06ba \u0641\u0644\u0679\u0631 \u0627\u06cc\u067e\u0633 \u0627\u0648\u0631 \u062e\u0627\u0644\u0635 \u0688\u0627\u0631\u0679 \u067e\u0631\u0648\u062c\u06cc\u06a9\u0679\u0633 \u062c\u06cc\u0633\u06d2 CLI \u0679\u0648\u0644\u0632\u060c \u0628\u06cc\u06a9 \u0627\u06cc\u0646\u0688 \u0633\u0631\u0648\u0633\u0632 \u0627\u0648\u0631 \u067e\u06cc\u06a9\u062c\u0632 \u062f\u0648\u0646\u0648\u06ba \u06a9\u06d2 \u0644\u06cc\u06d2 \u0645\u0641\u06cc\u062f \u06c1\u06cc\u06ba\u06d4<\/p>\n<p>\u0622\u0641\u06cc\u0634\u0644 \u0688\u0627\u0631\u0679 \u062a\u06a9\u0646\u06cc\u06a9\u0648\u06ba \u0645\u06cc\u06ba \u06cc\u0648\u0646\u0679 \u0679\u06cc\u0633\u0679 \u0628\u0646\u0627\u0646\u06d2\u060c \u062c\u0627\u0645\u062f \u062a\u062c\u0632\u06cc\u06c1 \u06a9\u06cc \u062a\u0631\u062a\u06cc\u0628\u060c \u067e\u06cc\u06a9\u06cc\u062c \u067e\u0631 \u0627\u0646\u062d\u0635\u0627\u0631 \u06a9\u0627 \u0627\u0646\u062a\u0638\u0627\u0645\u060c \u067e\u06cc\u0679\u0631\u0646 \u0645\u06cc\u0686\u0646\u06af \u0627\u0648\u0631 \u0633\u06cc\u0644 \u0634\u062f\u06c1 \u06a9\u0644\u0627\u0633\u0632\u060c CLI \u0627\u06cc\u067e\u0644\u06cc\u06a9\u06cc\u0634\u0646\u0632 \u06a9\u06cc \u062a\u0639\u0645\u06cc\u0631\u060c \u0679\u06cc\u0633\u0679 \u06a9\u0648\u0631\u06cc\u062c \u06a9\u0648 \u0627\u06a9\u0679\u06be\u0627 \u06a9\u0631\u0646\u0627 \u0627\u0648\u0631 \u062a\u062c\u0632\u06cc\u06c1 \u06a9\u0631\u0646\u0627\u060c LSPs \u06a9\u0627 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u062a\u06d2 \u06c1\u0648\u0626\u06d2 \u0631\u0646 \u0679\u0627\u0626\u0645 \u06a9\u06cc \u063a\u0644\u0637\u06cc\u0648\u06ba \u06a9\u0648 \u0679\u06be\u06cc\u06a9 \u06a9\u0631\u0646\u0627\u060c Mockito \u06a9\u0627 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u062a\u06d2 \u06c1\u0648\u0626\u06d2 \u0645\u0632\u0627\u0642 \u0628\u0646\u0627\u0646\u0627\u060c FFIs \u06a9\u0648 \u0628\u0627\u0626\u0646\u0688\u0646\u06af \u06a9\u0631\u0646\u0627\u060c FIgen \u06a9\u06d2 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u0633\u06d2 FFIs \u06a9\u0648 \u0628\u0627\u0626\u0646\u0688\u0646\u06af \u06a9\u0631\u0646\u0627\u060c DARGT \u0633\u06d2 \u0688\u06cc\u0679\u0627 \u0627\u0648\u0631 \u0645\u06cc\u0645\u0648\u0631\u06cc \u06a9\u06cc \u0627\u0635\u0644\u0627\u062d \u06a9\u0631\u0646\u0627 \u067e\u0631\u0627\u0646\u06d2 \u0679\u06cc\u0633\u0679 \u062f\u0639\u0648\u06d2 \u06a9\u06d2 \u0627\u0646\u062f\u0627\u0632 \u0646\u0626\u06d2 \u0633\u06d2\u06d4 <code>package:checks<\/code>.<\/p>\n<h3 id=\"heading-installing-both-at-once\">\u062f\u0648\u0646\u0648\u06ba \u06a9\u0648 \u0627\u06cc\u06a9 \u0633\u0627\u062a\u06be \u0627\u0646\u0633\u0679\u0627\u0644 \u06a9\u0631\u06cc\u06ba\u06d4<\/h3>\n<pre><code class=\"language-bash\">npx skills add flutter\/agent-plugins dart-lang\/skills --skill '*' --agent universal --yes\n<\/code><\/pre>\n<p>\u062f\u0648\u0646\u0648\u06ba \u0630\u062e\u06cc\u0631\u0648\u06ba \u06a9\u06d2 \u0646\u0627\u0645\u0648\u06ba \u06a9\u0648 \u0627\u06cc\u06a9 \u06c1\u06cc \u06a9\u0645\u0627\u0646\u0688 \u0645\u06cc\u06ba \u062f\u0631\u062c \u06a9\u0631\u0646\u06d2 \u0633\u06d2 \u062f\u0648\u0646\u0648\u06ba \u0630\u062e\u06cc\u0631\u06d2 \u0627\u06cc\u06a9 \u0633\u0627\u062a\u06be \u0627\u0646\u0633\u0679\u0627\u0644 \u06c1\u0648\u06ba \u06af\u06d2 \u0627\u0648\u0631 \u0627\u0646\u062d\u0635\u0627\u0631 \u06a9\u06d2 \u062d\u0644 \u06a9\u0648 \u0627\u06cc\u06a9 \u0628\u0627\u0631 \u0686\u0644\u0627\u0646\u06d2 \u06a9\u0627 \u0633\u0628\u0628 \u0628\u0646\u06cc\u06ba \u06af\u06d2\u06d4 \u06cc\u06c1 \u062f\u0648 \u0627\u0644\u06af \u0627\u0644\u06af \u06a9\u0645\u0627\u0646\u0688\u0632 \u0633\u06d2 \u0642\u062f\u0631\u06d2 \u062a\u06cc\u0632 \u06c1\u06d2\u06d4 \u06cc\u06c1 \u0627\u06cc\u06a9 \u0646\u06cc\u0627 \u0641\u0644\u0679\u0631 \u067e\u0631\u0648\u062c\u06cc\u06a9\u0679 \u0642\u0627\u0626\u0645 \u06a9\u0631\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u062a\u062c\u0648\u06cc\u0632 \u06a9\u0631\u062f\u06c1 \u0637\u0631\u06cc\u0642\u06c1 \u06c1\u06d2\u06d4<\/p>\n<h3 id=\"heading-installing-skills-from-your-pubspec-dependencies\">pubspec \u0627\u0646\u062d\u0635\u0627\u0631 \u0633\u06d2 \u0645\u06c1\u0627\u0631\u062a \u0627\u0646\u0633\u0679\u0627\u0644 \u06a9\u0631\u06cc\u06ba\u06d4<\/h3>\n<p>\u0679\u06cc\u06a9\u0646\u0627\u0644\u0648\u062c\u06cc \u0645\u0627\u062d\u0648\u0644\u06cc\u0627\u062a\u06cc \u0646\u0638\u0627\u0645 \u06a9\u06d2 \u0633\u0628 \u0633\u06d2 \u0632\u06cc\u0627\u062f\u06c1 \u0637\u0627\u0642\u062a\u0648\u0631 \u067e\u06c1\u0644\u0648\u0624\u06ba \u0645\u06cc\u06ba \u0633\u06d2 \u0627\u06cc\u06a9 \u067e\u06cc\u06a9\u062c \u0645\u0635\u0646\u0641\u06cc\u0646 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0627\u067e\u0646\u06cc \u0679\u06cc\u06a9\u0646\u0627\u0644\u0648\u062c\u06cc \u06a9\u0648 \u0627\u067e\u0646\u06d2 \u067e\u06cc\u06a9\u062c\u0648\u06ba \u06a9\u06d2 \u0633\u0627\u062a\u06be \u0628\u0627\u062a \u0686\u06cc\u062a \u06a9\u0631\u0646\u06d2 \u06a9\u06cc \u0635\u0644\u0627\u062d\u06cc\u062a \u06c1\u06d2\u06d4 \u06a9\u06c1 <code>skills<\/code> CLI (\u0627\u06cc\u06a9 \u0688\u0627\u0631\u0679 \u067e\u06cc\u06a9\u06cc\u062c \u06a9\u06d2 \u0637\u0648\u0631 \u067e\u0631 \u062f\u0633\u062a\u06cc\u0627\u0628 \u06c1\u06d2) \u0627\u0646\u062d\u0635\u0627\u0631 \u062f\u0631\u062e\u062a \u0645\u06cc\u06ba \u06a9\u0633\u06cc \u0628\u06be\u06cc \u067e\u06cc\u06a9\u06cc\u062c \u0633\u06d2 \u0679\u06cc\u06a9\u0646\u0627\u0644\u0648\u062c\u06cc\u0632 \u062a\u0644\u0627\u0634 \u0627\u0648\u0631 \u0627\u0646\u0633\u0679\u0627\u0644 \u06a9\u0631 \u0633\u06a9\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<pre><code class=\"language-bash\">dart pub global activate skills\nskills get\n<\/code><\/pre>\n<p><code>dart pub global activate skills<\/code>    \u0627\u0646\u0633\u0679\u0627\u0644 \u06a9\u0631\u06cc\u06ba <code>skills<\/code> \u0622\u067e \u0627\u067e\u0646\u06d2 \u06a9\u0645\u067e\u06cc\u0648\u0679\u0631 \u067e\u0631 \u0639\u0627\u0644\u0645\u06cc \u0633\u0637\u062d \u067e\u0631 Dart CLI \u0679\u0648\u0644\u0632 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631 \u0633\u06a9\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4 <code>skills get<\/code> \u0622\u067e \u06a9\u0627 \u067e\u0691\u06be\u0646\u0627 <code>pubspec.yaml<\/code> \u0627\u0648\u0631 <code>pubspec.lock<\/code>\u0627\u0646\u062d\u0635\u0627\u0631 \u06a9\u06d2 \u062f\u0631\u062e\u062a \u0645\u06cc\u06ba\u060c \u062a\u0645\u0627\u0645 \u067e\u06cc\u06a9\u06cc\u062c\u0632 \u062a\u0644\u0627\u0634 \u06a9\u0631\u06cc\u06ba \u062c\u0648 \u0641\u0631\u0627\u06c1\u0645 \u06a9\u0631\u062a\u06d2 \u06c1\u06cc\u06ba: <code>skills\/<\/code> \u0627\u0633\u06d2 \u0688\u0627\u0626\u0631\u06a9\u0679\u0631\u06cc \u0645\u06cc\u06ba \u0645\u062d\u0641\u0648\u0638 \u06a9\u0631\u06cc\u06ba \u0627\u0648\u0631 \u0627\u0633 \u0645\u06c1\u0627\u0631\u062a \u06a9\u0648 \u0627\u067e\u0646\u06d2 \u067e\u0631\u0648\u062c\u06cc\u06a9\u0679 \u0645\u06cc\u06ba \u0634\u0627\u0645\u0644 \u06a9\u0631\u06cc\u06ba\u06d4 <code>.agents\/skills\/<\/code> \u0688\u0627\u0626\u0631\u06cc\u06a9\u0679\u0631\u06cc \u062e\u0648\u062f \u0628\u062e\u0648\u062f.<\/p>\n<p>\u067e\u06cc\u06a9\u06cc\u062c \u06a9\u0648 \u0627\u067e\u0646\u06d2 \u067e\u0631\u0648\u062c\u06cc\u06a9\u0679 \u0645\u06cc\u06ba \u0634\u0627\u0645\u0644 \u06a9\u0631\u06cc\u06ba \u0627\u0648\u0631 \u0627\u0633\u06d2 \u0686\u0644\u0627\u0626\u06cc\u06ba\u06d4 <code>skills get<\/code>\u0627\u06cc\u062c\u0646\u0679\u0648\u06ba \u06a9\u0648 \u0641\u0648\u0631\u06cc \u0637\u0648\u0631 \u067e\u0631 \u0645\u0639\u0644\u0648\u0645 \u06c1\u0648 \u062c\u0627\u0626\u06d2 \u06af\u0627 \u06a9\u06c1 \u067e\u06cc\u06a9\u062c \u06a9\u06d2 \u0645\u0635\u0646\u0641 \u06a9\u06cc \u06c1\u062f\u0627\u06cc\u0627\u062a \u067e\u0631 \u0639\u0645\u0644 \u06a9\u0631\u062a\u06d2 \u06c1\u0648\u0626\u06d2 \u067e\u06cc\u06a9\u062c \u06a9\u0648 \u0635\u062d\u06cc\u062d \u0637\u0631\u06cc\u0642\u06d2 \u0633\u06d2 \u06a9\u06cc\u0633\u06d2 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u0646\u0627 \u06c1\u06d2\u06d4 \u06cc\u06c1 \u0627\u06cc\u06a9 \u0628\u0646\u06cc\u0627\u062f\u06cc \u062a\u0628\u062f\u06cc\u0644\u06cc \u06c1\u06d2\u06d4 \u0627\u06cc\u062c\u0646\u0679 \u06a9\u0648 \u0627\u0646\u062f\u0627\u0632\u06c1 \u0644\u06af\u0627\u0646\u06d2 \u06a9\u06d2 \u0628\u062c\u0627\u0626\u06d2 \u06a9\u06c1 \u067e\u06cc\u06a9\u062c \u06a9\u06cc\u0633\u06d2 \u06a9\u0627\u0645 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u060c \u067e\u06cc\u06a9\u06cc\u062c \u06a9\u0627 \u0645\u0635\u0646\u0641 \u0628\u0631\u0627\u06c1 \u0631\u0627\u0633\u062a \u0627\u06cc\u062c\u0646\u0679 \u06a9\u0648 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u06d2 \u0635\u062d\u06cc\u062d \u0646\u0645\u0648\u0646\u06d2 \u0641\u0631\u0627\u06c1\u0645 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<pre><code class=\"language-bash\"># Update skills whenever your dependencies change\nflutter pub get\nskills get\n<\/code><\/pre>\n<p>\u0686\u0644 \u0631\u06c1\u0627 \u06c1\u06d2 <code>flutter pub get<\/code> \u0627\u0646\u062d\u0635\u0627\u0631 \u06a9\u0648 \u0627\u067e \u0688\u06cc\u0679 \u06a9\u0631\u06cc\u06ba\u06d4 \u0686\u0644 \u0631\u06c1\u0627 \u06c1\u06d2 <code>skills get<\/code> \u0645\u0645\u0627\u062b\u0644\u062a \u06a9\u06cc \u0645\u06c1\u0627\u0631\u062a\u06cc\u06ba \u0627\u067e \u0688\u06cc\u0679 \u06a9\u06d2 \u0641\u0648\u0631\u0627\u064b \u0628\u0639\u062f \u0644\u0627\u06af\u0648 \u06c1\u0648\u06ba \u06af\u06cc\u06d4 \u0627\u0633\u06d2 \u062f\u0648 \u0642\u062f\u0645\u0648\u06ba \u06a9\u06cc \u0639\u0627\u062f\u062a \u0628\u0646\u0627\u0646\u0627 \u06cc\u0642\u06cc\u0646\u06cc \u0628\u0646\u0627\u062a\u0627 \u06c1\u06d2 \u06a9\u06c1 \u0622\u067e \u06a9\u06d2 \u0627\u06cc\u062c\u0646\u0679\u0648\u06ba \u06a9\u06d2 \u067e\u0627\u0633 \u0627\u0646 \u06a9\u06d2 \u0645\u0648\u062c\u0648\u062f\u06c1 \u0627\u0646\u062d\u0635\u0627\u0631 \u067e\u0631 \u06c1\u0645\u06cc\u0634\u06c1 \u062a\u0627\u0632\u06c1 \u062a\u0631\u06cc\u0646 \u0645\u06c1\u0627\u0631\u062a\u06cc\u06ba \u0645\u0648\u062c\u0648\u062f \u06c1\u0648\u06ba\u06d4<\/p>\n<h3 id=\"heading-verifying-installed-skills\">\u0627\u0646\u0633\u0679\u0627\u0644 \u0679\u06cc\u06a9\u0646\u0627\u0644\u0648\u062c\u06cc \u06a9\u0648 \u0686\u06cc\u06a9 \u06a9\u0631\u06cc\u06ba\u06d4<\/h3>\n<pre><code class=\"language-bash\">ls -la .agents\/skills\/\n<\/code><\/pre>\n<p><code>ls -la .agents\/skills\/<\/code>    \u062a\u0645\u0627\u0645 \u0627\u0646\u0633\u0679\u0627\u0644 \u0634\u062f\u06c1 \u062a\u06a9\u0646\u06cc\u06a9\u06cc \u0641\u0627\u0626\u0644\u0648\u06ba \u06a9\u06cc \u062a\u0641\u0635\u06cc\u0644\u0627\u062a \u06a9\u06d2 \u0633\u0627\u062a\u06be \u0641\u06c1\u0631\u0633\u062a \u0628\u0646\u0627\u0626\u06cc\u06ba\u06d4 \u0622\u067e \u06a9\u0648 \u062f\u06cc\u06a9\u06be\u0646\u0627 \u0686\u0627\u06c1\u0626\u06d2 <code>.md<\/code> \u0627\u0633 \u0641\u0627\u0626\u0644 \u06a9\u0627 \u0646\u0627\u0645 \u06c1\u0631 \u0627\u0646\u0633\u0679\u0627\u0644 \u06a9\u0631\u062f\u06c1 \u0645\u06c1\u0627\u0631\u062a \u06a9\u06d2 \u0646\u0627\u0645 \u067e\u0631 \u0631\u06a9\u06be\u0627 \u06af\u06cc\u0627 \u06c1\u06d2\u06d4 \u06a9\u06c1 <code>-la<\/code> \u062c\u06be\u0646\u0688\u0627 \u0686\u06be\u067e\u06cc \u06c1\u0648\u0626\u06cc \u0641\u0627\u0626\u0644\u0648\u06ba \u0627\u0648\u0631 \u062a\u0641\u0635\u06cc\u0644\u06cc \u0645\u0639\u0644\u0648\u0645\u0627\u062a \u0628\u0634\u0645\u0648\u0644 \u0641\u0627\u0626\u0644 \u06a9\u0627 \u0633\u0627\u0626\u0632 \u0627\u0648\u0631 \u062a\u0631\u0645\u06cc\u0645 \u06a9\u06cc \u062a\u0627\u0631\u06cc\u062e \u062f\u06a9\u06be\u0627\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<p>\u0627\u0646\u0633\u0679\u0627\u0644 \u06c1\u0648\u0646\u06d2 \u06a9\u06d2 \u0628\u0639\u062f\u060c \u0627\u067e\u0646\u06d2 \u0627\u06cc\u062c\u0646\u0679 \u06a9\u06cc \u062a\u06a9\u0646\u06cc\u06a9\u06cc \u0622\u06af\u0627\u06c1\u06cc \u06a9\u06cc \u062c\u0627\u0646\u0686 \u06a9\u0631\u06cc\u06ba\u06d4<\/p>\n<pre><code class=\"language-plaintext\">Which of my installed skills can help me with creating a new feature screen?\n<\/code><\/pre>\n<p>\u0627\u06cc\u062c\u0646\u0679 \u0627\u0633 \u06a9\u0627\u0645 \u0633\u06d2 \u0645\u062a\u0639\u0644\u0642\u06c1 \u0645\u06c1\u0627\u0631\u062a\u0648\u06ba \u06a9\u06d2 \u0633\u0627\u062a\u06be \u062c\u0648\u0627\u0628 \u062f\u06cc\u062a\u0627 \u06c1\u06d2\u060c \u0627\u0633 \u0628\u0627\u062a \u06a9\u0648 \u06cc\u0642\u06cc\u0646\u06cc \u0628\u0646\u0627\u062a\u0627 \u06c1\u06d2 \u06a9\u06c1 \u0648\u06c1 \u0645\u06c1\u0627\u0631\u062a\u06cc\u06ba \u0628\u06be\u0631\u06cc \u06c1\u0648\u0626\u06cc \u06c1\u06cc\u06ba \u0627\u0648\u0631 \u062f\u0631\u0633\u062a \u0637\u0631\u06cc\u0642\u06d2 \u0633\u06d2 \u062a\u0631\u062a\u06cc\u0628 \u062f\u06cc \u06af\u0626\u06cc \u06c1\u06cc\u06ba\u06d4 \u062c\u0628 \u0628\u06be\u06cc \u0622\u067e \u06a9\u0633\u06cc \u067e\u0631\u0648\u062c\u06cc\u06a9\u0679 \u0645\u06cc\u06ba \u0679\u06cc\u06a9\u0646\u0627\u0644\u0648\u062c\u06cc \u0634\u0627\u0645\u0644 \u06a9\u0631\u062a\u06d2 \u06c1\u06cc\u06ba \u062a\u0648 \u06cc\u06c1 \u067e\u06c1\u0644\u0627 \u0627\u0686\u06be\u0627 \u0679\u06cc\u0633\u0679 \u06c1\u0648\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<h2 id=\"heading-using-skills-with-claude-code\">\u06a9\u0644\u0627\u0688 \u06a9\u0648\u0688 \u06a9\u06d2 \u0633\u0627\u062a\u06be \u0645\u06c1\u0627\u0631\u062a\u0648\u06ba \u06a9\u0627 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u06cc\u06ba\u06d4<\/h2>\n<p>Claude Code Anthropic \u06a9\u0627 \u0627\u06cc\u062c\u0646\u0679 \u06a9\u0648\u0688\u0646\u06af \u0627\u0633\u0633\u0679\u0646\u0679 \u06c1\u06d2 \u062c\u0648 \u0622\u067e \u06a9\u06d2 \u0679\u0631\u0645\u06cc\u0646\u0644 \u0645\u06cc\u06ba \u0686\u0644\u062a\u0627 \u06c1\u06d2\u06d4 \u06cc\u06c1 \u067e\u06cc\u0686\u06cc\u062f\u06c1\u060c \u0645\u0644\u0679\u06cc \u0633\u0679\u06cc\u067e \u0641\u0644\u0679\u0631 \u0688\u0648\u06cc\u0644\u067e\u0645\u0646\u0679 \u06a9\u0627\u0645\u0648\u06ba \u06a9\u06d2 \u0644\u06cc\u06d2 \u0633\u0628 \u0633\u06d2 \u0637\u0627\u0642\u062a\u0648\u0631 \u0627\u06cc\u062c\u0646\u0679\u0648\u06ba \u0645\u06cc\u06ba \u0633\u06d2 \u0627\u06cc\u06a9 \u06c1\u06d2 \u0627\u0648\u0631 \u062a\u06a9\u0646\u06cc\u06a9\u06cc \u0645\u0639\u06cc\u0627\u0631\u0627\u062a \u06a9\u06d2 \u0644\u06cc\u06d2 \u0628\u06c1\u062a\u0631\u06cc\u0646 \u0645\u0639\u0627\u0648\u0646\u062a \u0641\u0631\u0627\u06c1\u0645 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<h3 id=\"heading-installing-the-flutter-plugin-for-claude-code\">\u06a9\u0644\u0627\u0688 \u06a9\u0648\u0688 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0641\u0644\u0679\u0631 \u067e\u0644\u06af \u0627\u0646 \u0627\u0646\u0633\u0679\u0627\u0644 \u06a9\u0631\u06cc\u06ba\u06d4<\/h3>\n<p>\u06a9\u0644\u0627\u0688 \u06a9\u0648\u0688 \u06a9\u06d2 \u0644\u06cc\u06d2 \u062a\u062c\u0648\u06cc\u0632 \u06a9\u0631\u062f\u06c1 \u0637\u0631\u06cc\u0642\u06c1 \u0645\u06a9\u0645\u0644 \u0641\u0644\u0679\u0631 \u067e\u0644\u06af \u0627\u0646 \u0627\u0646\u0633\u0679\u0627\u0644 \u06a9\u0631\u0646\u0627 \u06c1\u06d2\u060c \u062c\u0648 \u0679\u06cc\u06a9\u0646\u0627\u0644\u0648\u062c\u06cc \u06a9\u0648 MCP \u0633\u0631\u0648\u0631 \u06a9\u0646\u0641\u06cc\u06af\u0631\u06cc\u0634\u0646 \u06a9\u06d2 \u0633\u0627\u062a\u06be \u0628\u0646\u0688\u0644 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<pre><code class=\"language-bash\">claude mcp add flutter-mcp -- dart pub global run dart_mcp_server\nnpx skills add flutter\/agent-plugins --skill '*' --agent claude-code --yes\nnpx skills add dart-lang\/skills --skill '*' --agent claude-code --yes\n<\/code><\/pre>\n<p><code>claude mcp add flutter-mcp<\/code>    \u06a9\u0644\u0627\u0688 \u06a9\u0648\u0688 \u06a9\u0627 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u062a\u06d2 \u06c1\u0648\u0626\u06d2 \u0627\u067e\u0646\u06d2 \u0688\u0627\u0631\u0679 \u0627\u06cc\u0645 \u0633\u06cc \u067e\u06cc \u0633\u0631\u0648\u0631 \u06a9\u0648 \u0631\u062c\u0633\u0679\u0631 \u06a9\u0631\u06cc\u06ba\u06d4 MCP \u0633\u0631\u0648\u0631 \u06a9\u0644\u0627\u0688 \u06a9\u0648\u0688 \u06a9\u0648 \u0641\u0644\u0679\u0631 \u062f\u0633\u062a\u0627\u0648\u06cc\u0632\u0627\u062a\u060c pub.dev \u067e\u06cc\u06a9\u06cc\u062c \u06a9\u06cc \u0645\u0639\u0644\u0648\u0645\u0627\u062a\u060c \u0627\u0648\u0631 \u0648\u06cc\u0628 \u0628\u0631\u0627\u0624\u0632\u0646\u06af \u06a9\u06d2 \u0628\u063a\u06cc\u0631 \u0688\u0627\u0631\u0679 \u0679\u0648\u0644\u0632 \u062a\u06a9 \u0628\u0631\u0627\u06c1 \u0631\u0627\u0633\u062a \u0631\u0633\u0627\u0626\u06cc \u0641\u0631\u0627\u06c1\u0645 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4 <code>--agent claude-code<\/code> \u067e\u0631 <code>skills add<\/code> \u06a9\u0645\u0627\u0646\u0688 \u0645\u06c1\u0627\u0631\u062a \u06a9\u0648 \u06a9\u0644\u0627\u0688 \u06a9\u0648\u0688 \u06a9\u06d2 \u0645\u062e\u0635\u0648\u0635 \u0645\u0642\u0627\u0645 \u067e\u0631 \u0631\u06a9\u06be\u062a\u0627 \u06c1\u06d2 \u0627\u06af\u0631 \u06cc\u06c1 \u0639\u0627\u0644\u0645\u06af\u06cc\u0631 \u0645\u0642\u0627\u0645 \u0633\u06d2 \u0645\u062e\u062a\u0644\u0641 \u06c1\u06d2\u06d4 <code>.agents\/skills\/<\/code> \u06cc\u06c1 \u0627\u06cc\u06a9 \u0688\u0627\u0626\u0631\u06a9\u0679\u0631\u06cc \u06c1\u06d2\u060c \u0644\u06cc\u06a9\u0646 \u06a9\u0644\u0627\u0688 \u06a9\u0648\u0688 \u0639\u0627\u0644\u0645\u06af\u06cc\u0631 \u0645\u0642\u0627\u0645\u0627\u062a \u0633\u06d2 \u0628\u06be\u06cc \u067e\u0691\u06be\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<h3 id=\"heading-claude-code-skills-directory\">\u06a9\u0644\u0627\u0688 \u06a9\u0648\u0688 \u0679\u06cc\u06a9\u0646\u06cc\u06a9\u0644 \u0688\u0627\u0626\u0631\u06a9\u0679\u0631\u06cc<\/h3>\n<p>\u06a9\u0644\u0627\u0688 \u06a9\u0627 \u06a9\u0648\u0688 \u0627\u0633 \u0633\u06d2 \u062a\u0641\u0635\u06cc\u0644 \u067e\u0691\u06be\u062a\u0627 \u06c1\u06d2: <code>.agents\/skills\/<\/code> (\u0639\u0627\u0644\u0645\u06af\u06cc\u0631 \u067e\u0648\u0632\u06cc\u0634\u0646) \u062e\u0648\u062f \u0628\u062e\u0648\u062f\u06d4 \u06cc\u06c1 \u0628\u06be\u06cc \u067e\u0691\u06be\u062a\u0627 \u06c1\u06d2: <code>.claude\/skills\/<\/code> \u0627\u06af\u0631 \u0622\u067e \u06a9\u0644\u0627\u0688 \u06a9\u06cc \u0645\u062e\u0635\u0648\u0635 \u0645\u06c1\u0627\u0631\u062a\u0648\u06ba \u06a9\u0648 \u0639\u0627\u0645 \u0645\u0642\u0635\u062f \u06a9\u06cc \u0645\u06c1\u0627\u0631\u062a\u0648\u06ba \u0633\u06d2 \u0627\u0644\u06af \u0631\u06a9\u06be\u0646\u0627 \u0686\u0627\u06c1\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4<\/p>\n<pre><code class=\"language-plaintext\">your_project\/\n  .agents\/\n    skills\/\n      flutter-file-organization.md    <- universal, works everywhere\n      flutter-bloc-state-management.md\n  .claude\/\n    skills\/\n      claude-specific-workflow.md     <- Claude Code only\n    CLAUDE.md                         <- Claude Code rules file\n<\/code><\/pre>\n<h3 id=\"heading-claude-code-rules-vs-skills\">\u06a9\u0644\u0627\u0688 \u06a9\u0648\u0688 \u06a9\u06d2 \u0627\u0635\u0648\u0644 \u0627\u0648\u0631 \u062a\u06a9\u0646\u06cc\u06a9<\/h3>\n<p>\u06a9\u0644\u0627\u0688 \u06a9\u0627 \u06a9\u0648\u0688 \u06c1\u06d2\u06d4 <code>CLAUDE.md<\/code> \u0641\u0627\u0626\u0644 \u06a9\u0648 \u0627\u067e\u0646\u06d2 \u067e\u0631\u0648\u062c\u06cc\u06a9\u0679 \u0631\u0648\u0679 \u0645\u06cc\u06ba \u0645\u062d\u0641\u0648\u0638 \u06a9\u0631\u06cc\u06ba (\u06cc\u0627 <code>.claude\/<\/code>) \u0631\u0648\u0644\u0632 \u0641\u0627\u0626\u0644: \u067e\u0631\u0648\u062c\u06cc\u06a9\u0679 \u06a9\u06d2 \u0648\u0633\u06cc\u0639 \u0631\u06c1\u0646\u0645\u0627 \u062e\u0637\u0648\u0637 \u062c\u0648 \u06c1\u0645\u06cc\u0634\u06c1 \u0633\u06cc\u0627\u0642 \u0648 \u0633\u0628\u0627\u0642 \u0645\u06cc\u06ba \u06c1\u0648\u062a\u06d2 \u06c1\u06cc\u06ba\u060c \u0686\u0627\u06c1\u06d2 \u06a9\u0627\u0645 \u06a9\u0648\u0626\u06cc \u0628\u06be\u06cc \u06c1\u0648\u06d4<\/p>\n<p>\u06c1\u0646\u0631 \u0622\u06c1\u0633\u062a\u06c1 \u0622\u06c1\u0633\u062a\u06c1 \u0644\u0648\u0688 \u06a9\u06cc\u06d2 \u062c\u0627\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u06cc\u06ba <code>CLAUDE.md<\/code> \u067e\u0631\u0648\u062c\u06cc\u06a9\u0679 \u06a9\u06cc \u0645\u0639\u0644\u0648\u0645\u0627\u062a (\u06cc\u06c1 \u06a9\u0648\u0646 \u0633\u0627 \u067e\u06cc\u06a9\u06cc\u062c \u06c1\u06d2\u060c \u06cc\u06c1 \u06a9\u0648\u0646 \u0633\u0627 SDK \u0648\u0631\u0698\u0646 \u06c1\u06d2\u060c \u06a9\u0648\u0646 \u0633\u06cc \u0627\u0633\u0679\u06cc\u0679 \u0645\u06cc\u0646\u062c\u0645\u0646\u0679 \u0644\u0627\u0626\u0628\u0631\u06cc\u0631\u06cc\u0627\u06ba \u0627\u0646\u0633\u0679\u0627\u0644 \u06c1\u06cc\u06ba)\u06d4 \u06a9\u0627\u0645 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0645\u062e\u0635\u0648\u0635 \u0645\u06c1\u0627\u0631\u062a \u06a9\u06d2 \u0644\u06cc\u06d2 \u0627\u067e\u0646\u06cc \u0635\u0644\u0627\u062d\u06cc\u062a\u0648\u06ba \u06a9\u0627 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u06cc\u06ba (\u0628\u0644\u0627\u06a9 \u06a9\u0648 \u06a9\u06cc\u0633\u06d2 \u0646\u0627\u0641\u0630 \u06a9\u0631\u06cc\u06ba\u060c \u0641\u0627\u0626\u0644\u0648\u06ba \u06a9\u0648 \u06a9\u06cc\u0633\u06d2 \u062a\u0631\u062a\u06cc\u0628 \u062f\u06cc\u06ba\u060c \u06cc\u0627 \u0679\u06cc\u0633\u0679 \u06a9\u06cc\u0633\u06d2 \u0644\u06a9\u06be\u06cc\u06ba)\u06d4<\/p>\n<pre><code class=\"language-markdown\"># CLAUDE.md example\n\nThis is a Flutter app called Kopa, a personal budgeting tool.\n\n## Technical Stack\n- Flutter 3.47 with Dart 3.10\n- State management: flutter_bloc ^9.0.0\n- Navigation: go_router ^14.0.0\n- Data layer: firebase_ai ^2.0.0 for AI features\n- Serialization: freezed + json_serializable\n- Testing: bloc_test, mocktail\n\n## Package Name\ncom.example.kopa\n\n## Minimum SDK\nAndroid API 24, iOS 15\n\n## Project Structure\nFeature-first with clean architecture layers.\nSee the flutter-feature-architecture skill for full structure details.\n<\/code><\/pre>\n<p><code>CLAUDE.md<\/code>    \u0627\u0633 \u0645\u06cc\u06ba \u0622\u067e \u06a9\u06d2 \u067e\u0631\u0648\u062c\u06cc\u06a9\u0679 \u06a9\u06d2 \u0628\u0627\u0631\u06d2 \u0645\u06cc\u06ba \u062d\u0642\u0627\u0626\u0642 \u06c1\u06cc\u06ba \u062c\u0648 \u06a9\u0628\u06be\u06cc \u0628\u06be\u06cc \u06a9\u0627\u0645\u0648\u06ba \u06a9\u06d2 \u062f\u0631\u0645\u06cc\u0627\u0646 \u062a\u0628\u062f\u06cc\u0644 \u0646\u06c1\u06cc\u06ba \u06c1\u0648\u062a\u06d2 \u06c1\u06cc\u06ba\u060c \u062c\u06cc\u0633\u06d2 \u06a9\u06c1 \u0627\u06cc\u067e \u06a9\u0627 \u0646\u0627\u0645\u060c \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u0645\u06cc\u06ba \u067e\u06cc\u06a9\u06cc\u062c\u0632\u060c SDK \u0648\u0631\u0698\u0646\u060c \u0627\u0648\u0631 \u06a9\u0645 \u0627\u0632 \u06a9\u0645 \u067e\u0644\u06cc\u0679 \u0641\u0627\u0631\u0645 \u06c1\u062f\u0641\u06d4 \u0645\u06c1\u0627\u0631\u062a\u0648\u06ba \u0645\u06cc\u06ba \u0645\u0627\u06c1\u0631 \u0639\u0644\u0645 \u0634\u0627\u0645\u0644 \u06c1\u06d2 \u06a9\u06c1 \u06a9\u0633 \u0637\u0631\u062d \u0645\u0646\u0627\u0633\u0628 \u0637\u0631\u06cc\u0642\u06d2 \u0633\u06d2 \u06a9\u0648\u0688 \u0634\u062f\u06c1 \u067e\u06cc\u06a9\u062c\u0648\u06ba \u0627\u0648\u0631 \u0688\u06be\u0627\u0646\u0686\u06d2 \u06a9\u06d2 \u0633\u0627\u062a\u06be \u06a9\u0627\u0645 \u06a9\u0631\u0646\u0627 \u06c1\u06d2\u06d4<\/p>\n<h3 id=\"heading-using-skills-in-a-claude-code-session\">\u06a9\u0644\u0627\u0688 \u06a9\u0648\u0688 \u0633\u06cc\u0634\u0646\u0632 \u0645\u06cc\u06ba \u0679\u06cc\u06a9\u0646\u0627\u0644\u0648\u062c\u06cc \u06a9\u0627 \u0627\u0633\u062a\u0639\u0645\u0627\u0644<\/h3>\n<p>\u0627\u06cc\u06a9 \u0628\u0627\u0631 \u062c\u0628 \u06a9\u0648\u0626\u06cc \u06c1\u0646\u0631 \u0627\u0646\u0633\u0679\u0627\u0644 \u06c1\u0648 \u062c\u0627\u0626\u06d2 \u062a\u0648\u060c \u06a9\u0644\u0627\u0688 \u06a9\u0648\u0688 \u062e\u0648\u062f \u0628\u062e\u0648\u062f \u0627\u0633 \u0645\u06c1\u0627\u0631\u062a \u06a9\u0648 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631 \u0644\u06d2 \u06af\u0627\u06d4 \u0627\u0633\u06d2 \u062f\u0633\u062a\u06cc \u0637\u0648\u0631 \u067e\u0631 \u06a9\u0627\u0644 \u06a9\u0631\u0646\u06d2 \u06a9\u06cc \u0636\u0631\u0648\u0631\u062a \u0646\u06c1\u06cc\u06ba \u06c1\u06d2\u06d4 \u062c\u0628 \u0622\u067e \u067e\u0648\u0686\u06be\u062a\u06d2 \u06c1\u06cc\u06ba:<\/p>\n<pre><code class=\"language-plaintext\">Create a UserProfile feature with Bloc state management, \na repository that fetches from Firestore, and a screen \nthat shows loading, data, and error states.\n<\/code><\/pre>\n<p>Claude Code \u067e\u062a\u06c1 \u0644\u06af\u0627\u062a\u0627 \u06c1\u06d2 \u06a9\u06c1 \u0627\u0633 \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u0645\u06cc\u06ba \u0645\u062a\u0639\u062f\u062f \u062a\u06a9\u0646\u06cc\u06a9\u06cc \u0688\u0648\u0645\u06cc\u0646\u0632 (\u0641\u0646\u06a9\u0634\u0646\u0644 \u0622\u0631\u06a9\u06cc\u0679\u06cc\u06a9\u0686\u0631\u060c \u0628\u0644\u0627\u06a9 \u0627\u0633\u0679\u06cc\u0679 \u0645\u06cc\u0646\u062c\u0645\u0646\u0679\u060c \u0641\u0627\u0626\u0644 \u0622\u0631\u06af\u0646\u0627\u0626\u0632\u06cc\u0634\u0646\u060c \u0645\u0645\u06a9\u0646\u06c1 \u062a\u06be\u06cc\u0645\u0632\u060c \u0627\u0648\u0631 \u0627\u06cc\u0631\u0631 \u06c1\u06cc\u0646\u0688\u0644\u0646\u06af) \u0634\u0627\u0645\u0644 \u06c1\u06cc\u06ba\u060c \u0645\u062a\u0639\u0644\u0642\u06c1 \u062a\u06a9\u0646\u06cc\u06a9\u06cc \u0641\u0627\u0626\u0644\u0648\u06ba \u06a9\u0648 \u0644\u0648\u0688 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u060c \u0627\u0648\u0631 \u06a9\u0648\u0688 \u062a\u06cc\u0627\u0631 \u06a9\u0631\u062a\u0627 \u06c1\u06d2 \u062c\u0648 \u0628\u06cc\u06a9 \u0648\u0642\u062a \u0679\u06cc\u0645 \u06a9\u06d2 \u062a\u0645\u0627\u0645 \u0627\u0635\u0648\u0644\u0648\u06ba \u06a9\u06cc \u067e\u06cc\u0631\u0648\u06cc \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<p>\u0622\u067e \u0627\u0633\u06d2 \u0648\u0627\u0636\u062d \u0637\u0648\u0631 \u067e\u0631 \u0627\u0633 \u0637\u0631\u062d \u0628\u06be\u06cc \u0628\u06cc\u0627\u0646 \u06a9\u0631 \u0633\u06a9\u062a\u06d2 \u06c1\u06cc\u06ba:<\/p>\n<pre><code class=\"language-plaintext\">Using the flutter-bloc-state-management skill, implement \nthe CartBloc for the shopping cart feature.\n<\/code><\/pre>\n<p>\u06a9\u0633\u06cc \u06c1\u0646\u0631 \u06a9\u0648 \u0648\u0627\u0636\u062d \u0637\u0648\u0631 \u067e\u0631 \u0646\u0627\u0645 \u062f\u06cc\u0646\u0627 \u06a9\u0644\u0627\u0688 \u06a9\u0648\u0688 \u06a9\u0648 \u0627\u0633 \u0645\u062e\u0635\u0648\u0635 \u0645\u06c1\u0627\u0631\u062a \u06a9\u0648 \u0644\u0648\u0688 \u06a9\u0631\u0646\u06d2 \u06a9\u06cc \u06c1\u062f\u0627\u06cc\u062a \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u060c \u0686\u0627\u06c1\u06d2 \u0648\u06c1 \u062e\u0648\u062f \u0628\u062e\u0648\u062f \u0627\u0633 \u06a9\u06cc \u0636\u0631\u0648\u0631\u062a \u06a9\u0627 \u067e\u062a\u06c1 \u0644\u06af\u0627\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<h2 id=\"heading-using-skills-with-antigravity\">\u0627\u06cc\u0646\u0679\u06cc \u06af\u0631\u06cc\u0648\u06cc\u0679\u06cc \u0679\u06cc\u06a9\u0646\u0627\u0644\u0648\u062c\u06cc \u06a9\u0627 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u06cc\u06ba\u06d4<\/h2>\n<p>\u0627\u06cc\u0646\u0679\u06cc \u06af\u0631\u06cc\u0648\u06cc\u0679\u06cc \u06af\u0648\u06af\u0644 \u06a9\u0627 \u0627\u06d2 \u0622\u0626\u06cc \u06a9\u0648\u0688\u0646\u06af \u0627\u0633\u0633\u0679\u0646\u0679 \u06c1\u06d2 \u062c\u0648 \u0641\u0644\u0679\u0631 \u0627\u06cc\u06a9\u0648 \u0633\u0633\u0679\u0645 \u0645\u06cc\u06ba \u06af\u06c1\u0631\u0627\u0626\u06cc \u0633\u06d2 \u0645\u0631\u0628\u0648\u0637 \u06c1\u06d2 \u0627\u0648\u0631 \u0641\u0644\u0679\u0631 \u0679\u06cc\u0645 \u06a9\u06d2 \u0633\u0627\u062a\u06be \u0645\u0644 \u06a9\u0631 \u062a\u06cc\u0627\u0631 \u06a9\u06cc\u0627 \u06af\u06cc\u0627 \u06c1\u06d2\u06d4 \u06cc\u06c1 \u0627\u06cc\u062c\u0646\u0679 \u0679\u06a9\u0646\u0627\u0644\u0648\u062c\u06cc \u06a9\u06d2 \u0644\u06cc\u06d2 \u0627\u0639\u0644\u06cc\u0670 \u0633\u0637\u062d \u06a9\u06cc \u0645\u062f\u062f \u0641\u0631\u0627\u06c1\u0645 \u06a9\u0631\u062a\u0627 \u06c1\u06d2 \u0627\u0648\u0631 \u06cc\u06c1 \u0633\u0631\u06a9\u0627\u0631\u06cc \u0641\u0644\u0679\u0631 \u0679\u06cc\u06a9\u0646\u0627\u0644\u0648\u062c\u06cc\u0632 \u06a9\u06d2 \u0633\u0627\u062a\u06be \u0627\u0646\u062a\u06c1\u0627\u0626\u06cc \u062c\u0627\u0646\u0686 \u0634\u062f\u06c1 \u0627\u06cc\u062c\u0646\u0679\u0648\u06ba \u0645\u06cc\u06ba \u0633\u06d2 \u0627\u06cc\u06a9 \u06c1\u06d2\u06d4<\/p>\n<h3 id=\"heading-installing-the-flutter-plugin-for-antigravity\">\u0627\u06cc\u0646\u0679\u06cc \u06af\u0631\u06cc\u0648\u0679\u06cc \u06a9\u06d2 \u0644\u06cc\u06d2 \u0641\u0644\u0679\u0631 \u067e\u0644\u06af \u0627\u0646 \u0627\u0646\u0633\u0679\u0627\u0644 \u06a9\u0631\u06cc\u06ba\u06d4<\/h3>\n<pre><code class=\"language-plaintext\">Open Settings in Antigravity by pressing Cmd+, (Mac) or Ctrl+, (Windows\/Linux)\nClick the Customizations tab\nIn the Build with Google Plugins section, click Customize\nClick Download next to the Dart and Flutter integration\n<\/code><\/pre>\n<p>\u06cc\u06c1 Antigravity \u06a9\u06d2 \u0644\u06cc\u06d2 \u0622\u0641\u06cc\u0634\u0644 \u0641\u0644\u0679\u0631 \u067e\u0644\u06af \u0627\u0646 \u0627\u0646\u0633\u0679\u0627\u0644 \u06a9\u0631\u06d2 \u06af\u0627\u060c \u062c\u0648 \u0645\u06c1\u0627\u0631\u062a\u0648\u06ba\u060c MCP \u0633\u0631\u0648\u0631 \u06a9\u0646\u0641\u06cc\u06af\u0631\u06cc\u0634\u0646\u060c \u0627\u0648\u0631 \u0642\u0648\u0627\u0639\u062f \u06a9\u0648 \u0627\u06cc\u06a9 \u06c1\u06cc \u0642\u062f\u0645 \u0645\u06cc\u06ba \u0628\u0646\u0688\u0644 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4 \u06cc\u06c1 \u062a\u062c\u0648\u06cc\u0632 \u06a9\u0631\u062f\u06c1 \u062a\u0646\u0635\u06cc\u0628 \u06a9\u0627 \u0631\u0627\u0633\u062a\u06c1 \u06c1\u06d2 \u06a9\u06cc\u0648\u0646\u06a9\u06c1 \u06cc\u06c1 \u0627\u0633 \u0628\u0627\u062a \u06a9\u0648 \u06cc\u0642\u06cc\u0646\u06cc \u0628\u0646\u0627\u062a\u0627 \u06c1\u06d2 \u06a9\u06c1 \u062a\u06cc\u0646\u0648\u06ba \u0627\u062c\u0632\u0627\u0621 (\u0645\u06c1\u0627\u0631\u062a\u060c MCP\u060c \u0627\u0648\u0631 \u0642\u0648\u0627\u0639\u062f) \u0627\u06cc\u06a9 \u0633\u0627\u062a\u06be \u0645\u0646\u0627\u0633\u0628 \u0637\u0631\u06cc\u0642\u06d2 \u0633\u06d2 \u062a\u0631\u062a\u06cc\u0628 \u062f\u06cc\u06d2 \u06af\u0626\u06d2 \u06c1\u06cc\u06ba\u06d4<\/p>\n<h3 id=\"heading-manual-skills-installation-for-antigravity\">\u06a9\u0634\u0634 \u062b\u0642\u0644 \u06a9\u06d2 \u062e\u0644\u0627\u0641 \u063a\u06cc\u0631 \u0641\u0639\u0627\u0644 \u0679\u06cc\u06a9\u0646\u0627\u0644\u0648\u062c\u06cc \u06a9\u06cc \u062a\u0646\u0635\u06cc\u0628<\/h3>\n<p>\u0627\u06af\u0631 \u0622\u067e \u062f\u0633\u062a\u06cc \u062a\u0646\u0635\u06cc\u0628 \u06a9\u0648 \u062a\u0631\u062c\u06cc\u062d \u062f\u06cc\u062a\u06d2 \u06c1\u06cc\u06ba \u06cc\u0627 \u0627\u067e\u0646\u06cc \u0645\u0631\u0636\u06cc \u06a9\u06d2 \u0645\u0637\u0627\u0628\u0642 \u0679\u06cc\u0645 \u06a9\u06cc \u0645\u06c1\u0627\u0631\u062a\u0648\u06ba \u06a9\u0648 \u0634\u0627\u0645\u0644 \u06a9\u0631\u0646\u06d2 \u06a9\u06cc \u0636\u0631\u0648\u0631\u062a \u06c1\u06d2:<\/p>\n<pre><code class=\"language-bash\">npx skills add flutter\/agent-plugins --skill '*' --agent antigravity --yes\nnpx skills add dart-lang\/skills --skill '*' --agent antigravity --yes\n<\/code><\/pre>\n<p><code>--agent antigravity<\/code>    Antigravity \u0639\u0627\u0645 \u0645\u0642\u0635\u062f \u06a9\u06cc \u062a\u06a9\u0646\u06cc\u06a9\u06cc \u0688\u0627\u0626\u0631\u06cc\u06a9\u0679\u0631\u06cc \u0633\u06d2 \u0628\u06be\u06cc \u067e\u0691\u06be\u062a\u0627 \u06c1\u06d2\u060c \u0644\u06cc\u06a9\u0646 Antigravity \u0633\u06d2 \u0645\u062a\u0639\u0644\u0642 \u0645\u062e\u0635\u0648\u0635 \u062a\u06a9\u0646\u06cc\u06a9\u06cc \u0688\u0627\u0626\u0631\u06cc\u06a9\u0679\u0631\u06cc\u0648\u06ba \u06a9\u0648 \u0646\u0634\u0627\u0646\u06c1 \u0628\u0646\u0627\u062a\u0627 \u06c1\u06d2\u06d4 <code>.agents\/skills\/<\/code> \u0645\u0642\u0627\u0645<\/p>\n<h3 id=\"heading-antigravity-workflows-with-skills\">\u0679\u06cc\u06a9\u0646\u0627\u0644\u0648\u062c\u06cc \u06a9\u0627 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u062a\u06d2 \u06c1\u0648\u0626\u06d2 \u0627\u06cc\u0646\u0679\u06cc \u06af\u0631\u06cc\u0648\u0679\u06cc \u0648\u0631\u06a9 \u0641\u0644\u0648<\/h3>\n<p>\u0627\u06cc\u0646\u0679\u06cc \u06af\u0631\u06cc\u0648\u06cc\u0679\u06cc \"\u0648\u0631\u06a9 \u0641\u0644\u0648\u0632\" \u06a9\u0648 \u0633\u067e\u0648\u0631\u0679 \u06a9\u0631\u062a\u06cc \u06c1\u06d2\u060c \u062c\u0648 \u06a9\u06c1 \u0627\u06cc\u06a9\u0634\u0646 \u06a9\u06d2 \u067e\u06c1\u0644\u06d2 \u0633\u06d2 \u0637\u06d2 \u0634\u062f\u06c1 \u0633\u0644\u0633\u0644\u06d2 \u06c1\u06cc\u06ba \u062c\u0648 \u0679\u06cc\u06a9\u0646\u0627\u0644\u0648\u062c\u06cc\u0632 \u06a9\u0627 \u062d\u0648\u0627\u0644\u06c1 \u062f\u06d2 \u0633\u06a9\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4 \u0622\u067e \u0645\u0634\u062a\u0631\u06a9\u06c1 \u0679\u06cc\u0645 \u06a9\u06d2 \u06a9\u0627\u0645\u0648\u06ba \u06a9\u06d2 \u0644\u06cc\u06d2 \u0648\u0631\u06a9 \u0641\u0644\u0648 \u0628\u0646\u0627 \u0633\u06a9\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4<\/p>\n<pre><code class=\"language-markdown\"># .antigravity\/workflows\/new-feature.md\n\n## Create New Feature Workflow\n\nApply skills: flutter-feature-architecture, flutter-bloc-state-management, \nflutter-testing, flutter-file-organization\n\nSteps:\n1. Create the feature folder structure.\n2. Create the domain model using Freezed.\n3. Create the repository interface and implementation.\n4. Create the Bloc with its events and states.\n5. Create the screen widget.\n6. Extract reusable component widgets.\n7. Create unit tests for the repository.\n8. Create `bloc_test` tests for the Bloc.\n9. Create widget tests for the screen.\n<\/code><\/pre>\n<p>\u06c1\u0646\u0631 \u0633\u06d2 \u0645\u062a\u0639\u0644\u0642 \u0648\u0631\u06a9 \u0641\u0644\u0648 \u0627\u0633 \u0628\u0627\u062a \u06a9\u0648 \u06cc\u0642\u06cc\u0646\u06cc \u0628\u0646\u0627\u062a\u0627 \u06c1\u06d2 \u06a9\u06c1 \u0627\u06cc\u062c\u0646\u0679 \u0627\u06cc\u06a9 \u06a9\u062b\u06cc\u0631 \u0645\u0631\u062d\u0644\u06c1 \u06a9\u0627\u0645 \u06a9\u06d2 \u06c1\u0631 \u0642\u062f\u0645 \u067e\u0631 \u062f\u0631\u0633\u062a \u0627\u0635\u0648\u0644 \u0644\u0627\u06af\u0648 \u06a9\u0631\u06cc\u06ba\u06d4 \u0627\u0633 \u0648\u0627\u0636\u062d \u062d\u0648\u0627\u0644\u06c1 \u06a9\u06d2 \u0628\u063a\u06cc\u0631\u060c \u0627\u06cc\u062c\u0646\u0679 \u0641\u0627\u0626\u0644 \u0622\u0631\u06af\u0646\u0627\u0626\u0632\u06cc\u0634\u0646 \u062a\u06a9\u0646\u06cc\u06a9 \u06a9\u0648 \u0645\u0631\u062d\u0644\u06c1 1 \u0645\u06cc\u06ba \u0644\u0627\u06af\u0648 \u06a9\u0631 \u0633\u06a9\u062a\u0627 \u06c1\u06d2 \u0644\u06cc\u06a9\u0646 \u0679\u06cc\u0633\u0679\u0646\u06af \u062a\u06a9\u0646\u06cc\u06a9 \u06a9\u0648 \u0645\u0631\u062d\u0644\u06c1 7 \u0633\u06d2 9 \u062a\u06a9 \u0644\u0627\u06af\u0648 \u06a9\u0631\u0646\u0627 \u0628\u06be\u0648\u0644 \u062c\u0627\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<h2 id=\"heading-using-skills-with-openai-codex\">OpenAI Codex \u0645\u06cc\u06ba \u0645\u06c1\u0627\u0631\u062a\u0648\u06ba \u06a9\u0627 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u06cc\u06ba\u06d4<\/h2>\n<p>OpenAI Codex \u0627\u06cc\u06a9 \u0679\u0631\u0645\u06cc\u0646\u0644 \u067e\u0631 \u0645\u0628\u0646\u06cc \u0627\u06cc\u062c\u0646\u0679 \u06a9\u0648\u0688\u0646\u06af \u0627\u0633\u0633\u0679\u0646\u0679 \u06c1\u06d2 \u062c\u0648 \u06a9\u0644\u0627\u0688 \u06a9\u0648\u0688 \u06a9\u06cc \u0637\u0631\u062d \u06c1\u06d2\u06d4 \u06cc\u06c1 \u0679\u0631\u0645\u06cc\u0646\u0644 \u0645\u06cc\u06ba \u0686\u0644\u062a\u0627 \u06c1\u06d2 \u0627\u0648\u0631 \u0622\u067e \u06a9\u06d2 \u06a9\u0648\u0688 \u0628\u06cc\u0633 \u06a9\u06d2 \u062e\u0644\u0627\u0641 \u0645\u0644\u0679\u06cc \u0633\u0679\u06cc\u067e \u0622\u067e\u0631\u06cc\u0634\u0646\u0632 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<h3 id=\"heading-installing-skills-for-codex\">\u06a9\u0648\u0688\u06cc\u06a9\u0633 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0645\u06c1\u0627\u0631\u062a\u06cc\u06ba \u0627\u0646\u0633\u0679\u0627\u0644 \u06a9\u0631\u06cc\u06ba\u06d4<\/h3>\n<pre><code class=\"language-bash\">npx skills add flutter\/agent-plugins --skill '*' --agent codex --yes\nnpx skills add dart-lang\/skills --skill '*' --agent codex --yes\n<\/code><\/pre>\n<p><code>--agent codex<\/code>    \u06a9\u0648\u0688\u06cc\u06a9\u0633 \u06a9\u0627 \u0645\u0642\u0635\u062f \u0645\u062a\u0639\u0644\u0642\u06c1 \u062a\u06a9\u0646\u06cc\u06a9\u06cc \u0688\u0627\u0626\u0631\u06cc\u06a9\u0679\u0631\u06cc\u0632 \u06a9\u06d2 \u0644\u06cc\u06d2 \u06c1\u06d2\u06d4 \u06a9\u0648\u0688\u06cc\u06a9\u0633 \u06cc\u0648\u0646\u06cc\u0648\u0631\u0633\u0644 \u0633\u06d2 \u0628\u06be\u06cc \u067e\u0691\u06be\u062a\u0627 \u06c1\u06d2\u06d4 <code>.agents\/skills\/<\/code> \u06a9\u06cc\u0648\u0646\u06a9\u06c1 \u06cc\u06c1 \u0627\u06cc\u06a9 \u0688\u0627\u0626\u0631\u06cc\u06a9\u0679\u0631\u06cc \u06c1\u06d2\u06d4 <code>--agent universal<\/code> \u062c\u06be\u0646\u0688\u06d2 \u06cc\u06a9\u0633\u0627\u06ba \u0637\u0648\u0631 \u067e\u0631 \u06a9\u0627\u0645 \u06a9\u0631\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4<\/p>\n<h3 id=\"heading-codex-rules-file\">\u06a9\u0648\u0688\u06cc\u06a9\u0633 \u0631\u0648\u0644\u0632 \u0641\u0627\u0626\u0644<\/h3>\n<p>\u06cc\u06c1 \u06a9\u0644\u0627\u0688 \u06a9\u0648\u0688 \u06a9\u06cc \u0637\u0631\u062d \u06c1\u06d2\u06d4 <code>CLAUDE.md<\/code>\u06a9\u0648\u0688\u06cc\u06a9\u0633 \u0627\u0633 \u0633\u06d2 \u067e\u0691\u06be\u062a\u0627 \u06c1\u06d2: <code>AGENTS.md<\/code> \u06cc\u06c1 \u0641\u0627\u0626\u0644 \u067e\u0631\u0648\u062c\u06cc\u06a9\u0679 \u0631\u0648\u0679 \u0645\u06cc\u06ba \u0648\u0627\u0642\u0639 \u06c1\u06d2\u06d4 \u0627\u0633\u06d2 \u0627\u067e\u0646\u06cc \u0645\u06c1\u0627\u0631\u062a \u06a9\u06d2 \u0633\u0627\u062a\u06be \u0645\u0646\u0638\u0645 \u06a9\u0631\u06cc\u06ba:<\/p>\n<pre><code class=\"language-markdown\"># AGENTS.md\n\nFlutter project: Kopa budgeting app\nStack: flutter_bloc, go_router, firebase_ai, freezed\nArchitecture: Feature-first with clean architecture\nTest framework: bloc_test + mocktail\n<\/code><\/pre>\n<p><code>AGENTS.md<\/code>    \u0627\u06cc\u06a9 \u067e\u0631\u0627\u062c\u06cc\u06a9\u0679 \u0648\u0633\u06cc\u0639 \u0633\u06cc\u0627\u0642 \u0648 \u0633\u0628\u0627\u0642 \u06a9\u06cc \u0641\u0627\u0626\u0644 \u062c\u0633\u06d2 \u06a9\u0648\u0688\u06cc\u06a9\u0633 \u06c1\u0631 \u06a9\u0627\u0645 \u067e\u0631 \u067e\u0691\u06be\u062a\u0627 \u06c1\u06d2\u06d4 \u0627\u0633\u06d2 \u0645\u062e\u062a\u0635\u0631 \u0631\u06a9\u06be\u06cc\u06ba\u06d4 5 \u0633\u06d2 15 \u0644\u0627\u0626\u0646\u0648\u06ba \u0645\u06cc\u06ba \u0633\u0628 \u0633\u06d2 \u0627\u06c1\u0645 \u067e\u0631\u0648\u062c\u06cc\u06a9\u0679 \u062d\u0642\u0627\u0626\u0642 \u06a9\u0627 \u0627\u062d\u0627\u0637\u06c1 \u06a9\u0631\u06cc\u06ba\u06d4 \u062a\u0641\u0635\u06cc\u0644\u06cc \u0627\u0635\u0648\u0644 \u0622\u0631\u0679 \u0633\u06d2 \u062a\u0639\u0644\u0642 \u0631\u06a9\u06be\u062a\u06d2 \u06c1\u06cc\u06ba\u060c \u0641\u0646 \u0633\u06d2 \u0646\u06c1\u06cc\u06ba\u06d4 <code>AGENTS.md<\/code>\u0627\u0633 \u06a9\u06cc \u0648\u062c\u06c1 \u06cc\u06c1 \u06c1\u06d2 \u06a9\u06c1 \u0679\u06cc\u06a9\u0646\u0627\u0644\u0648\u062c\u06cc \u0622\u06c1\u0633\u062a\u06c1 \u0622\u06c1\u0633\u062a\u06c1 \u0644\u0648\u0688 \u06c1\u0648\u062a\u06cc \u06c1\u06d2\u06d4 <code>AGENTS.md<\/code> \u06c1\u0645\u06cc\u0634\u06c1 \u0628\u06be\u0631\u06cc \u06c1\u0648\u0626\u06cc<\/p>\n<h3 id=\"heading-plugin-installation-note-for-codex\">\u06a9\u0648\u0688\u06cc\u06a9\u0633 \u067e\u0644\u06af \u0627\u0646 \u0627\u0646\u0633\u0679\u0627\u0644\u06cc\u0634\u0646 \u0646\u0648\u0679\u0633<\/h3>\n<p>\u06a9\u0648\u0688\u06cc\u06a9\u0633 \u067e\u0644\u06af \u0627\u0646 \u0641\u06cc \u0627\u0644\u062d\u0627\u0644 \u0642\u0648\u0627\u0639\u062f \u06a9\u06cc \u0641\u0627\u0626\u0644\u0648\u06ba \u06a9\u0648 \u062e\u0648\u062f \u0628\u062e\u0648\u062f \u0628\u0646\u0688\u0644 \u06a9\u0631\u0646\u06d2 \u0633\u06d2 \u0642\u0627\u0635\u0631 \u06c1\u06d2\u06d4 \u0627\u0633 \u06a9\u0627 \u0645\u0637\u0644\u0628 \u06c1\u06d2 \u0641\u0644\u0679\u0631 \u067e\u0644\u06af \u0627\u0646 \u0627\u0646\u0633\u0679\u0627\u0644 \u06a9\u0631\u0646\u0627 \u06cc\u06c1\u0627\u06ba \u0633\u06d2: <code>flutter\/agent-plugins<\/code> \u0645\u06c1\u0627\u0631\u062a\u0648\u06ba \u06a9\u0648 \u0627\u0646\u0633\u0679\u0627\u0644 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u060c \u0644\u06cc\u06a9\u0646 \u062e\u0648\u062f \u0628\u062e\u0648\u062f \u0627\u0646\u06c1\u06cc\u06ba \u062a\u062e\u0644\u06cc\u0642 \u0646\u06c1\u06cc\u06ba \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4 <code>AGENTS.md<\/code> \u0641\u0627\u0626\u0644<\/p>\n<p>\u067e\u0644\u06af \u0627\u0646 \u0627\u0646\u0633\u0679\u0627\u0644 \u06a9\u0631\u0646\u06d2 \u06a9\u06d2 \u0628\u0639\u062f \u0627\u0633 \u0641\u0627\u0626\u0644 \u06a9\u0648 \u062f\u0633\u062a\u06cc \u0637\u0648\u0631 \u067e\u0631 \u0628\u0646\u0627\u0626\u06cc\u06ba\u06d4 \u0633\u0631\u06a9\u0627\u0631\u06cc \u0641\u0644\u0679\u0631 \u062f\u0633\u062a\u0627\u0648\u06cc\u0632\u0627\u062a \u062a\u062c\u0648\u06cc\u0632 \u06a9\u0631\u062f\u06c1 \u0679\u06cc\u0645\u067e\u0644\u06cc\u0679\u0633 \u0641\u0631\u0627\u06c1\u0645 \u06a9\u0631\u062a\u06cc \u06c1\u06cc\u06ba\u06d4 <code>AGENTS.md<\/code> \u0641\u0644\u0679\u0631 \u067e\u0631\u0648\u062c\u06cc\u06a9\u0679\u0633 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0645\u0648\u0627\u062f\u06d4<\/p>\n<h2 id=\"heading-using-skills-with-cursor\">\u06a9\u0631\u0633\u0631 \u06a9\u06d2 \u0633\u0627\u062a\u06be \u0645\u06c1\u0627\u0631\u062a \u06a9\u0627 \u0627\u0633\u062a\u0639\u0645\u0627\u0644<\/h2>\n<p>\u06a9\u0631\u0633\u0631 \u0627\u06cc\u06a9 AI-\u067e\u06c1\u0644\u0627 \u06a9\u0648\u0688 \u0627\u06cc\u0688\u06cc\u0679\u0631 \u06c1\u06d2 \u062c\u0648 VS \u06a9\u0648\u0688 \u067e\u0631 \u0628\u0646\u0627\u06cc\u0627 \u06af\u06cc\u0627 \u06c1\u06d2\u06d4 \u06cc\u06c1 \u0627\u06cc\u062c\u0646\u0679 \u06a9\u06cc \u0641\u0639\u0627\u0644\u06cc\u062a \u06a9\u0648 \u0628\u0631\u0627\u06c1 \u0631\u0627\u0633\u062a \u0627\u06cc\u0688\u06cc\u0679\u0646\u06af \u06a9\u06d2 \u062a\u062c\u0631\u0628\u06d2 \u0645\u06cc\u06ba \u0636\u0645 \u06a9\u0631\u062a\u0627 \u06c1\u06d2 \u0627\u0648\u0631 \u0627\u0635\u0648\u0644\u0648\u06ba \u06a9\u06d2 \u0646\u0638\u0627\u0645 \u0627\u0648\u0631 \u0639\u0645\u0648\u0645\u06cc \u0645\u0642\u0627\u0635\u062f \u06a9\u06cc \u062e\u0635\u0648\u0635\u06cc\u0627\u062a \u06a9\u06d2 \u0627\u0645\u062a\u0632\u0627\u062c \u06a9\u06d2 \u0630\u0631\u06cc\u0639\u06d2 \u0679\u06cc\u06a9\u0646\u0627\u0644\u0648\u062c\u06cc \u06a9\u06cc \u062d\u0645\u0627\u06cc\u062a \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4 <code>.agents\/skills\/<\/code> \u0688\u0627\u0626\u0631\u06cc\u06a9\u0679\u0631\u06cc<\/p>\n<h3 id=\"heading-installing-skills-for-cursor\">\u06a9\u0631\u0633\u0631 \u06a9\u06cc \u0645\u06c1\u0627\u0631\u062a \u06a9\u0648 \u0627\u0646\u0633\u0679\u0627\u0644 \u06a9\u0631\u06cc\u06ba\u06d4<\/h3>\n<pre><code class=\"language-bash\">npx skills add flutter\/agent-plugins --skill '*' --agent cursor --yes\nnpx skills add dart-lang\/skills --skill '*' --agent cursor --yes\n<\/code><\/pre>\n<p>\u06a9\u0631\u0633\u0631 \u0645\u06c1\u0627\u0631\u062a \u06a9\u0648 \u067e\u0691\u06be\u062a\u0627 \u06c1\u06d2\u06d4 <code>.agents\/skills\/<\/code> \u0627\u06cc\u062c\u0646\u0679 \u06a9\u06d2 \u0633\u06cc\u0627\u0642 \u0648 \u0633\u0628\u0627\u0642 \u06a9\u06d2 \u062d\u0635\u06d2 \u06a9\u06d2 \u0637\u0648\u0631 \u067e\u0631\u06d4 \u06a9\u06c1 <code>--agent cursor<\/code> \u062c\u06be\u0646\u0688\u0627 \u0627\u0633 \u0628\u0627\u062a \u06a9\u0648 \u06cc\u0642\u06cc\u0646\u06cc \u0628\u0646\u0627\u062a\u0627 \u06c1\u06d2 \u06a9\u06c1 \u06a9\u0631\u0633\u0631 \u06a9\u06cc \u062a\u0644\u0627\u0634 \u06a9\u06d2 \u0637\u0631\u06cc\u0642\u06c1 \u06a9\u0627\u0631 \u06a9\u06cc \u062a\u06a9\u0646\u06cc\u06a9 \u0635\u062d\u06cc\u062d \u0637\u0631\u06cc\u0642\u06d2 \u0633\u06d2 \u067e\u0648\u0632\u06cc\u0634\u0646 \u0645\u06cc\u06ba \u06c1\u06d2\u06d4<\/p>\n<h3 id=\"heading-cursor-rules-integration\">\u06a9\u0631\u0633\u0631 \u0627\u0635\u0648\u0644 \u06a9\u0627 \u0627\u0646\u0636\u0645\u0627\u0645<\/h3>\n<p>\u06a9\u0631\u0633\u0631 \u06a9\u0627 \u0645\u0642\u0635\u062f <code>.cursorrules<\/code> (\u06cc\u0627 \u062a\u0627\u0632\u06c1 \u062a\u0631\u06cc\u0646 <code>.cursor\/rules\/<\/code> \u062a\u0627\u0632\u06c1 \u062a\u0631\u06cc\u0646 \u0648\u0631\u0698\u0646 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0688\u0627\u0626\u0631\u06a9\u0679\u0631\u06cc) \u06a9\u0644\u0627\u0688 \u06a9\u0648\u0688 \u06a9\u06cc \u0637\u0631\u062d \u067e\u0631\u0648\u062c\u06cc\u06a9\u0679 \u06a9\u06cc \u0648\u0633\u06cc\u0639 \u06c1\u062f\u0627\u06cc\u0627\u062a <code>CLAUDE.md<\/code>:<\/p>\n<pre><code class=\"language-markdown\"># .cursor\/rules\/flutter.mdc\n\n---\ndescription: Flutter project rules applied to all Dart files\nglobs: [\"**\/*.dart\", \"pubspec.yaml\"]\nalwaysApply: true\n---\n\nThis is a Flutter project using flutter_bloc, go_router, and freezed.\nAll state management uses the Bloc pattern.\nFeature-first folder structure with clean architecture.\nSee installed skills in .agents\/skills\/ for detailed conventions.\n<\/code><\/pre>\n<p><code>globs: [\"**\/*.dart\"]<\/code>    \u06c1\u0645 \u0627\u0633 \u0627\u0635\u0648\u0644 \u06a9\u0648 \u0635\u0631\u0641 \u0688\u0627\u0631\u0679 \u0641\u0627\u0626\u0644\u0648\u06ba \u0645\u06cc\u06ba \u062a\u0631\u0645\u06cc\u0645 \u06a9\u0631\u062a\u06d2 \u0648\u0642\u062a \u0644\u0627\u06af\u0648 \u06a9\u0631\u062a\u06d2 \u06c1\u06cc\u06ba\u060c \u0644\u06c1\u0630\u0627 \u0645\u0627\u0631\u06a9 \u0688\u0627\u0624\u0646 \u0627\u06cc\u0688\u06cc\u0679\u0646\u06af \u06cc\u0627 YAML \u06a9\u0646\u0641\u06cc\u06af\u0631\u06cc\u0634\u0646 \u06a9\u06d2 \u062f\u0648\u0631\u0627\u0646 \u0641\u0644\u0679\u0631 \u0631\u0648\u0644\u0632 \u0644\u0648\u0688 \u0646\u06c1\u06cc\u06ba \u06c1\u0648\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4 <code>alwaysApply: true<\/code> \u0627\u0633 \u0628\u0627\u062a \u06a9\u0648 \u06cc\u0642\u06cc\u0646\u06cc \u0628\u0646\u0627\u062a\u0627 \u06c1\u06d2 \u06a9\u06c1 \u062c\u0628 \u0645\u0645\u0627\u062b\u0644 \u0641\u0627\u0626\u0644 \u06a9\u06be\u0644\u06cc \u06c1\u0648 \u062a\u0648 \u0627\u0635\u0648\u0644 \u06c1\u0645\u06cc\u0634\u06c1 \u0633\u06cc\u0627\u0642 \u0648 \u0633\u0628\u0627\u0642 \u0645\u06cc\u06ba \u06c1\u0648\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<p>\u0646\u06cc\u0686\u06d2 \u062a\u06a9\u0646\u06cc\u06a9\u06cc \u0688\u0627\u0626\u0631\u06cc\u06a9\u0679\u0631\u06cc \u06a9\u0627 \u062d\u0648\u0627\u0644\u06c1 \u062c\u0627\u0646 \u0628\u0648\u062c\u06be \u06a9\u0631 \u062f\u06cc\u0627 \u06af\u06cc\u0627 \u06c1\u06d2\u06d4 \u06cc\u06c1 \u0627\u06cc\u062c\u0646\u0679 \u0633\u06d2 \u06a9\u06c1\u062a\u0627 \u06c1\u06d2 \u06a9\u06c1 \u0642\u0648\u0627\u0639\u062f \u06a9\u06cc \u0641\u0627\u0626\u0644 \u06a9\u0648 \u0628\u06c1\u062a \u0644\u0645\u0628\u0627 \u06a9\u0631\u0646\u06d2 \u06a9\u06d2 \u0628\u062c\u0627\u0626\u06d2 \u0646\u0641\u0627\u0630 \u06a9\u06cc \u062a\u0641\u0635\u06cc\u0644\u0627\u062a \u06a9\u06d2 \u0644\u06cc\u06d2 \u0679\u06cc\u06a9\u0646\u0627\u0644\u0648\u062c\u06cc \u06a9\u0648 \u062f\u06cc\u06a9\u06be\u06cc\u06ba\u06d4<\/p>\n<h3 id=\"heading-using-composer-and-chat-in-cursor-with-skills\">\u06a9\u0645\u067e\u0648\u0632\u0631 \u06a9\u0627 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u06cc\u06ba \u0627\u0648\u0631 \u0645\u06c1\u0627\u0631\u062a \u06a9\u0627 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u062a\u06d2 \u06c1\u0648\u0626\u06d2 \u06a9\u0631\u0633\u0631 \u067e\u0631 \u0686\u06cc\u0679 \u06a9\u0631\u06cc\u06ba\u06d4<\/h3>\n<p>\u062c\u0628 \u0622\u067e \u06a9\u0633\u06cc \u0639\u0645\u0644 \u06a9\u06cc \u0648\u0636\u0627\u062d\u062a \u06a9\u0631\u062a\u06d2 \u06c1\u06cc\u06ba \u062a\u0648 \u06a9\u0631\u0633\u0631 \u06a9\u0627 \u06a9\u0645\u067e\u0648\u0632\u0631 (\u0627\u06cc\u06a9 \u0645\u0644\u0679\u06cc \u0641\u0627\u0626\u0644 \u0627\u06cc\u0688\u06cc\u0679\u0646\u06af \u0627\u06cc\u062c\u0646\u0679) \u062e\u0648\u062f \u0628\u062e\u0648\u062f \u0645\u06c1\u0627\u0631\u062a\u06cc\u06ba \u0644\u0648\u0688 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4 \u06a9\u0631\u0633\u0631 \u0686\u06cc\u0679 (\u0627\u0646 \u0644\u0627\u0626\u0646 \u0627\u0633\u0633\u0679\u0646\u0679) \u0645\u06cc\u06ba \u0622\u067e \u06a9\u0648 \u0632\u06cc\u0627\u062f\u06c1 \u0648\u0627\u0636\u062d \u06c1\u0648\u0646\u06d2 \u06a9\u06cc \u0636\u0631\u0648\u0631\u062a \u067e\u0691\u0633\u06a9\u062a\u06cc \u06c1\u06d2\u06d4<\/p>\n<pre><code class=\"language-plaintext\">@flutter-file-organization Create a new PostCard widget \nextracted from the post list screen\n<\/code><\/pre>\n<p>\u06a9\u06c1 <code>@<\/code> \u06a9\u0631\u0633\u0631 \u0686\u06cc\u0679 \u0645\u06cc\u06ba \u0633\u0627\u0628\u0642\u06d2\u060c \u06a9\u0686\u06be \u06a9\u0646\u0641\u06cc\u06af\u0631\u06cc\u0634\u0646\u0632 \u0645\u06cc\u06ba\u060c \u0646\u0635\u0628 \u0634\u062f\u06c1 \u0679\u06cc\u06a9\u0646\u0627\u0644\u0648\u062c\u06cc\u0632 \u06a9\u0648 \u0646\u0627\u0645 \u06a9\u06d2 \u0644\u062d\u0627\u0638 \u0633\u06d2 \u062d\u0648\u0627\u0644\u06c1 \u062f\u06d2 \u0633\u06a9\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4 \u062f\u0648\u0633\u0631\u06d2 \u0645\u0639\u0627\u0645\u0644\u0627\u062a \u0645\u06cc\u06ba\u060c \u0627\u06cc\u062c\u0646\u0679 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0645\u062a\u0639\u0644\u0642\u06c1 \u0645\u06c1\u0627\u0631\u062a\u0648\u06ba \u06a9\u0648 \u062e\u0648\u062f \u0628\u062e\u0648\u062f \u0644\u0648\u0688 \u06a9\u0631\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0635\u0631\u0641 \u06a9\u0627\u0645 \u06a9\u0648 \u06a9\u0627\u0641\u06cc \u062a\u0641\u0635\u06cc\u0644 \u0633\u06d2 \u0628\u06cc\u0627\u0646 \u06a9\u0631\u0646\u0627 \u06a9\u0627\u0641\u06cc \u06c1\u06d2\u06d4<\/p>\n<h2 id=\"heading-using-skills-with-other-agents\">\u062f\u0648\u0633\u0631\u06d2 \u0627\u06cc\u062c\u0646\u0679\u0648\u06ba \u06a9\u06d2 \u0633\u0627\u062a\u06be \u0645\u06c1\u0627\u0631\u062a \u06a9\u0627 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u06cc\u06ba\u06d4<\/h2>\n<h3 id=\"heading-github-copilot-cli\">GitHub \u0634\u0631\u06cc\u06a9 \u067e\u0627\u0626\u0644\u0679 CLI<\/h3>\n<p>GitHub Copilot CLI \u06a9\u0648 \u0639\u0645\u0648\u0645\u06cc \u0645\u0642\u0635\u062f \u06a9\u06cc \u062d\u0645\u0627\u06cc\u062a \u062d\u0627\u0635\u0644 \u06c1\u06d2\u06d4 <code>.agents\/skills\/<\/code> \u062c\u0628 \u0627\u06cc\u062c\u0646\u0679 \u0645\u0648\u0688 \u0645\u06cc\u06ba \u0686\u0644 \u0631\u06c1\u0627 \u06c1\u0648\u060c \u0688\u0627\u0626\u0631\u06cc\u06a9\u0679\u0631\u06cc (<code>gh copilot explain<\/code> \u0627\u0648\u0631 <code>gh copilot suggest<\/code>):<\/p>\n<pre><code class=\"language-bash\">npx skills add flutter\/agent-plugins --skill '*' --agent copilot --yes\n<\/code><\/pre>\n<p>\u0646\u0648\u0679 <code>skills<\/code> GitHub Copilot \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u062a\u06d2 \u0648\u0642\u062a \u062e\u0648\u062f \u06a9\u0627\u0631 \u0637\u0631\u06cc\u0642\u06d2 \u0633\u06d2 \u067e\u062a\u06c1 \u0646\u06c1 \u0644\u06af\u0646\u06d2 \u06a9\u06d2 \u0628\u0627\u0631\u06d2 \u0645\u06cc\u06ba CLI \u062f\u0633\u062a\u0627\u0648\u06cc\u0632\u0627\u062a <code>skills get<\/code> \u06a9\u06cc\u0648\u0646\u06a9\u06c1 <code>.github\/<\/code> \u0688\u0627\u0626\u0631\u06cc\u06a9\u0679\u0631\u06cc\u0632 \u06a9\u0648 \u0639\u0627\u0645 \u0637\u0648\u0631 \u067e\u0631 \u0645\u062e\u062a\u0644\u0641 \u0645\u0642\u0627\u0635\u062f \u06a9\u06d2 \u0644\u06cc\u06d2 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u06cc\u0627 \u062c\u0627\u062a\u0627 \u06c1\u06d2\u06d4 \u06c1\u0645\u06cc\u0634\u06c1 \u0648\u0627\u0636\u062d \u0632\u0628\u0627\u0646 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u06cc\u06ba\u06d4 <code>--agent copilot<\/code> Copilot \u06a9\u06d2 \u0644\u06cc\u06d2 \u0679\u06cc\u06a9\u0646\u0627\u0644\u0648\u062c\u06cc\u0632 \u0627\u0646\u0633\u0679\u0627\u0644 \u06a9\u0631\u062a\u06d2 \u0648\u0642\u062a \u062c\u06be\u0646\u0688\u0627 \u0644\u06af\u0627\u0626\u06cc\u06ba\u06d4<\/p>\n<h3 id=\"heading-gemini-cli\">\u062c\u06cc\u0645\u0646\u06cc \u0633\u06cc \u0627\u06cc\u0644 \u0622\u0626\u06cc<\/h3>\n<p>\u06af\u0648\u06af\u0644 \u06a9\u06cc \u062c\u06cc\u0645\u0646\u06cc \u0633\u06cc \u0627\u06cc\u0644 \u0622\u0626\u06cc \u06cc\u0648\u0646\u06cc\u0648\u0631\u0633\u0644 \u0679\u06cc\u06a9\u0646\u06cc\u06a9\u0644 \u0688\u0627\u0626\u0631\u06a9\u0679\u0631\u06cc \u06a9\u0648 \u0633\u067e\u0648\u0631\u0679 \u06a9\u0631\u062a\u06cc \u06c1\u06d2\u06d4<\/p>\n<pre><code class=\"language-bash\">npx skills add flutter\/agent-plugins --skill '*' --agent gemini --yes\n<\/code><\/pre>\n<h3 id=\"heading-universal-installation\">\u0639\u0627\u0644\u0645\u06af\u06cc\u0631 \u062a\u0646\u0635\u06cc\u0628<\/h3>\n<p>\u0627\u06af\u0631 \u0622\u067e \u0627\u06cc\u06a9 \u06c1\u06cc \u062a\u0646\u0635\u06cc\u0628 \u0686\u0627\u06c1\u062a\u06d2 \u06c1\u06cc\u06ba \u062c\u0648 \u0628\u06cc\u06a9 \u0648\u0642\u062a \u062a\u0645\u0627\u0645 \u0627\u06cc\u062c\u0646\u0679\u0648\u06ba \u06a9\u06d2 \u0644\u06cc\u06d2 \u06a9\u0627\u0645 \u06a9\u0631\u06d2:<\/p>\n<pre><code class=\"language-bash\">npx skills add flutter\/agent-plugins --skill '*' --agent universal --yes\nnpx skills add dart-lang\/skills --skill '*' --agent universal --yes\n<\/code><\/pre>\n<p>\u06a9\u06c1 <code>universal<\/code> \u0627\u06cc\u062c\u0646\u0679 \u06a9\u0648 \u0679\u0627\u0631\u06af\u0679 \u06a9\u0631\u0646\u06d2 \u06a9\u06cc \u0645\u06c1\u0627\u0631\u062a\u06cc\u06ba \u0627\u0633 \u067e\u0631 \u062a\u0639\u06cc\u0646\u0627\u062a \u06a9\u0631\u062a\u06cc \u06c1\u06cc\u06ba: <code>.agents\/skills\/<\/code>\u062a\u0645\u0627\u0645 \u062a\u0639\u0645\u06cc\u0644 \u06a9\u0631\u0646\u06d2 \u0648\u0627\u0644\u06d2 \u0627\u06cc\u062c\u0646\u0679 \u062e\u0648\u062f \u0628\u062e\u0648\u062f \u062f\u0631\u06cc\u0627\u0641\u062a \u06c1\u0648 \u062c\u0627\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4 \u06cc\u06c1 \u0627\u0646 \u0679\u06cc\u0645\u0648\u06ba \u06a9\u06d2 \u0644\u06cc\u06d2 \u062a\u062c\u0648\u06cc\u0632 \u06a9\u0631\u062f\u06c1 \u0688\u06cc\u0641\u0627\u0644\u0679 \u06c1\u06d2 \u062c\u0648 \u0627\u06cc\u06a9 \u0633\u06d2 \u0632\u06cc\u0627\u062f\u06c1 \u0627\u06cc\u062c\u0646\u0679\u0648\u06ba \u06a9\u0627 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u062a\u06cc \u06c1\u06cc\u06ba \u06cc\u0627 \u0627\u06cc\u062c\u0646\u0679-\u0627\u06af\u0646\u0648\u0633\u0679\u06a9 \u0628\u0646\u0646\u0627 \u0686\u0627\u06c1\u062a\u06cc \u06c1\u06cc\u06ba\u06d4<\/p>\n<h3 id=\"heading-verifying-agent-discovery\">\u0627\u06cc\u062c\u0646\u0679 \u06a9\u06cc \u062f\u0631\u06cc\u0627\u0641\u062a \u06a9\u06cc \u062a\u0635\u062f\u06cc\u0642 \u06a9\u0631\u06cc\u06ba\u06d4<\/h3>\n<p>\u0627\u0633 \u0633\u06d2 \u06a9\u0648\u0626\u06cc \u0641\u0631\u0642 \u0646\u06c1\u06cc\u06ba \u067e\u0691\u062a\u0627 \u06c1\u06d2 \u06a9\u06c1 \u0622\u067e \u06a9\u0648\u0646 \u0633\u0627 \u0627\u06cc\u062c\u0646\u0679 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u062a\u06d2 \u06c1\u06cc\u06ba\u060c \u0622\u067e \u0627\u06cc\u062c\u0646\u0679 \u0633\u06d2 \u0642\u062f\u0631\u062a\u06cc \u0632\u0628\u0627\u0646 \u06a9\u06d2 \u0633\u0648\u0627\u0644\u0627\u062a \u067e\u0648\u0686\u06be \u06a9\u0631 \u0627\u067e\u0646\u06cc \u0645\u06c1\u0627\u0631\u062a \u06a9\u06cc \u062f\u0631\u06cc\u0627\u0641\u062a\u0648\u06ba \u06a9\u06cc \u062a\u0635\u062f\u06cc\u0642 \u06a9\u0631 \u0633\u06a9\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4<\/p>\n<pre><code class=\"language-plaintext\">Summarize the capabilities of the skills you have available for this project.\n<\/code><\/pre>\n<p>\u0627\u06cc\u06a9 \u0645\u0646\u0627\u0633\u0628 \u0637\u0631\u06cc\u0642\u06d2 \u0633\u06d2 \u062a\u0634\u06a9\u06cc\u0644 \u0634\u062f\u06c1 \u0627\u06cc\u062c\u0646\u0679 \u0627\u0646\u0633\u0679\u0627\u0644 \u0634\u062f\u06c1 \u0679\u06cc\u06a9\u0646\u0627\u0644\u0648\u062c\u06cc\u0632 \u06a9\u06cc \u0641\u06c1\u0631\u0633\u062a \u0627\u0648\u0631 \u0627\u0646 \u06a9\u06cc \u062a\u0641\u0635\u06cc\u0644 \u06a9\u06d2 \u0633\u0627\u062a\u06be \u0627\u0633 \u0628\u0627\u062a \u06a9\u06cc \u062a\u0635\u062f\u06cc\u0642 \u06a9\u0631\u06d2 \u06af\u0627 \u06a9\u06c1 \u062f\u0631\u06cc\u0627\u0641\u062a \u06a9\u0627\u0645 \u06a9\u0631 \u0631\u06c1\u06cc \u06c1\u06d2\u06d4 \u0627\u06af\u0631 \u0627\u06cc\u062c\u0646\u0679 \u06a9\u06c1\u062a\u0627 \u06c1\u06d2 \u06a9\u06c1 \u0627\u0646 \u06a9\u06d2 \u067e\u0627\u0633 \u0645\u06c1\u0627\u0631\u062a \u0646\u06c1\u06cc\u06ba \u06c1\u06d2 \u06cc\u0627 \u0648\u06c1 \u0627\u0633\u06d2 \u062a\u0644\u0627\u0634 \u0646\u06c1\u06cc\u06ba \u06a9\u0631 \u067e\u0627 \u0631\u06c1\u06d2 \u06c1\u06cc\u06ba\u060c \u062a\u0648 \u062f\u0631\u062c \u0630\u06cc\u0644 \u06a9\u0648 \u0686\u06cc\u06a9 \u06a9\u0631\u06cc\u06ba:<\/p>\n<ol>\n<li>\n<p>\u06a9\u06c1 <code>.agents\/skills\/<\/code> \u0688\u0627\u0626\u0631\u06cc\u06a9\u0679\u0631\u06cc \u067e\u0631\u0648\u062c\u06cc\u06a9\u0679 \u0631\u0648\u0679 \u0645\u06cc\u06ba \u0645\u0648\u062c\u0648\u062f \u06c1\u06d2\u06d4<\/p>\n<\/li>\n<li>\n<p>\u0688\u0627\u0626\u0631\u06cc\u06a9\u0679\u0631\u06cc \u067e\u0631 \u0645\u0634\u062a\u0645\u0644 \u06c1\u06d2: <code>.md<\/code> \u062f\u0631\u0633\u062a YAML \u06c1\u06cc\u0688\u0631 \u06a9\u06d2 \u0633\u0627\u062a\u06be \u0641\u0627\u0626\u0644<\/p>\n<\/li>\n<li>\n<p>\u0627\u06cc\u062c\u0646\u0679 \u0622\u0641\u0627\u0642\u06cc \u062a\u06a9\u0646\u06cc\u06a9\u06cc \u062e\u0635\u0648\u0635\u06cc\u0627\u062a \u06a9\u06cc \u062d\u0645\u0627\u06cc\u062a \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<\/li>\n<\/ol>\n<h2 id=\"heading-the-official-flutter-skills-a-deep-dive\">\u0622\u0641\u06cc\u0634\u0644 \u0641\u0644\u0679\u0631 \u0679\u06cc\u06a9\u0646\u0627\u0644\u0648\u062c\u06cc: \u0627\u06cc\u06a9 \u06af\u06c1\u0631\u0627 \u063a\u0648\u0637\u06c1<\/h2>\n<p>\u0633\u0631\u06a9\u0627\u0631\u06cc \u0641\u0644\u0679\u0631 \u0679\u06cc\u06a9\u0646\u0627\u0644\u0648\u062c\u06cc \u0630\u062e\u06cc\u0631\u06c1 (<code>flutter\/agent-plugins<\/code>) \u0645\u06cc\u06ba \u062a\u06a9\u0646\u06cc\u06a9\u0648\u06ba \u06a9\u0627 \u0627\u06cc\u06a9 \u0645\u062c\u0645\u0648\u0639\u06c1 \u0634\u0627\u0645\u0644 \u06c1\u06d2 \u062c\u0648 \u0639\u0627\u0645 \u062a\u0631\u0642\u06cc \u06a9\u06d2 \u0646\u0645\u0648\u0646\u0648\u06ba \u06a9\u06d2 \u0628\u0627\u0631\u06d2 \u0645\u06cc\u06ba \u0641\u0644\u0679\u0631 \u0679\u06cc\u0645 \u06a9\u06cc \u0628\u06c1\u062a\u0631\u06cc\u0646 \u0633\u0648\u0686 \u06a9\u06cc \u0646\u0645\u0627\u0626\u0646\u062f\u06af\u06cc \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4 \u06c1\u0631 \u0679\u06cc\u06a9\u0646\u0627\u0644\u0648\u062c\u06cc \u06a9\u0627 \u0627\u062d\u0627\u0637\u06c1 \u06a9\u0631\u0646\u06d2 \u0633\u06d2 \u0622\u067e \u06a9\u0648 \u06cc\u06c1 \u0641\u06cc\u0635\u0644\u06c1 \u06a9\u0631\u0646\u06d2 \u0645\u06cc\u06ba \u0645\u062f\u062f \u0645\u0644\u06d2 \u06af\u06cc \u06a9\u06c1 \u06a9\u0648\u0646 \u0633\u06cc \u0679\u06cc\u06a9\u0646\u0627\u0644\u0648\u062c\u06cc\u0632 \u0627\u0646\u0633\u0679\u0627\u0644 \u06a9\u0631\u0646\u06cc \u06c1\u06cc\u06ba\u060c \u06a9\u0648\u0646 \u0633\u06cc \u0679\u06cc\u06a9\u0646\u0627\u0644\u0648\u062c\u06cc\u0632 \u06a9\u0648 \u0627\u067e\u0646\u06cc \u0645\u0631\u0636\u06cc \u06a9\u06d2 \u0645\u0637\u0627\u0628\u0642 \u0628\u0646\u0627\u0646\u0627 \u06c1\u06d2\u060c \u0627\u0648\u0631 \u06a9\u0648\u0646 \u0633\u06cc \u0679\u06cc\u06a9\u0646\u0627\u0644\u0648\u062c\u06cc\u0632 \u06a9\u0648 \u0622\u067e \u06a9\u06cc \u0627\u067e\u0646\u06cc \u0679\u06cc\u06a9\u0646\u0627\u0644\u0648\u062c\u06cc\u0632 \u06a9\u06d2 \u0633\u0627\u062a\u06be \u0645\u0644\u0646\u0627 \u06c1\u06d2\u06d4<\/p>\n<h3 id=\"heading-flutter-responsive-layout\">\u0644\u06c1\u0631\u0627\u0646\u0627 \u0642\u0628\u0648\u0644 \u0644\u06d2 \u0622\u0624\u0679<\/h3>\n<p>\u06cc\u06c1 \u06c1\u0646\u0631 \u0627\u06cc\u062c\u0646\u0679\u0648\u06ba \u06a9\u0648 \u0633\u06a9\u06be\u0627\u062a\u0627 \u06c1\u06d2 \u06a9\u06c1 \u0648\u06c1 \u0644\u06d2 \u0622\u0624\u0679 \u06a9\u06cc\u0633\u06d2 \u0628\u0646\u0627\u0626\u06d2 \u062c\u0648 \u0645\u0648\u0628\u0627\u0626\u0644\u060c \u0679\u06cc\u0628\u0644\u06cc\u0679 \u0627\u0648\u0631 \u0688\u06cc\u0633\u06a9 \u0679\u0627\u067e \u0628\u0631\u06cc\u06a9 \u067e\u0648\u0627\u0626\u0646\u0679\u0633 \u067e\u0631 \u0635\u062d\u06cc\u062d \u0637\u0631\u06cc\u0642\u06d2 \u0633\u06d2 \u0644\u0627\u06af\u0648 \u06c1\u0648\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4 \u06cc\u06c1 \u0627\u062d\u0627\u0637\u06c1 \u06a9\u0631\u062a\u0627 \u06c1\u06d2 <code>AdaptiveScaffold<\/code>, <code>LayoutBuilder<\/code>, <code>MediaQuery<\/code>, <code>Breakpoints<\/code>Flutter Adaptive Framework \u06a9\u06cc \u0637\u0631\u0641 \u0633\u06d2 \u0645\u062e\u062a\u0644\u0641 \u0627\u0633\u06a9\u0631\u06cc\u0646 \u0633\u0627\u0626\u0632\u0632 \u06a9\u0648 \u06c1\u06cc\u0646\u0688\u0644 \u06a9\u0631\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u062a\u062c\u0648\u06cc\u0632 \u06a9\u0631\u062f\u06c1 \u067e\u06cc\u0679\u0631\u0646 \u0645\u0648\u062c\u0648\u062f \u06c1\u06cc\u06ba\u060c \u0627\u0648\u0631 \u0628\u06c1\u062a \u06a9\u0686\u06be\u06d4<\/p>\n<p>\u0627\u0633 \u0679\u06cc\u06a9\u0646\u0627\u0644\u0648\u062c\u06cc \u06a9\u06d2 \u0628\u063a\u06cc\u0631\u060c \u0627\u06cc\u062c\u0646\u0679 \u0627\u06cc\u0633\u06d2 \u0644\u06d2 \u0622\u0624\u0679 \u0628\u0646\u0627\u062a\u06d2 \u06c1\u06cc\u06ba \u062c\u0648 \u0627\u06cc\u06a9 \u0688\u06cc\u0648\u0627\u0626\u0633 \u06a9\u06d2 \u0633\u0627\u0626\u0632 \u067e\u0631 \u0627\u0686\u06be\u06d2 \u0644\u06af\u062a\u06d2 \u06c1\u06cc\u06ba \u0644\u06cc\u06a9\u0646 \u062f\u0648\u0633\u0631\u06d2 \u0688\u06cc\u0648\u0627\u0626\u0633 \u06a9\u06d2 \u0633\u0627\u0626\u0632 \u067e\u0631 \u0679\u0648\u0679 \u062c\u0627\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4 \u06cc\u06c1 \u0627\u06cc\u062c\u0646\u0679 \u06a9\u0648 \u06c1\u0627\u0631\u0688 \u06a9\u0648\u0688\u0688 \u067e\u06a9\u0633\u0644 \u062a\u06be\u0631\u06cc\u0634\u0648\u0644\u0688\u0632 \u06a9\u06cc \u0628\u062c\u0627\u0626\u06d2 \u0635\u062d\u06cc\u062d \u0641\u0644\u0679\u0631 \u0645\u062e\u0635\u0648\u0635 \u0679\u0648\u0644\u0632 \u06a9\u0627 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u062a\u06d2 \u06c1\u0648\u0626\u06d2 \u06a9\u0648\u0688 \u06a9\u06cc \u067e\u06c1\u0644\u06cc \u0644\u0627\u0626\u0646 \u0633\u06d2 \u062c\u0648\u0627\u0628\u06cc \u062a\u0631\u062a\u06cc\u0628 \u062a\u06cc\u0627\u0631 \u06a9\u0631\u0646\u06d2 \u06a9\u06cc \u0627\u062c\u0627\u0632\u062a \u062f\u06cc\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<h3 id=\"heading-flutter-declarative-routing\">flutter \u0627\u0639\u0644\u0627\u0646\u06cc\u06c1 \u0631\u0648\u0679\u0646\u06af<\/h3>\n<p>\u06cc\u06c1 \u062a\u06a9\u0646\u06cc\u06a9 GoRouter \u0633\u06cc\u0679 \u0627\u067e\u060c \u0631\u0648\u0679 \u0688\u06cc\u0641\u06cc\u0646\u06cc\u0634\u0646 \u067e\u06cc\u0679\u0631\u0646\u060c \u0646\u06cc\u0633\u0679\u0688 \u0646\u06cc\u0648\u06cc\u06af\u06cc\u0634\u0646\u060c \u062a\u0648\u062b\u06cc\u0642 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0631\u06cc \u0688\u0627\u0626\u0631\u06cc\u06a9\u0679 \u0645\u0646\u0637\u0642\u060c \u06af\u06c1\u0631\u06d2 \u0631\u0648\u0627\u0628\u0637 \u06a9\u06cc \u062a\u0634\u06a9\u06cc\u0644\u060c \u0627\u0648\u0631 \u0631\u0627\u0633\u062a\u0648\u06ba \u06a9\u06d2 \u062f\u0631\u0645\u06cc\u0627\u0646 \u062f\u0627\u062e\u0644 \u06a9\u0631\u062f\u06c1 \u067e\u06cc\u0631\u0627\u0645\u06cc\u0679\u0631\u0632 \u06a9\u0648 \u0645\u0646\u062a\u0642\u0644 \u06a9\u0631\u0646\u06d2 \u06a9\u0627 \u0635\u062d\u06cc\u062d \u0637\u0631\u06cc\u0642\u06c1 \u0633\u06a9\u06be\u0627\u062a\u06cc \u06c1\u06d2\u06d4<\/p>\n<p>\u0627\u0633 \u0645\u06c1\u0627\u0631\u062a \u06a9\u06d2 \u0628\u063a\u06cc\u0631\u060c \u0627\u06cc\u062c\u0646\u0679 \u0627\u06a9\u062b\u0631 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u062a\u06d2 \u06c1\u06cc\u06ba: <code>Navigator.push<\/code> \u06a9\u0648\u0688 \u0628\u06cc\u0633 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0628\u06be\u06cc \u06cc\u06c1\u06cc \u0628\u0627\u062a \u06c1\u06d2 \u062c\u0648 GoRouter \u06a9\u0648 \u06c1\u0631 \u062c\u06af\u06c1 \u0627\u0646\u0635\u0627\u0641 \u06a9\u06d2 \u0633\u0627\u062a\u06be \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4 \u0645\u0632\u06cc\u062f \u0628\u0631\u0622\u06ba\u060c \u0688\u06cc\u067e \u0644\u0646\u06a9\u0646\u06af \u0639\u0627\u0645 \u0637\u0648\u0631 \u067e\u0631 \u0646\u0627\u0642\u0635 \u0627\u0646 \u067e\u0679 \u067e\u06cc\u0631\u0627\u0645\u06cc\u0679\u0631 \u0646\u06a9\u0627\u0644\u0646\u06d2 \u06a9\u06d2 \u067e\u06cc\u0679\u0631\u0646 \u06a9\u0627 \u0634\u06a9\u0627\u0631 \u06c1\u0648\u062a\u06cc \u06c1\u06d2 \u062c\u0633 \u06a9\u06cc GoRouter \u06a9\u0648 \u0636\u0631\u0648\u0631\u062a \u06c1\u0648\u062a\u06cc \u06c1\u06d2\u06d4<\/p>\n<h3 id=\"heading-flutter-json-serialization\">flutter-json-serialization<\/h3>\n<p>\u06cc\u06c1 \u06c1\u0646\u0631 \u0633\u06a9\u06be\u0627\u062a\u0627 \u06c1\u06d2: <code>json_serializable<\/code> \u0627\u0648\u0631 <code>freezed<\/code> \u0648\u0631\u06a9 \u0641\u0644\u0648: \u062a\u0634\u0631\u06cc\u062d \u0634\u0627\u0645\u0644 \u06a9\u0631\u06cc\u06ba\u060c \u0686\u0644\u0627\u0626\u06cc\u06ba\u06d4 <code>build_runner<\/code>\u0646\u0633\u0644 <code>fromJson<\/code>\/<code>toJson<\/code> \u0637\u0631\u06cc\u0642\u06d2\u060c \u06c1\u06cc\u0646\u0688\u0644\u0646\u06af \u0627\u0648\u0631 \u06a9\u0627\u0644\u0639\u062f\u0645 \u0641\u06cc\u0644\u0688\u0632 \u06a9\u0627 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 <code>@JsonKey<\/code> \u0641\u06cc\u0644\u0688 \u06a9\u06d2 \u0646\u0627\u0645 \u06a9\u06cc \u0646\u0642\u0634\u06c1 \u0633\u0627\u0632\u06cc \u06a9\u06d2 \u0644\u06cc\u06d2\u06d4<\/p>\n<p>\u0627\u0633 \u0679\u06cc\u06a9\u0646\u0627\u0644\u0648\u062c\u06cc \u06a9\u06d2 \u0628\u063a\u06cc\u0631\u060c \u0627\u06cc\u062c\u0646\u0679\u0648\u06ba \u06a9\u0648 \u06cc\u0627 \u062a\u0648 \u0633\u06cc\u0631\u06cc\u0644\u0627\u0626\u0632\u06cc\u0634\u0646 \u06a9\u0648\u0688 \u06a9\u0648 \u062f\u0633\u062a\u06cc \u0637\u0648\u0631 \u067e\u0631 \u0644\u06a9\u06be\u0646\u0627 \u067e\u0691\u06d2 \u06af\u0627 \u06cc\u0627 <code>Map<string dynamic=\"\"\/><\/code> \u06cc\u06c1 \u0646\u0627\u0632\u06a9 \u06a9\u0648\u0688 \u0628\u0646\u0627\u062a\u0627 \u06c1\u06d2 \u062c\u0648 \u0688\u06cc\u0679\u0627 \u0644\u06cc\u0626\u0631 \u0645\u06cc\u06ba \u0641\u06cc\u0644\u0688 \u06a9\u06d2 \u0646\u0627\u0645 \u062a\u0628\u062f\u06cc\u0644 \u06c1\u0648\u0646\u06d2 \u067e\u0631 \u062e\u0627\u0645\u0648\u0634\u06cc \u0633\u06d2 \u0679\u0648\u0679 \u062c\u0627\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<h3 id=\"heading-flutter-add-widget-test\">flutter-add-widget-test<\/h3>\n<p>\u06cc\u06c1 \u06c1\u0646\u0631 \u0633\u06a9\u06be\u0627\u06cc\u0627 \u062c\u0627\u062a\u0627 \u06c1\u06d2\u06d4 <code>testWidgets<\/code>, <code>WidgetTester<\/code>\u067e\u0645\u067e \u06a9\u06cc \u062d\u06a9\u0645\u062a \u0639\u0645\u0644\u06cc (<code>pump<\/code>, <code>pumpAndSettle<\/code>, <code>pumpWidget<\/code>) \u0648\u06cc\u062c\u06cc\u0679 \u062a\u0644\u0627\u0634 \u06a9\u0631\u06cc\u06ba (<code>find.text<\/code>, <code>find.byType<\/code>, <code>find.byKey<\/code>)\u060c \u0627\u0634\u0627\u0631\u06d2 \u06a9\u06cc \u062a\u062e\u0631\u0648\u067e\u0646\u060c \u0627\u0648\u0631 \u0633\u06cc\u06a9\u06be\u06cc\u06ba \u06a9\u06c1 \u0627\u067e\u0646\u06d2 \u0648\u06cc\u062c\u0679\u0633 \u06a9\u0648 \u06a9\u0645 \u0633\u06d2 \u06a9\u0645 \u0644\u06cc\u06a9\u0646 \u06a9\u0627\u0641\u06cc \u0679\u06cc\u0633\u0679\u0646\u06af \u0627\u0646\u0641\u0631\u0627\u0633\u0679\u0631\u06a9\u0686\u0631 \u0645\u06cc\u06ba \u06a9\u06cc\u0633\u06d2 \u0644\u067e\u06cc\u0679\u0646\u0627 \u06c1\u06d2\u06d4<\/p>\n<h3 id=\"heading-flutter-add-integration-test\">flutter-add-integration-test<\/h3>\n<p>\u06cc\u06c1 \u06c1\u0646\u0631 \u0622\u067e \u06a9\u0648 \u0633\u06a9\u06be\u0627\u062a\u0627 \u06c1\u06d2 \u06a9\u06c1 \u0688\u06cc\u0648\u0627\u0626\u0633\u060c \u0648\u06cc\u0628 \u0628\u0631\u0627\u0624\u0632\u0631\u060c \u06cc\u0627 Firebase \u0679\u06cc\u0633\u0679 \u0644\u06cc\u0628 \u067e\u0631 \u0627\u06cc\u0646\u0688 \u0679\u0648 \u0627\u06cc\u0646\u0688 \u0627\u0646\u0679\u06cc\u06af\u0631\u06cc\u0634\u0646 \u0679\u06cc\u0633\u0679 \u06a9\u06cc\u0633\u06d2 \u062a\u0631\u062a\u06cc\u0628 \u062f\u06cc\u0646\u0627 \u0627\u0648\u0631 \u0686\u0644\u0627\u0646\u0627 \u06c1\u06d2\u06d4 \u0679\u06cc\u0633\u0679 \u0633\u06cc\u0679 \u0627\u067e\u060c <code>IntegrationTestWidgetsFlutterBinding<\/code>\u0627\u0646 \u0645\u06cc\u06ba \u0627\u06cc\u067e \u0644\u0627\u0646\u0686 \u0622\u0631\u0688\u0631 \u06a9\u06cc \u0648\u0636\u0627\u062d\u062a \u06a9\u0631\u0646\u0627\u060c \u0622\u067e \u06a9\u06d2 \u0679\u06cc\u0633\u0679\u0648\u06ba \u0645\u06cc\u06ba \u0645\u06a9\u0645\u0644 \u0637\u0648\u0631 \u067e\u0631 \u0686\u0644\u0646\u06d2 \u0648\u0627\u0644\u06cc \u0627\u06cc\u067e \u06a9\u06d2 \u0633\u0627\u062a\u06be \u062a\u0639\u0627\u0645\u0644 \u06a9\u0631\u0646\u0627 \u0627\u0648\u0631 \u0645\u0632\u06cc\u062f \u0628\u06c1\u062a \u06a9\u0686\u06be \u0634\u0627\u0645\u0644 \u06c1\u06d2\u06d4<\/p>\n<h3 id=\"heading-flutter-bloc\">\u0641\u0644\u0679\u0631 \u0628\u0644\u0627\u06a9<\/h3>\n<p>\u06cc\u06c1 \u062a\u06a9\u0646\u06cc\u06a9 \u067e\u0648\u0631\u06d2 \u0628\u0644\u0627\u06a9 \u0648\u0631\u06a9 \u0641\u0644\u0648 \u06a9\u0648 \u0633\u06a9\u06be\u0627\u062a\u06cc \u06c1\u06d2\u060c \u0648\u0627\u0642\u0639\u0627\u062a\u060c \u0631\u06cc\u0627\u0633\u062a \u0627\u0648\u0631 \u0628\u0644\u0627\u06a9 \u06a9\u06cc \u06a9\u0644\u0627\u0633\u0648\u06ba \u06a9\u06cc \u0648\u0636\u0627\u062d\u062a \u06a9\u0631\u062a\u06cc \u06c1\u06d2 \u0627\u0648\u0631 \u0628\u0644\u0627\u06a9 \u06a9\u0648 \u0641\u0631\u0627\u06c1\u0645 \u06a9\u0631\u062a\u06cc \u06c1\u06d2: <code>BlocProvider<\/code>\u0627\u06cc\u06a9 \u0633\u0627\u062a\u06be \u0644\u06cc\u0627 \u06af\u06cc\u0627\u06d4 <code>BlocBuilder<\/code>, <code>BlocListener<\/code>\u0627\u0648\u0631 <code>BlocConsumer<\/code>\u0627\u0648\u0631 \u0679\u06cc\u0633\u0679 <code>bloc_test<\/code>.<\/p>\n<h3 id=\"heading-flutter-apply-architecture-best-practices\">flutter-apply-architecture-best-practices<\/h3>\n<p>\u06cc\u06c1 \u06c1\u0646\u0631 \u0635\u0627\u0641 \u0641\u0646 \u062a\u0639\u0645\u06cc\u0631 (\u0688\u06cc\u0679\u0627\u060c \u0688\u0648\u0645\u06cc\u0646\u060c \u067e\u0631\u06cc\u0632\u0646\u0679\u06cc\u0634\u0646) \u06a9\u0627 \u0627\u0637\u0644\u0627\u0642 \u0633\u0631\u06a9\u0627\u0631\u06cc \u0641\u0644\u0679\u0631 \u0679\u06cc\u0645 \u06a9\u06d2 \u062a\u062c\u0648\u06cc\u0632 \u06a9\u0631\u062f\u06c1 BLoC \u067e\u06cc\u0679\u0631\u0646 \u06a9\u06d2 \u0633\u0627\u062a\u06be \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4 \u067e\u0631\u062a \u06a9\u06cc \u062d\u062f\u0648\u062f\u060c \u0627\u0646\u062d\u0635\u0627\u0631 \u06a9\u06d2 \u0642\u0648\u0627\u0639\u062f\u060c \u0627\u0648\u0631 \u0627\u0633\u0679\u0648\u0631\u06cc\u062c \u067e\u06cc\u0679\u0631\u0646 \u06a9\u06cc \u0648\u0636\u0627\u062d\u062a \u06a9\u0631\u06cc\u06ba\u06d4<\/p>\n<h3 id=\"heading-flutter-add-widget-preview\">flutter-extra-widgets-preview<\/h3>\n<p>\u06cc\u06c1 \u062a\u06a9\u0646\u06cc\u06a9 \u0641\u0644\u0679\u0631 3.47 \u0645\u06cc\u06ba \u0645\u062a\u0639\u0627\u0631\u0641 \u06a9\u0631\u0627\u0626\u06d2 \u06af\u0626\u06d2 \u0648\u06cc\u062c\u06cc\u0679 \u067e\u06cc\u0634 \u0646\u0638\u0627\u0631\u06c1 \u06a9\u06d2 \u0646\u0638\u0627\u0645 \u06a9\u0648 \u0633\u06a9\u06be\u0627\u062a\u06cc \u06c1\u06d2\u060c \u0628\u0634\u0645\u0648\u0644: <code>@Preview<\/code> \u062a\u0634\u0631\u06cc\u062d\u0627\u062a \u062a\u0631\u062a\u06cc\u0628 \u062f\u06cc\u0646\u06d2\u060c \u0628\u0646\u06cc\u0627\u062f\u06cc \u0688\u06be\u0627\u0646\u0686\u06d2 \u06a9\u0627 \u067e\u06cc\u0634 \u0646\u0638\u0627\u0631\u06c1 \u06a9\u0631\u0646\u06d2 \u0627\u0648\u0631 \u067e\u06cc\u0686\u06cc\u062f\u06c1 \u0648\u06cc\u062c\u06cc\u0679\u0633 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0645\u0641\u06cc\u062f \u067e\u06cc\u0634 \u0646\u0638\u0627\u0631\u06c1 \u0628\u0646\u0627\u0646\u06d2 \u06a9\u0627 \u0637\u0631\u06cc\u0642\u06c1 \u0633\u06cc\u06a9\u06be\u06cc\u06ba\u06d4<\/p>\n<h2 id=\"heading-the-official-dart-skills-a-deep-dive\">\u0622\u0641\u06cc\u0634\u0644 \u0688\u0627\u0631\u0679\u0633 \u062a\u06a9\u0646\u06cc\u06a9: \u0627\u06cc\u06a9 \u06af\u06c1\u0631\u06cc \u063a\u0648\u0637\u06c1<\/h2>\n<p>\u0688\u0627\u0631\u0679 \u0679\u06cc\u0645 \u06a9\u0627 \u0633\u0631\u06a9\u0627\u0631\u06cc \u062a\u06a9\u0646\u06cc\u06a9\u06cc \u0630\u062e\u06cc\u0631\u06c1 (<code>dart-lang\/skills<\/code>) \u062e\u0648\u062f \u0688\u0627\u0631\u0679 \u0632\u0628\u0627\u0646 \u06a9\u0627 \u0627\u062d\u0627\u0637\u06c1 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u060c \u0646\u06c1 \u06a9\u06c1 \u0641\u0644\u0679\u0631 \u06a9\u06d2 \u0648\u06cc\u062c\u06cc\u0679 \u0633\u0633\u0679\u0645 \u06a9\u0648\u06d4 \u06cc\u06c1 \u062a\u06a9\u0646\u06cc\u06a9\u06cc\u06ba \u062a\u0645\u0627\u0645 \u0688\u0627\u0631\u0679 \u06a9\u0648\u0688 \u067e\u0631 \u0644\u0627\u06af\u0648 \u06c1\u0648\u062a\u06cc \u06c1\u06cc\u06ba\u060c \u0628\u0634\u0645\u0648\u0644 \u0641\u0644\u0679\u0631 \u0627\u06cc\u067e \u0644\u0627\u062c\u06a9\u060c \u0688\u0627\u0631\u0679 \u0633\u06cc \u0627\u06cc\u0644 \u0622\u0626\u06cc \u0679\u0648\u0644\u0632\u060c \u0688\u0627\u0631\u0679 \u0628\u06cc\u06a9 \u0627\u06cc\u0646\u0688 \u0633\u0631\u0648\u0633\u0632\u060c \u0627\u0648\u0631 \u0688\u0627\u0631\u0679 \u067e\u06cc\u06a9\u062c\u0632\u06d4<\/p>\n<h3 id=\"heading-dart-add-unit-test\">\u0688\u0627\u0631\u0679 \u0627\u0636\u0627\u0641\u06cc \u06cc\u0648\u0646\u0679 \u0679\u06cc\u0633\u0679<\/h3>\n<p>\u06cc\u06c1 \u0688\u0627\u0631\u0679\u0633 \u06a9\u06cc \u0633\u0628 \u0633\u06d2 \u0628\u0646\u06cc\u0627\u062f\u06cc \u062a\u06a9\u0646\u06cc\u06a9 \u06c1\u06d2 \u0627\u0648\u0631 \u0633\u0628 \u0633\u06d2 \u0632\u06cc\u0627\u062f\u06c1 \u0641\u0648\u0631\u06cc \u0627\u062b\u0631 \u06a9\u06d2 \u0633\u0627\u062a\u06be\u06d4 \u0627\u067e\u0646\u06d2 \u0627\u06cc\u062c\u0646\u0679\u0648\u06ba \u06a9\u0648 \u0633\u06a9\u06be\u0627\u0626\u06cc\u06ba \u06a9\u06c1 \u0688\u0627\u0631\u0679 \u06a9\u06cc \u062a\u0645\u0627\u0645 \u06a9\u0644\u0627\u0633\u0648\u06ba \u06a9\u06d2 \u0644\u06cc\u06d2 \u0645\u0646\u0627\u0633\u0628 \u06cc\u0648\u0646\u0679 \u0679\u06cc\u0633\u0679 \u06a9\u06cc\u0633\u06d2 \u0644\u06a9\u06be\u06cc\u06ba\u060c \u0628\u0634\u0645\u0648\u0644:<\/p>\n<ul>\n<li>\n<p>\u062a\u0631\u062a\u06cc\u0628 <code>test\/<\/code> \u0688\u0627\u0626\u0631\u06a9\u0679\u0631\u06cc \u0622\u0626\u06cc\u0646\u06c1 \u062f\u0627\u0631 <code>lib\/<\/code> \u0633\u0627\u062e\u062a<\/p>\n<\/li>\n<li>\n<p>\u062a\u062d\u0631\u06cc\u0631 <code>group<\/code> \u0627\u0648\u0631 <code>test<\/code> \u0648\u0636\u0627\u062d\u062a\u06cc \u0646\u0627\u0645\u0648\u06ba \u06a9\u06d2 \u0633\u0627\u062a\u06be \u0628\u0644\u0627\u06a9\u0633<\/p>\n<\/li>\n<li>\n<p>\u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u06cc\u06ba <code>setUp<\/code> \u0627\u0648\u0631 <code>tearDown<\/code> \u0679\u06cc\u0633\u0679 \u0644\u0627\u0626\u0641 \u0633\u0627\u0626\u06cc\u06a9\u0644 \u0645\u06cc\u0646\u062c\u0645\u0646\u0679 \u06a9\u06d2 \u0644\u06cc\u06d2<\/p>\n<\/li>\n<li>\n<p>\u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u06cc\u06ba <code>expect<\/code> \u0635\u062d\u06cc\u062d \u0645\u06cc\u0686\u0631 \u06a9\u06d2 \u0633\u0627\u062a\u06be<\/p>\n<\/li>\n<li>\n<p>\u0627\u0646\u062d\u0635\u0627\u0631 \u06a9\u0627 \u0645\u0630\u0627\u0642 \u0627\u0691\u0627\u0646\u0627 <code>mocktail<\/code><\/p>\n<\/li>\n<li>\n<p>\u063a\u06cc\u0631 \u0645\u0637\u0627\u0628\u0642\u062a \u067e\u0630\u06cc\u0631 \u06a9\u0648\u0688 \u06a9\u06cc \u062c\u0627\u0646\u0686 <code>expectLater<\/code> \u0627\u0648\u0631 \u0633\u0679\u0631\u06cc\u0645 \u0645\u06cc\u0686\u0631<\/p>\n<\/li>\n<\/ul>\n<p>\u0627\u0633 \u0679\u06a9\u0646\u0627\u0644\u0648\u062c\u06cc \u06a9\u06d2 \u0628\u063a\u06cc\u0631\u060c \u0627\u06cc\u062c\u0646\u0679 \u0627\u06cc\u0633\u06d2 \u0679\u06cc\u0633\u0679 \u062a\u06cc\u0627\u0631 \u06a9\u0631\u06cc\u06ba \u06af\u06d2 \u062c\u0648 \u063a\u0644\u0637 \u0686\u06cc\u0632\u0648\u06ba \u06a9\u06cc \u062c\u0627\u0646\u0686 \u06a9\u0631\u062a\u06d2 \u06c1\u06cc\u06ba\u060c \u063a\u0644\u0637 \u062f\u0639\u0648\u06d2 \u06a9\u06d2 \u0646\u0645\u0648\u0646\u0648\u06ba \u06a9\u0627 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u062a\u06d2 \u06c1\u06cc\u06ba\u060c \u0627\u0648\u0631 \u0679\u06cc\u0633\u0679 \u0641\u0627\u0626\u0644\u0648\u06ba \u06a9\u0648 \u0627\u0633 \u0637\u0631\u062d \u0633\u06d2 \u0688\u06be\u0627\u0646\u0686\u06c1 \u0628\u0646\u0627\u062a\u06d2 \u06c1\u06cc\u06ba \u062c\u0648 \u0645\u0627\u062e\u0630 \u06a9\u06d2 \u062f\u0631\u062e\u062a \u06a9\u06cc \u0639\u06a9\u0633 \u0628\u0646\u062f\u06cc \u0646\u06c1 \u06a9\u0631\u06d2\u06d4 \u0627\u0633 \u06a9\u06cc \u0648\u062c\u06c1 \u0633\u06d2 \u0627\u06cc\u062c\u0646\u0679 \u0627\u06cc\u0633\u06d2 \u0679\u06cc\u0633\u0679 \u062a\u06cc\u0627\u0631 \u06a9\u0631\u062a\u0627 \u06c1\u06d2 \u062c\u0648: <code>package:test<\/code> \u067e\u06c1\u0644\u06d2 \u0631\u0646 \u0633\u06d2 \u06c1\u06cc \u0627\u0635\u0648\u0644\u0648\u06ba \u067e\u0631 \u0639\u0645\u0644 \u06a9\u0631\u0646\u0627 \u0636\u0631\u0648\u0631\u06cc \u06c1\u06d2\u06d4<\/p>\n<pre><code class=\"language-markdown\"># What dart-add-unit-test teaches the agent\n\n## Test file placement\ntest\/features\/profile\/data\/profile_repository_test.dart\nmirrors\nlib\/features\/profile\/data\/profile_repository.dart\n\n## Test naming\n```\ngroup('ProfileRepository', () {\n  group('getProfile', () {\n    test('returns ProfileLoaded when API call succeeds', () async {\n      \/\/ ...\n    });\n\n    test('returns NetworkFailure when connection fails', () async {\n      \/\/ ...\n    });\n  });\n});\n```\n\n## Async testing\n```\nawait expectLater(\n  repository.getProfile('user123'),\n  completion(isA<right userprofile=\"\">>()),\n);\n```\n<\/right><\/code><\/pre>\n<h3 id=\"heading-dart-run-static-analysis\">\u0688\u0627\u0631\u0679 \u0639\u0645\u0644\u062f\u0631\u0622\u0645\u062f \u062c\u0627\u0645\u062f \u062a\u062c\u0632\u06cc\u06c1<\/h3>\n<p>\u06cc\u06c1 \u0645\u06c1\u0627\u0631\u062a \u0627\u06cc\u062c\u0646\u0679\u0648\u06ba \u06a9\u0648 \u0633\u06a9\u06be\u0627\u062a\u06cc \u06c1\u06d2 \u06a9\u06c1 \u0688\u0627\u0631\u0679 \u06a9\u06d2 \u062c\u0627\u0645\u062f \u062a\u062c\u0632\u06cc\u06c1 \u06a9\u06d2 \u0628\u0646\u06cc\u0627\u062f\u06cc \u0688\u06be\u0627\u0646\u0686\u06d2 \u06a9\u06d2 \u0633\u0627\u062a\u06be \u06a9\u06cc\u0633\u06d2 \u06a9\u0627\u0645 \u06a9\u0631\u0646\u0627 \u06c1\u06d2\u06d4 <code>analysis_options.yaml<\/code>\u0686\u0644 \u0631\u06c1\u0627 \u06c1\u06d2 <code>dart analyze<\/code>\u062f\u0631\u062e\u0648\u0627\u0633\u062a \u062f\u06d2 \u0631\u06c1\u0627 \u06c1\u06d2\u06d4 <code>dart fix --apply<\/code>\u0644\u0646\u0679 \u06a9\u06d2 \u0642\u0648\u0627\u0646\u06cc\u0646 \u06a9\u0648 \u0633\u0645\u062c\u06be\u06cc\u06ba\u060c \u063a\u0644\u0637 \u0645\u062b\u0628\u062a \u06a9\u0648 \u0635\u062d\u06cc\u062d \u0637\u0631\u06cc\u0642\u06d2 \u0633\u06d2 \u062f\u0628\u0627\u0626\u06cc\u06ba \u0627\u0648\u0631 \u0633\u062e\u062a \u0642\u0633\u0645 \u06a9\u06cc \u062c\u0627\u0646\u0686 \u06a9\u0648 \u0646\u0627\u0641\u0630 \u06a9\u0631\u06cc\u06ba\u06d4<\/p>\n<pre><code class=\"language-markdown\"># What dart-run-static-analysis covers\n\n## analysis_options.yaml configuration\ninclude: package:flutter_lints\/flutter.yaml\n\nanalyzer:\n  language:\n    strict-casts: true\n    strict-inference: true\n    strict-raw-types: true\n  exclude:\n    - '**\/*.g.dart'\n    - '**\/*.freezed.dart'\n\nlinter:\n  rules:\n    avoid_print: true\n    prefer_final_fields: true\n    require_trailing_commas: true\n\n## Correct suppression (when a lint is a false positive)\n\/\/ ignore: avoid_print  <- line-level, for one occurrence\n\/\/ ignore_for_file: type=lint  <- file-level, for generated files\n<\/code><\/pre>\n<p>\u0627\u0633\u06d2 \u062a\u0631\u062a\u06cc\u0628 \u062f\u06cc\u0646\u06d2 \u06a9\u0627 \u0637\u0631\u06cc\u0642\u06c1 \u0633\u0645\u062c\u06be\u06cc\u06ba\u06d4 <code>analysis_options.yaml<\/code> \u0627\u0633\u06d2 \u062f\u0631\u0633\u062a \u06a9\u0631\u0646\u0627 \u0627\u0646 \u06a9\u0627\u0645\u0648\u06ba \u0645\u06cc\u06ba \u0633\u06d2 \u0627\u06cc\u06a9 \u06c1\u06d2 \u062c\u0648 \u0627\u06cc\u062c\u0646\u0679 \u0627\u06a9\u062b\u0631 \u0631\u06c1\u0646\u0645\u0627\u0626\u06cc \u06a9\u06d2 \u0628\u063a\u06cc\u0631 \u063a\u0644\u0637\u06cc\u0627\u06ba \u06a9\u0631\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4 \u0627\u0633 \u06a9\u0627 \u0645\u0637\u0644\u0628 \u06c1\u06d2 \u063a\u0644\u0637 \u0627\u0635\u0648\u0644\u0648\u06ba \u06a9\u0648 \u0686\u0627\u0644\u0648 \u06a9\u0631\u0646\u0627\u060c \u062a\u06cc\u0627\u0631 \u06a9\u0631\u062f\u06c1 \u0641\u0627\u0626\u0644\u0648\u06ba \u06a9\u0648 \u062e\u0627\u0631\u062c \u06a9\u0631\u0646\u0627 \u0628\u06be\u0648\u0644 \u062c\u0627\u0646\u0627\u060c \u06cc\u0627 \u062a\u0634\u062e\u06cc\u0635 \u06a9\u0648 \u0628\u06c1\u062a \u0648\u0633\u06cc\u0639 \u067e\u06cc\u0645\u0627\u0646\u06d2 \u067e\u0631 \u062f\u0628\u0627\u0646\u0627\u06d4 \u06cc\u06c1 \u0679\u06cc\u06a9\u0646\u0627\u0644\u0648\u062c\u06cc \u067e\u06c1\u0644\u06cc \u0628\u0627\u0631 \u0627\u0633 \u062a\u0631\u062a\u06cc\u0628 \u06a9\u0648 \u062d\u0627\u0635\u0644 \u06a9\u0631\u062a\u06cc \u06c1\u06d2\u06d4<\/p>\n<h3 id=\"heading-dart-tooling\">\u0688\u0627\u0631\u0679 \u06a9\u0627 \u0622\u0644\u06c1<\/h3>\n<p>\u06cc\u06c1 \u062a\u06a9\u0646\u06cc\u06a9 \u0622\u067e \u06a9\u0648 \u0633\u06a9\u06be\u0627\u062a\u06cc \u06c1\u06d2 \u06a9\u06c1 \u067e\u06cc\u06a9\u06cc\u062c \u0648\u0631\u0698\u0646 \u06a9\u06d2 \u062a\u0646\u0627\u0632\u0639\u0627\u062a \u06a9\u0648 \u06a9\u06cc\u0633\u06d2 \u062d\u0644 \u06a9\u06cc\u0627 \u062c\u0627\u0626\u06d2\u06d4 <code>pubspec.yaml<\/code>\u0627\u0646\u062d\u0635\u0627\u0631 \u06a9\u0648 \u062f\u0631\u0633\u062a \u0637\u0631\u06cc\u0642\u06d2 \u0633\u06d2 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u06cc\u06ba \u0627\u0648\u0631 \u0628\u0631\u0627\u06c1 \u0631\u0627\u0633\u062a \u0627\u0648\u0631 \u0639\u0628\u0648\u0631\u06cc \u0627\u0646\u062d\u0635\u0627\u0631 \u06a9\u06d2 \u062f\u0631\u0645\u06cc\u0627\u0646 \u0641\u0631\u0642 \u06a9\u0648 \u0633\u0645\u062c\u06be\u06cc\u06ba \u0627\u0648\u0631 \u067e\u0691\u06be\u06cc\u06ba\u06d4 <code>pubspec.lock<\/code> \u0648\u0631\u0698\u0646 \u06a9\u06d2 \u062d\u0644 \u06a9\u06d2 \u0645\u0633\u0627\u0626\u0644 \u06a9\u06cc \u062a\u0634\u062e\u06cc\u0635 \u06a9\u0631\u06cc\u06ba\u06d4<\/p>\n<p>\u067e\u06cc\u06a9\u06cc\u062c \u067e\u0631 \u0627\u0646\u062d\u0635\u0627\u0631 \u06a9\u0627 \u0627\u0646\u062a\u0638\u0627\u0645 \u0627\u06cc\u06a9 \u0627\u06cc\u0633\u0627 \u0634\u0639\u0628\u06c1 \u06c1\u06d2 \u062c\u06c1\u0627\u06ba \u0627\u06cc\u062c\u0646\u0679 \u0627\u06a9\u062b\u0631 \u062e\u0648\u0627\u0628 \u062f\u06cc\u06a9\u06be\u062a\u06d2 \u06c1\u06cc\u06ba \u06cc\u0627 \u067e\u06cc\u06a9\u06cc\u062c \u0648\u0631\u0698\u0646 \u062a\u062c\u0648\u06cc\u0632 \u06a9\u0631\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4 <code>dependency_overrides<\/code> \u0627\u06cc\u06a9 \u0637\u0631\u062d \u0633\u06d2 \u062c\u0648 \u062d\u0642\u06cc\u0642\u06cc \u062a\u0646\u0627\u0632\u0639\u06c1 \u06a9\u0648 \u062f\u06be\u0646\u062f\u0644\u0627 \u062f\u06cc\u062a\u0627 \u06c1\u06d2\u06d4 \u06cc\u06c1 \u0645\u06c1\u0627\u0631\u062a \u0627\u0633 \u0631\u0648\u06cc\u06d2 \u06a9\u0648 \u062f\u0631\u0633\u062a \u06a9\u0631\u062a\u06cc \u06c1\u06d2\u06d4<\/p>\n<h3 id=\"heading-dart-use-pattern-matching\">\u0688\u0627\u0631\u0679 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u067e\u06cc\u0679\u0631\u0646 \u06a9\u06d2 \u0645\u0644\u0627\u067e<\/h3>\n<p>\u06cc\u06c1 \u062a\u06a9\u0646\u06cc\u06a9 \u0688\u0627\u0631\u0679 \u06a9\u06cc \u0633\u0628 \u0633\u06d2 \u0642\u06cc\u0645\u062a\u06cc \u062a\u06a9\u0646\u06cc\u06a9\u0648\u06ba \u0645\u06cc\u06ba \u0633\u06d2 \u0627\u06cc\u06a9 \u06c1\u06d2 \u06a9\u06cc\u0648\u0646\u06a9\u06c1 \u0688\u0627\u0631\u0679 3 \u0645\u06cc\u06ba \u0633\u06cc\u0644 \u0634\u062f\u06c1 \u06a9\u0644\u0627\u0633\u0632 \u0627\u0648\u0631 \u067e\u06cc\u0679\u0631\u0646 \u06a9\u06cc \u0645\u0645\u0627\u062b\u0644\u062a \u0628\u0627\u0644\u06a9\u0644 \u0646\u0626\u06d2 \u06a9\u0648\u0688\u0646\u06af \u067e\u06cc\u0631\u0627\u0688\u0627\u0626\u0645 \u06a9\u06cc \u0646\u0645\u0627\u0626\u0646\u062f\u06af\u06cc \u06a9\u0631\u062a\u06cc \u06c1\u06d2 \u062c\u0648 \u0688\u0627\u0631\u0679 3 \u06a9\u06cc \u0631\u06cc\u0644\u06cc\u0632 \u0633\u06d2 \u067e\u06c1\u0644\u06d2 \u062a\u0631\u0628\u06cc\u062a \u06cc\u0627\u0641\u062a\u06c1 \u0627\u06cc\u062c\u0646\u0679\u0648\u06ba \u06a9\u06d2 \u0630\u0631\u06cc\u0639\u06d2 \u0645\u0633\u062a\u0642\u0644 \u0637\u0648\u0631 \u067e\u0631 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u0646\u06c1\u06cc\u06ba \u06c1\u0648\u062a\u06cc \u06c1\u06d2\u06d4 \u06cc\u06c1 \u0633\u06a9\u06be\u0627\u062a\u0627 \u06c1\u06d2:<\/p>\n<ul>\n<li>\n<p>\u0645\u06a9\u0645\u0644 \u0637\u0648\u0631 \u067e\u0631 \u0645\u06c1\u0631\u0628\u0646\u062f \u06a9\u0644\u0627\u0633 \u06a9\u06cc \u062a\u0628\u062f\u06cc\u0644\u06cc<\/p>\n<\/li>\n<li>\n<p>\u0633\u0648\u0626\u0686 \u06a9\u06cc\u0633 \u06a9\u0627 \u0688\u0633\u0679\u0631\u06a9\u0686\u0631\u0646\u06af \u067e\u06cc\u0679\u0631\u0646<\/p>\n<\/li>\n<li>\n<p>\u062a\u062d\u0641\u0638 \u06a9\u06cc \u0634\u0642 <code>when<\/code><\/p>\n<\/li>\n<li>\n<p>\u062a\u0627\u0631\u06cc\u062e \u067e\u06cc\u0679\u0631\u0646<\/p>\n<\/li>\n<li>\n<p>\u0641\u06c1\u0631\u0633\u062a \u0627\u0648\u0631 \u0646\u0642\u0634\u06c1 \u0633\u0627\u0632\u06cc \u06a9\u06d2 \u067e\u06cc\u0679\u0631\u0646<\/p>\n<\/li>\n<li>\n<p>\u062f\u0631\u0633\u062a \u0627\u0633\u062a\u0639\u0645\u0627\u0644 <code>_<\/code> (\u0648\u0627\u0626\u0644\u0688 \u06a9\u0627\u0631\u0688) \u067e\u06cc\u0679\u0631\u0646<\/p>\n<\/li>\n<\/ul>\n<pre><code class=\"language-dart\">\/\/ What the agent learns to write with dart-use-pattern-matching\n\n\/\/ Before: traditional switch on enum (old pattern)\nswitch (state) {\n  case AppState.loading:\n    return CircularProgressIndicator();\n  case AppState.loaded:\n    return ContentWidget(data: data);\n  default:\n    return ErrorWidget();\n}\n\n\/\/ After: switch expression with pattern matching (idiomatic Dart 3)\nreturn switch (state) {\n  AppStateLoading() => const CircularProgressIndicator(),\n  AppStateLoaded(:final data) => ContentWidget(data: data),\n  AppStateError(:final message) => ErrorWidget(message: message),\n};\n<\/code><\/pre>\n<p>\u062a\u0628\u0627\u06c1\u06cc \u067e\u06cc\u0679\u0631\u0646 <code>AppStateLoaded(:final data)<\/code> \u0627\u06af\u0631\u0686\u06c1 \u06cc\u06c1 \u062e\u0627\u0644\u0635 \u0688\u0627\u0631\u0679 3 \u0627\u0648\u0631 \u0628\u06c1\u062a \u0635\u0627\u0641 \u06c1\u06d2\u060c \u06c1\u0645 \u0627\u0633 \u0645\u06c1\u0627\u0631\u062a \u06a9\u06d2 \u0628\u063a\u06cc\u0631 \u0634\u0627\u0630 \u0648 \u0646\u0627\u062f\u0631 \u06c1\u06cc \u0627\u06cc\u062c\u0646\u0679 \u0628\u0646\u0627\u062a\u06d2 \u06c1\u06cc\u06ba \u06a9\u06cc\u0648\u0646\u06a9\u06c1 \u06cc\u06c1 \u0627\u06cc\u062c\u0646\u0679 \u06a9\u06d2 \u067e\u0686\u06be\u0644\u06d2 \u0648\u0631\u0698\u0646 \u06a9\u06d2 \u062a\u0631\u0628\u06cc\u062a\u06cc \u0688\u06cc\u0679\u0627 \u0645\u06cc\u06ba \u0646\u06c1\u06cc\u06ba \u062a\u06be\u0627\u06d4<\/p>\n<h3 id=\"heading-dart-collect-coverage\">\u0688\u0627\u0631\u0679 \u062c\u0645\u0639 \u06a9\u0631\u0646\u06d2 \u06a9\u0627 \u062f\u0627\u0626\u0631\u06c1<\/h3>\n<p>\u06cc\u06c1 \u062a\u06a9\u0646\u06cc\u06a9 \u0679\u06cc\u0633\u0679 \u06a9\u0648\u0631\u06cc\u062c \u062c\u0645\u0639 \u06a9\u0631\u062a\u06cc \u06c1\u06d2\u060c LCOV \u0631\u067e\u0648\u0631\u0679\u0633 \u062a\u06cc\u0627\u0631 \u06a9\u0631\u062a\u06cc \u06c1\u06d2\u060c HTML \u0631\u067e\u0648\u0631\u0679\u0633 \u062a\u06cc\u0627\u0631 \u06a9\u0631\u062a\u06cc \u06c1\u06d2\u060c \u0627\u0648\u0631 \u062a\u06cc\u0627\u0631 \u06a9\u0631\u062f\u06c1 \u06a9\u0648\u0688 \u06a9\u0648 \u0641\u0644\u0679\u0631 \u06a9\u0631\u0646\u06d2 \u06a9\u06d2 \u0637\u0631\u06cc\u0642\u06d2 \u0641\u0631\u0627\u06c1\u0645 \u06a9\u0631\u062a\u06cc \u06c1\u06d2 (<code>*.g.dart<\/code>, <code>*.freezed.dart<\/code>) \u0627\u0633 \u0628\u0627\u062a \u06a9\u0648 \u06cc\u0642\u06cc\u0646\u06cc \u0628\u0646\u0627\u0626\u06cc\u06ba \u06a9\u06c1 \u06a9\u0648\u0631\u06cc\u062c \u0631\u067e\u0648\u0631\u0679 \u0645\u06cc\u06ba \u0645\u0648\u062c\u0648\u062f \u0627\u0639\u062f\u0627\u062f \u0627\u0635\u0644 \u06a9\u0648\u0631\u06cc\u062c \u06a9\u06cc \u0639\u06a9\u0627\u0633\u06cc \u06a9\u0631\u062a\u06d2 \u06c1\u06cc\u06ba\u060c \u062c\u0646\u0631\u06cc\u0679\u0688 \u06a9\u0648\u0688 \u06a9\u06d2 \u0630\u0631\u06cc\u0639\u06d2 \u0646\u06c1\u06cc\u06ba \u0628\u0691\u06be\u0627\u06cc\u0627 \u062c\u0627\u062a\u0627 \u062c\u0633 \u06a9\u06cc \u0645\u0639\u0646\u06cc \u062e\u06cc\u0632 \u062c\u0627\u0646\u0686 \u0646\u06c1\u06cc\u06ba \u06a9\u06cc \u062c\u0627 \u0633\u06a9\u062a\u06cc\u06d4<\/p>\n<h3 id=\"heading-dart-generate-test-mocks\">\u0688\u0627\u0631\u0679 \u062a\u062e\u0644\u06cc\u0642 \u0679\u06cc\u0633\u0679 \u0641\u0631\u0636\u06cc<\/h3>\n<p>\u06cc\u06c1 \u06c1\u0646\u0631 \u0633\u06a9\u06be\u0627\u062a\u0627 \u06c1\u06d2: <code>mockito<\/code> \u0627\u0648\u0631 <code>build_runner<\/code> \u0627\u0646\u0679\u0631\u0641\u06cc\u0633 \u0627\u0648\u0631 \u062a\u062c\u0631\u06cc\u062f\u06cc \u06a9\u0644\u0627\u0633\u0648\u06ba \u0633\u06d2 \u0679\u0627\u0626\u067e \u0633\u06cc\u0641 \u0645\u0648\u06a9 \u0622\u0628\u062c\u06cc\u06a9\u0679 \u0628\u0646\u0627\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0627\u06cc\u06a9 \u0648\u0631\u06a9 \u0641\u0644\u0648\u06d4 \u062a\u0628\u0635\u0631\u06d2\u060c \u0639\u0645\u0644\u062f\u0631\u0622\u0645\u062f\u060c \u0648\u063a\u06cc\u0631\u06c1 \u0634\u0627\u0645\u0644 \u06a9\u0631\u0646\u06d2 \u06a9\u0627 \u0627\u062d\u0627\u0637\u06c1 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4 <code>dart run build_runner build<\/code>\u062c\u0627\u0646\u0686 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0628\u0646\u0627\u0626\u06cc \u06af\u0626\u06cc \u0641\u0631\u0636\u06cc \u0622\u0628\u062c\u06cc\u06a9\u0679 \u06a9\u0627 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u06cc\u06ba\u06d4<\/p>\n<h3 id=\"heading-dart-fix-runtime-errors\">\u0688\u0627\u0631\u0679 \u0631\u0646 \u0679\u0627\u0626\u0645 \u06a9\u06cc \u062e\u0631\u0627\u0628\u06cc \u06a9\u0648 \u0679\u06be\u06cc\u06a9 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4<\/h3>\n<p>\u06cc\u06c1 \u0627\u06cc\u06a9 \u0637\u0631\u06cc\u0642\u06c1 \u06a9\u0627\u0631 \u06a9\u06cc \u062a\u06a9\u0646\u06cc\u06a9 \u06c1\u06d2\u06d4 \u0627\u06cc\u062c\u0646\u0679 \u06a9\u0648 \u0645\u0648\u062c\u0648\u062f\u06c1 \u0627\u0633\u0679\u06cc\u06a9 \u0679\u0631\u06cc\u0633 \u062d\u0627\u0635\u0644 \u06a9\u0631\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0644\u06cc\u0646\u06af\u0648\u06cc\u062c \u0633\u0631\u0648\u0631 \u067e\u0631\u0648\u0679\u0648\u06a9\u0648\u0644 (LSP) \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u0646\u06d2 \u06a9\u06cc \u06c1\u062f\u0627\u06cc\u062a \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u060c \u0641\u06cc\u0644\u0646\u06af \u0644\u0627\u0626\u0646 \u06a9\u0648 \u062a\u0644\u0627\u0634 \u06a9\u0631\u06cc\u06ba\u060c \u0641\u06a9\u0633 \u06a9\u0627 \u0627\u0637\u0644\u0627\u0642 \u06a9\u0631\u06cc\u06ba\u060c \u0627\u0648\u0631 \u0631\u06cc\u0632\u0648\u0644\u0648\u0634\u0646 \u06a9\u0627 \u062a\u0639\u06cc\u0646 \u06a9\u0631\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u06c1\u0627\u0679 \u0631\u06cc \u0644\u0648\u0688 \u06a9\u0627 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u06cc\u06ba\u06d4 \u0644\u0627\u0626\u06cc\u0648 \u0641\u0644\u0679\u0631 \u0627\u06cc\u067e\u0633 \u0645\u06cc\u06ba \u0648\u062c\u06c1 \u06a9\u0627 \u0627\u0646\u062f\u0627\u0632\u06c1 \u0644\u06af\u0627\u0646\u06d2 \u06a9\u06d2 \u0628\u062c\u0627\u0626\u06d2 \u0631\u0646 \u0679\u0627\u0626\u0645 \u06a9\u06cc \u062e\u0631\u0627\u0628\u06cc\u0648\u06ba \u06a9\u0648 \u0679\u06be\u06cc\u06a9 \u06a9\u0631\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u06cc\u06c1 \u062f\u0631\u0633\u062a \u0648\u0631\u06a9 \u0641\u0644\u0648 \u06c1\u06d2\u06d4<\/p>\n<h3 id=\"heading-dart-genkit\">\u0688\u0627\u0631\u0679 \u062c\u06cc\u0646\u06a9\u0679<\/h3>\n<p>\u06cc\u06c1 \u06c1\u0646\u0631 \u0622\u067e \u06a9\u0648 \u0633\u06a9\u06be\u0627\u062a\u0627 \u06c1\u06d2 \u06a9\u06c1 Genkit Dart SDK \u06a9\u0627 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u062a\u06d2 \u06c1\u0648\u0626\u06d2 AI \u067e\u0631 \u0645\u0628\u0646\u06cc \u0648\u0631\u06a9 \u0641\u0644\u0648 \u0627\u0648\u0631 \u0627\u06cc\u062c\u0646\u0679 \u06a9\u06cc\u0633\u06d2 \u0628\u0646\u0627\u0626\u06d2 \u062c\u0627\u0626\u06cc\u06ba\u06d4 \u06cc\u06c1 \u062e\u0627\u0635 \u0637\u0648\u0631 \u067e\u0631 \u0641\u0644\u0679\u0631 \u0688\u0648\u06cc\u0644\u067e\u0631\u0632 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0645\u062a\u0639\u0644\u0642\u06c1 \u06c1\u06d2 \u062c\u0648 AI \u0641\u0646\u06a9\u0634\u0646\u0632 \u0628\u0646\u0627 \u0631\u06c1\u06d2 \u06c1\u06cc\u06ba \u062c\u0648 \u0641\u0644\u0648 \u0688\u06cc\u0641\u06cc\u0646\u06cc\u0634\u0646\u060c \u0679\u0648\u0644 \u0627\u0646\u0648\u06a9\u06cc\u0634\u0646\u060c \u0645\u0627\u0688\u0644 \u0633\u0644\u06cc\u06a9\u0634\u0646\u060c \u0627\u0648\u0631 \u0627\u0633\u0679\u0631\u06cc\u0645\u0646\u06af \u06a9\u0627 \u0627\u062d\u0627\u0637\u06c1 \u06a9\u0631\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4<\/p>\n<h3 id=\"heading-dart-migrate-to-checks-package\">\u0688\u0627\u0631\u0679-\u06c1\u062c\u0631\u062a-\u0633\u06d2-\u0686\u06cc\u06a9-\u067e\u06cc\u06a9\u06cc\u062c<\/h3>\n<p>\u06cc\u06c1 \u062a\u06a9\u0646\u06cc\u06a9 \u0622\u067e \u06a9\u0648 \u0633\u06a9\u06be\u0627\u062a\u06cc \u06c1\u06d2 \u06a9\u06c1 \u067e\u0686\u06be\u0644\u06d2 \u0648\u0631\u0698\u0646 \u0633\u06d2 \u06a9\u06cc\u0633\u06d2 \u06c1\u062c\u0631\u062a \u06a9\u06cc \u062c\u0627\u0626\u06d2\u06d4 <code>package:matcher<\/code> \u062f\u0639\u0648\u06d2 \u06a9\u06d2 \u0627\u0646\u062f\u0627\u0632 \u06a9\u0648 \u062a\u0627\u0632\u06c1 \u062a\u0631\u06cc\u0646 \u0645\u06cc\u06ba \u062a\u0628\u062f\u06cc\u0644 \u06a9\u0631\u06cc\u06ba\u06d4 <code>package:checks<\/code> \u06cc\u06c1 \u0627\u06cc\u06a9 \u0627\u06cc\u0633\u0627 \u0627\u0646\u062f\u0627\u0632 \u06c1\u06d2 \u062c\u0648 \u0628\u06c1\u062a\u0631 \u063a\u0644\u0637\u06cc \u06a9\u06d2 \u067e\u06cc\u063a\u0627\u0645\u0627\u062a \u062a\u06cc\u0627\u0631 \u06a9\u0631\u062a\u0627 \u06c1\u06d2 \u0627\u0648\u0631 \u0632\u06cc\u0627\u062f\u06c1 \u0642\u0627\u0628\u0644 \u062a\u0631\u062a\u06cc\u0628 \u06c1\u06d2\u06d4<\/p>\n<pre><code class=\"language-dart\">\/\/ Old style (package:matcher)\nexpect(result, isA<right userprofile=\"\">>());\nexpect(result.getOrElse(() => null)?.name, equals('Ade'));\n\n\/\/ New style (package:checks)\ncheck(result).isA<right userprofile=\"\">>();\ncheck(result.getOrElse(() => null)?.name).equals('Ade');\n<\/right><\/right><\/code><\/pre>\n<h3 id=\"heading-dart-memory\">\u0688\u0627\u0631\u0679 \u0645\u06cc\u0645\u0648\u0631\u06cc<\/h3>\n<p>\u06cc\u06c1 \u062a\u06a9\u0646\u06cc\u06a9 \u0622\u067e \u06a9\u0648 \u0633\u06a9\u06be\u0627\u062a\u06cc \u06c1\u06d2 \u06a9\u06c1 \u0641\u0644\u0679\u0631 \u0627\u0648\u0631 \u0688\u0627\u0631\u0679 \u0627\u06cc\u067e\u0633 \u0645\u06cc\u06ba \u0645\u06cc\u0645\u0648\u0631\u06cc \u0644\u06cc\u06a9 \u06c1\u0648\u0646\u06d2 \u06a9\u0648 \u06a9\u06cc\u0633\u06d2 \u0631\u0648\u06a9\u0627 \u062c\u0627\u0626\u06d2 \u0627\u0648\u0631 \u06a9\u0648\u0691\u0627 \u0627\u0679\u06be\u0627\u0646\u06d2 \u06a9\u06d2 \u062f\u0628\u0627\u0624 \u06a9\u0648 \u06a9\u0645 \u06a9\u06cc\u0627 \u062c\u0627\u0626\u06d2\u06d4 <code>StreamController<\/code> \u0636\u0627\u0626\u0639 \u06a9\u0631\u0646\u0627 <code>AnimationController<\/code> \u06a9\u0648\u0691\u06d2 \u06a9\u0648 \u062c\u0645\u0639 \u06a9\u0631\u0646\u06d2 \u0633\u06d2 \u0628\u0686\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0688\u0633\u067e\u0648\u0632\u0644\u060c \u06a9\u0644\u0648\u0632\u0631 \u06a9\u06cc\u067e\u0686\u0631 \u067e\u06cc\u0679\u0631\u0646\u060c \u0688\u06cc\u0648 \u0679\u0648\u0644\u0632 \u06a9\u0627 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u062a\u06d2 \u06c1\u0648\u0626\u06d2 \u0645\u06cc\u0645\u0648\u0631\u06cc \u06a9\u06d2 \u0645\u0633\u0627\u0626\u0644 \u06a9\u06cc \u0634\u0646\u0627\u062e\u062a \u06a9\u06cc\u0633\u06d2 \u06a9\u0631\u06cc\u06ba\u060c \u0627\u0648\u0631 \u0628\u06c1\u062a \u06a9\u0686\u06be\u06d4<\/p>\n<h3 id=\"heading-dart-build-cli-app\">dart-build-cli-app<\/h3>\n<p>\u0641\u0644\u0679\u0631 \u0688\u0648\u06cc\u0644\u067e\u0631\u0632 \u06a9\u06d2 \u0644\u06cc\u06d2 \u062c\u0648 Dart CLI \u0679\u0648\u0644\u0632\u060c \u0628\u06cc\u06a9 \u0627\u06cc\u0646\u0688 \u0627\u0633\u06a9\u0631\u067e\u0679\u0633\u060c \u06cc\u0627 \u0688\u0627\u0631\u0679 \u0645\u06cc\u06ba \u0688\u06cc\u067e\u0644\u0627\u0626\u0645\u0646\u0679 \u0622\u0679\u0648\u0645\u06cc\u0634\u0646 \u0644\u06a9\u06be\u062a\u06d2 \u06c1\u06cc\u06ba\u060c \u06cc\u06c1 \u062a\u06a9\u0646\u06cc\u06a9\u06cc\u06ba \u0627\u0646\u0679\u0631\u06cc \u067e\u0648\u0627\u0626\u0646\u0679 \u06a9\u06d2 \u0688\u06be\u0627\u0646\u0686\u06d2\u060c \u0622\u0631\u06af\u0648\u0645\u0646\u0679 \u067e\u0627\u0631\u0633\u0646\u06af \u06a9\u0627 \u0627\u062d\u0627\u0637\u06c1 \u06a9\u0631\u062a\u06cc \u06c1\u06cc\u06ba\u06d4 <code>package:args<\/code>\u0627\u06cc\u06af\u0632\u0679 \u06a9\u0648\u0688\u0632\u060c \u0633\u0628 \u067e\u0631\u0648\u0633\u06cc\u0633 \u06c1\u06cc\u0646\u0688\u0644\u0646\u06af\u060c \u0627\u0648\u0631 \u06a9\u0631\u0627\u0633 \u067e\u0644\u06cc\u0679 \u0641\u0627\u0631\u0645 \u0627\u0633\u06a9\u0631\u067e\u0679 \u067e\u06cc\u0679\u0631\u0646\u06d4<\/p>\n<h3 id=\"heading-dart-logic-patterns\">\u0688\u0627\u0631\u0679 \u0645\u0646\u0637\u0642 \u067e\u06cc\u0679\u0631\u0646<\/h3>\n<p>\u06cc\u06c1 \u0679\u06cc\u06a9\u0646\u0627\u0644\u0648\u062c\u06cc \u06a9\u0627\u0631\u0648\u0628\u0627\u0631\u06cc \u0645\u0646\u0637\u0642 \u06a9\u06cc \u062a\u0639\u0645\u06cc\u0631 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0627\u0644\u06af\u0648\u0631\u062a\u06be\u0645\u060c \u0688\u06cc\u0679\u0627 \u0688\u06be\u0627\u0646\u0686\u06d2\u060c \u0627\u0648\u0631 \u0688\u0627\u0631\u0679 \u0633\u06d2 \u0645\u062a\u0639\u0644\u0642\u06c1 \u0646\u0645\u0648\u0646\u0648\u06ba \u06a9\u0627 \u0627\u062d\u0627\u0637\u06c1 \u06a9\u0631\u062a\u06cc \u06c1\u06d2\u06d4 <code>Iterable<\/code> \u0635\u062d\u06cc\u062d \u0637\u0631\u06cc\u0642\u06c1 \u06a9\u0627 \u0627\u0646\u062a\u062e\u0627\u0628 \u06a9\u0631\u06cc\u06ba \u0627\u0648\u0631 \u062f\u0631\u062c \u0630\u06cc\u0644 \u0645\u06cc\u06ba \u0633\u06d2 \u0627\u06cc\u06a9 \u06a9\u0648 \u0645\u0646\u062a\u062e\u0628 \u06a9\u0631\u06cc\u06ba: <code>List<\/code>, <code>Set<\/code>\u0627\u0648\u0631 <code>Map<\/code> \u0645\u062e\u062a\u0644\u0641 \u0642\u0633\u0645 \u06a9\u06d2 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u06d2 \u0645\u0639\u0627\u0645\u0644\u0627\u062a \u06a9\u06d2 \u0644\u06cc\u06d2 \u0645\u0648\u062b\u0631 \u062a\u0644\u0627\u0634 \u0627\u0648\u0631 \u0686\u06be\u0627\u0646\u0679\u06cc \u06a9\u0648 \u0646\u0627\u0641\u0630 \u06a9\u0631\u06cc\u06ba \u0627\u0648\u0631 \u0688\u0627\u0631\u0679 \u06a9\u06d2 \u0645\u062c\u0645\u0648\u0639\u06c1 \u0644\u0679\u0631\u06cc\u0644\u0632 \u06a9\u0648 \u0646\u062a\u06cc\u062c\u06c1 \u062e\u06cc\u0632 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u06cc\u06ba\u06d4<\/p>\n<h2 id=\"heading-the-flutter-file-organization-skill-a-complete-walkthrough\">flutter-file-organization Skill: \u0645\u06a9\u0645\u0644 \u0648\u0627\u06a9 \u062a\u06be\u0631\u0648<\/h2>\n<p>\u0641\u0627\u0626\u0644 \u0622\u0631\u06af\u0646\u0627\u0626\u0632\u06cc\u0634\u0646 \u06a9\u06cc \u0645\u06c1\u0627\u0631\u062a\u06cc\u06ba \u0633\u0628 \u0633\u06d2 \u0632\u06cc\u0627\u062f\u06c1 \u0639\u0627\u0644\u0645\u06af\u06cc\u0631 \u0637\u0648\u0631 \u067e\u0631 \u0642\u0627\u0628\u0644 \u0627\u0637\u0644\u0627\u0642 \u0641\u0644\u0679\u0631 \u06a9\u06cc \u0645\u06c1\u0627\u0631\u062a\u06cc\u06ba \u06c1\u06cc\u06ba \u0627\u0648\u0631 \u06cc\u06c1 \u0627\u0633 \u0628\u0627\u062a \u06a9\u06cc \u0627\u06cc\u06a9 \u0628\u06c1\u062a\u0631\u06cc\u0646 \u062a\u062f\u0631\u06cc\u0633\u06cc \u0645\u062b\u0627\u0644 \u06c1\u06cc\u06ba \u06a9\u06c1 \u0645\u06c1\u0627\u0631\u062a\u0648\u06ba \u06a9\u0648 \u06a9\u0633 \u0637\u0631\u062d \u0645\u0646\u0638\u0645 \u06a9\u06cc\u0627 \u062c\u0627\u0646\u0627 \u0686\u0627\u06c1\u06cc\u06d2\u06d4 \u0627\u06af\u0631 \u0622\u067e \u0627\u0633 \u06a9\u062a\u0627\u0628 \u06a9\u0648 \u063a\u0648\u0631 \u0633\u06d2 \u067e\u0691\u06be\u06cc\u06ba \u062a\u0648 \u0622\u067e \u06a9\u0648 \u062a\u0645\u0627\u0645 \u0645\u0648\u062b\u0631 \u062a\u06a9\u0646\u06cc\u06a9\u0648\u06ba \u06a9\u06d2 \u067e\u06cc\u0686\u06be\u06d2 \u0627\u0635\u0648\u0644 \u0645\u0639\u0644\u0648\u0645 \u06c1\u0648\u06ba \u06af\u06d2\u06d4<\/p>\n<pre><code class=\"language-markdown\">---\nname: flutter-file-organization\ndescription: Organize and split Flutter\/Dart files while preserving StatefulWidget and State relationships. Use when creating, refactoring, splitting, or reorganizing Dart files and classes.\n---\n\n# Flutter File Organization\n\nWhen creating, splitting, refactoring, or reorganizing Flutter\/Dart files, follow these rules.\n\n## Core Rules\n\n1. Inspect the existing file before modifying it.\n2. Identify all classes, enums, extensions, mixins, typedefs, and top-level declarations.\n3. Identify relationships and dependencies between declarations before splitting them.\n4. Keep each independent primary class in its own file.\n5. Treat tightly coupled declarations as a single implementation unit and keep them together.\n6. Never separate a `StatefulWidget` from its corresponding `State<t>` class.\n7. Update all imports and references after moving declarations.\n8. Do not introduce unnecessary private helper classes or methods.\n9. Preserve existing application behavior. File organization must not change functionality.\n10. Run `dart format` on modified Dart files.\n11. Run the project's analyzer and relevant tests.\n<\/t><\/code><\/pre>\n<p>\u0642\u0627\u0639\u062f\u06c1 1 (\"\u0645\u0648\u062c\u0648\u062f\u06c1 \u0641\u0627\u0626\u0644\u0648\u06ba \u0645\u06cc\u06ba \u062a\u0631\u0645\u06cc\u0645 \u06a9\u0631\u0646\u06d2 \u0633\u06d2 \u067e\u06c1\u0644\u06d2 \u0627\u0646 \u06a9\u0648 \u0686\u06cc\u06a9 \u06a9\u0631\u06cc\u06ba\") \u0627\u06cc\u062c\u0646\u0679 \u06a9\u06cc \u0633\u0628 \u0633\u06d2 \u0639\u0627\u0645 \u0627\u0648\u0631 \u0645\u06c1\u0646\u06af\u06cc \u063a\u0644\u0637\u06cc\u0648\u06ba \u0645\u06cc\u06ba \u0633\u06d2 \u0627\u06cc\u06a9 \u0633\u06d2 \u0628\u0686\u062a\u0627 \u06c1\u06d2: \u0641\u0627\u0626\u0644 \u06a9\u06d2 \u0645\u0648\u0627\u062f \u06a9\u0648 \u067e\u0691\u06be\u06d2 \u0628\u063a\u06cc\u0631 \u0627\u0646 \u06a9\u06d2 \u0628\u0627\u0631\u06d2 \u0645\u06cc\u06ba \u0642\u06cc\u0627\u0633 \u06a9\u0631\u0646\u0627\u06d4<\/p>\n<p>\u0648\u06c1 \u0627\u06cc\u062c\u0646\u0679 \u062c\u0648 \u0686\u06cc\u06a9 \u06a9\u0648 \u0686\u06be\u0648\u0691 \u062f\u06cc\u062a\u06d2 \u06c1\u06cc\u06ba \u0648\u06c1 \u0688\u06cc\u06a9\u0644\u0631\u06cc\u0634\u0646 \u06a9\u0648 \u0688\u067e\u0644\u06cc\u06a9\u06cc\u0679 \u06a9\u0631 \u0633\u06a9\u062a\u06d2 \u06c1\u06cc\u06ba\u060c \u0627\u0646\u062d\u0635\u0627\u0631 \u062a\u0648\u0691 \u0633\u06a9\u062a\u06d2 \u06c1\u06cc\u06ba\u060c \u06cc\u0627 \u067e\u06c1\u0644\u06d2 \u0633\u06d2 \u0645\u0648\u062c\u0648\u062f \u0622\u0626\u0679\u0645\u0632 \u06a9\u06d2 \u0633\u0627\u062a\u06be \u0646\u0627\u0645 \u0631\u06a9\u06be\u0646\u06d2 \u0645\u06cc\u06ba \u062a\u0646\u0627\u0632\u0639\u0627\u062a \u067e\u06cc\u062f\u0627 \u06a9\u0631 \u0633\u06a9\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4 \u0686\u06cc\u06a9 \u06a9\u0648 \u067e\u06c1\u0644\u06d2 \u0648\u0627\u0636\u062d \u0627\u0635\u0648\u0644 \u06a9\u06d2 \u0637\u0648\u0631 \u067e\u0631 \u0633\u06cc\u0679 \u06a9\u0631\u0646\u0627 \u06cc\u0642\u06cc\u0646\u06cc \u0628\u0646\u0627\u062a\u0627 \u06c1\u06d2 \u06a9\u06c1 \u0627\u06cc\u062c\u0646\u0679 \u06c1\u0645\u06cc\u0634\u06c1 \u0645\u0648\u062c\u0648\u062f\u06c1 \u062d\u0627\u0644\u062a \u06a9\u06cc \u0645\u06a9\u0645\u0644 \u062a\u0635\u0648\u06cc\u0631 \u06a9\u06d2 \u0633\u0627\u062a\u06be \u0634\u0631\u0648\u0639 \u06c1\u0648\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<p>\u0642\u0648\u0627\u0639\u062f 2 \u0627\u0648\u0631 3 (\"\u062a\u0645\u0627\u0645 \u0637\u0628\u0642\u0648\u06ba \u06a9\u06cc \u0634\u0646\u0627\u062e\u062a\" \u0627\u0648\u0631 \"\u062a\u0639\u0644\u0642\u0627\u062a \u06a9\u06cc \u0634\u0646\u0627\u062e\u062a\") \u067e\u0631\u0648\u0627\u0632 \u0633\u06d2 \u067e\u06c1\u0644\u06d2 \u0644\u0627\u0632\u0645\u06cc \u0686\u06cc\u06a9 \u06c1\u06cc\u06ba\u06d4 \u0627\u0633 \u0633\u06d2 \u067e\u06c1\u0644\u06d2 \u06a9\u06c1 \u06a9\u0648\u0626\u06cc \u0627\u06cc\u062c\u0646\u0679 \u0641\u0627\u0626\u0644 \u06a9\u06d2 \u0627\u06cc\u06a9 \u0628\u0627\u0626\u0679 \u06a9\u0648 \u06c1\u06cc\u0646\u0688\u0644 \u06a9\u0631 \u0633\u06a9\u06d2\u060c \u0627\u0633\u06d2 \u06c1\u0631 \u0627\u0633 \u0686\u06cc\u0632 \u06a9\u0627 \u0646\u0642\u0634\u06c1 \u0628\u0646\u0627\u0646\u0627 \u0686\u0627\u06c1\u06cc\u06d2 \u062c\u0648 \u0645\u0648\u062c\u0648\u062f \u06c1\u06d2 \u0627\u0648\u0631 \u0648\u06c1 \u0679\u06a9\u0691\u06d2 \u0627\u06cc\u06a9 \u062f\u0648\u0633\u0631\u06d2 \u067e\u0631 \u06a9\u06cc\u0633\u06d2 \u0645\u0646\u062d\u0635\u0631 \u06c1\u06cc\u06ba\u06d4<\/p>\n<p>\u06cc\u06c1 \u06a9\u0648\u0688 \u0631\u06cc\u0641\u06cc\u06a9\u0679\u0631\u0646\u06af \u067e\u0631 \u0644\u0627\u06af\u0648 \u06c1\u0648\u0646\u06d2 \u06a9\u06d2 \u0637\u0648\u0631 \u067e\u0631 \"\u062f\u0648 \u0628\u0627\u0631 \u067e\u06cc\u0645\u0627\u0626\u0634\u060c \u0627\u06cc\u06a9 \u0628\u0627\u0631 \u06a9\u0627\u0679\" \u06a9\u06d2 \u0628\u0631\u0627\u0628\u0631 \u06c1\u06d2 \u0627\u0648\u0631 \u0628\u06af\u0633 \u06a9\u06cc \u0627\u0646\u062a\u06c1\u0627\u0626\u06cc \u0645\u0627\u06cc\u0648\u0633 \u06a9\u0646 \u06a9\u0644\u0627\u0633 \u0633\u06d2 \u0628\u0686\u062a\u0627 \u06c1\u06d2: \u0631\u06cc \u0641\u06cc\u06a9\u0679\u0631\u0646\u06af \u062c\u0648 \u06a9\u0627\u0645 \u06a9\u0631 \u0631\u06c1\u06cc \u062a\u06be\u06cc \u0627\u0633\u06d2 \u062a\u0648\u0691 \u062f\u06cc\u062a\u06cc \u06c1\u06d2\u06d4<\/p>\n<p>\u0642\u0627\u0639\u062f\u06c1 6 (\"Stateful Widget \u06a9\u0648 \u0627\u0633 \u06a9\u06cc \u0631\u06cc\u0627\u0633\u062a\u06cc \u06a9\u0644\u0627\u0633 \u0633\u06d2 \u06a9\u0628\u06be\u06cc \u0627\u0644\u06af \u0646\u06c1 \u06a9\u0631\u06cc\u06ba\") Flutter \u06a9\u06d2 \u0644\u06cc\u06d2 \u0645\u062e\u0635\u0648\u0635 \u062a\u0627\u0644\u06cc\u0641 \u06a9\u06d2 \u0639\u0644\u0645 \u06a9\u0648 \u0627\u0646\u06a9\u0648\u0688 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4 \u0648\u06c1 \u0688\u0648\u06cc\u0644\u067e\u0631 \u062c\u0648 \u0688\u0627\u0631\u0679 \u06a9\u0648 \u06af\u06c1\u0631\u0627\u0626\u06cc \u0633\u06d2 \u062c\u0627\u0646\u062a\u06d2 \u06c1\u06cc\u06ba \u0644\u06cc\u06a9\u0646 \u0641\u0644\u0679\u0631 \u06a9\u0648 \u0646\u06c1\u06cc\u06ba \u062c\u0627\u0646\u062a\u06d2 \u06c1\u0631 \u06a9\u0644\u0627\u0633 \u06a9\u0648 \u0627\u0633 \u06a9\u06cc \u0627\u067e\u0646\u06cc \u0641\u0627\u0626\u0644 \u0645\u06cc\u06ba \u0645\u0646\u062a\u0642\u0644 \u06a9\u0631\u06a9\u06d2 \u0641\u0627\u0626\u0644\u0648\u06ba \u06a9\u0648 \u0645\u0639\u0642\u0648\u0644 \u0637\u0631\u06cc\u0642\u06d2 \u0633\u06d2 \u062a\u0642\u0633\u06cc\u0645 \u06a9\u0631\u0633\u06a9\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4 \u06a9\u06cc\u0648\u0646\u06a9\u06c1 \u062a\u0627\u0644\u06cc\u0641 \u06a9\u06cc \u063a\u0644\u0637\u06cc \u06c1\u0648\u062a\u06cc \u06c1\u06d2\u06d4 <code>_ProfilePageState<\/code> \u062d\u0648\u0627\u0644\u06c1 <code>ProfilePage<\/code> \u0648\u06cc\u062c\u06cc\u0679 \u06a9\u06d2 \u0630\u0631\u06cc\u0639\u06d2 <code>widget<\/code>\u0627\u0646 \u06a9\u06cc \u0645\u0646\u062f\u0631\u062c\u06c1 \u0630\u06cc\u0644 \u0627\u0642\u0633\u0627\u0645 \u06c1\u06cc\u06ba: <code>State<t\/><\/code> \u06cc\u06c1 \u06a9\u0644\u0627\u0633 \u06a9\u06cc \u0633\u0637\u062d \u067e\u0631 \u0645\u0642\u0631\u0631 \u06a9\u06cc\u0627 \u062c\u0627\u062a\u0627 \u06c1\u06d2. \u062f\u0648\u0646\u0648\u06ba \u0637\u0628\u0642\u06d2 \u0627\u06cc\u06a9 \u0648\u0627\u062d\u062f\u060c \u0644\u0627\u0632\u0645 \u0648 \u0645\u0644\u0632\u0648\u0645 \u062a\u0627\u0644\u06cc\u0641 \u06cc\u0648\u0646\u0679 \u0628\u0646\u0627\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4 \u06cc\u06c1 \u0642\u0627\u0639\u062f\u06c1 \u062a\u0627\u0644\u06cc\u0641 \u06a9\u06cc \u063a\u0644\u0637\u06cc\u0648\u06ba \u06a9\u0648 \u0631\u0648\u06a9\u062a\u0627 \u06c1\u06d2 \u062c\u0646 \u0633\u06d2 \u06af\u0631\u06cc\u0632 \u0646\u06c1\u06cc\u06ba \u06a9\u06cc\u0627 \u062c\u0627 \u0633\u06a9\u062a\u0627 \u0686\u0627\u06c1\u06d2 \u0622\u067e \u06a9\u06d2 \u067e\u0627\u0633 \u06a9\u062a\u0646\u0627 \u06c1\u06cc \u0639\u0627\u0645 \u0688\u0627\u0631\u0679 \u0639\u0644\u0645 \u06c1\u0648\u06d4<\/p>\n<p>\u0631\u0648\u0644\u0632 10 \u0627\u0648\u0631 11 (\"\u0631\u0646 \u0688\u0627\u0631\u0679 \u0641\u0627\u0631\u0645\" \u0627\u0648\u0631 \"\u067e\u0631\u0627\u062c\u06cc\u06a9\u0679 \u0627\u06cc\u0646\u0627\u0644\u0627\u0626\u0632\u0631 \u0686\u0644\u0627\u0626\u06cc\u06ba\") \u06a9\u0627\u0645 \u06a9\u06cc \u062a\u06a9\u0645\u06cc\u0644 \u06a9\u06d2 \u0644\u0648\u067e \u06a9\u0648 \u0628\u0646\u062f \u06a9\u0631\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4 \u0627\u0646 \u0627\u0635\u0648\u0644\u0648\u06ba \u06a9\u06d2 \u0628\u063a\u06cc\u0631\u060c \u0627\u06cc\u062c\u0646\u0679 \u0641\u0627\u0626\u0644 \u0628\u0646\u0627\u0646\u06d2 \u06a9\u06d2 \u0628\u0639\u062f \u06a9\u0627\u0645\u06cc\u0627\u0628\u06cc \u06a9\u0627 \u0627\u0639\u0644\u0627\u0646 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u060c \u0641\u0627\u0631\u0645\u06cc\u0679 \u0645\u06cc\u06ba \u0645\u0645\u0627\u062b\u0644\u062a \u0627\u0648\u0631 \u062a\u062c\u0632\u06cc\u06c1 \u06a9\u0627\u0631 \u06a9\u06cc \u0648\u0627\u0631\u0646\u0646\u06af \u0686\u06be\u0648\u0691 \u062f\u06cc\u062a\u0627 \u06c1\u06d2 \u062c\u0648 \u0628\u0639\u062f \u0645\u06cc\u06ba \u067e\u06a9\u0691\u0627 \u062c\u0627 \u0633\u06a9\u062a\u0627 \u06c1\u06d2\u06d4 \u06cc\u06c1 \u0627\u06cc\u062c\u0646\u0679\u0648\u06ba \u06a9\u0648 \u0631\u067e\u0648\u0631\u0679\u0646\u06af \u0645\u06a9\u0645\u0644 \u06c1\u0648\u0646\u06d2 \u0633\u06d2 \u067e\u06c1\u0644\u06d2 \u0641\u0648\u0631\u06cc \u0637\u0648\u0631 \u067e\u0631 \u0645\u0633\u0627\u0626\u0644 \u06a9\u0648 \u067e\u06a9\u0691\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u062f\u0648\u0646\u0648\u06ba \u0679\u0648\u0644\u0632 \u0686\u0644\u0627\u0646\u06d2 \u06a9\u06cc \u0627\u062c\u0627\u0632\u062a \u062f\u06cc\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<pre><code class=\"language-markdown\">## Widget Extraction\n\nDo not create private `_build...()` methods as a way of extracting substantial widget UI.\n\nFor example, do not do this:\n\n```\nWidget _buildUserCard() {\n  return Container(\n    ...\n  );\n}\n```\n\nInstead separate this into a class that is public and place it inside the widgets folder or the components folder.\n<\/code><\/pre>\n<p>\u0648\u06cc\u062c\u06cc\u0679 \u0646\u06a9\u0627\u0644\u0646\u06d2 \u0648\u0627\u0644\u0627 \u0633\u06cc\u06a9\u0634\u0646 \u0686\u0627\u0631 \u0686\u06cc\u0632\u06cc\u06ba \u06a9\u0631\u062a\u0627 \u06c1\u06d2 \u062c\u0648 \u06a9\u0633\u06cc \u0628\u06be\u06cc \u0627\u0686\u06be\u06d2 \u062a\u06a9\u0646\u06cc\u06a9\u06cc \u0627\u0635\u0648\u0644 \u06a9\u0648 \u06a9\u0631\u0646\u0627 \u0686\u0627\u06c1\u06cc\u06d2: \u06cc\u0639\u0646\u06cc\u060c \u06cc\u06c1 \u0642\u0648\u0627\u0639\u062f \u06a9\u0648 \u0648\u0627\u0636\u062d \u0637\u0648\u0631 \u067e\u0631 \u0628\u06cc\u0627\u0646 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u060c \u0645\u0645\u0646\u0648\u0639\u06c1 \u0646\u0645\u0648\u0646\u0648\u06ba \u06a9\u0648 \u0648\u0627\u0636\u062d \u0637\u0648\u0631 \u067e\u0631 \u0628\u06cc\u0627\u0646 \u06a9\u0631\u062a\u0627 \u06c1\u06d2 (\u0645\u0628\u06c1\u0645 \u06a9\u06cc \u0628\u062c\u0627\u0626\u06d2)\u060c \u0645\u062e\u0635\u0648\u0635 \u06a9\u0648\u0688 \u06a9\u06cc \u0645\u062b\u0627\u0644\u06cc\u06ba \u062f\u06a9\u06be\u0627\u062a\u0627 \u06c1\u06d2 \u06a9\u06c1 \u0627\u0646\u06c1\u06cc\u06ba \u0627\u0628\u06c1\u0627\u0645 \u0633\u06d2 \u0628\u0686\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u06a9\u06cc\u0627 \u0646\u06c1\u06cc\u06ba \u06a9\u0631\u0646\u0627 \u0686\u0627\u06c1\u06cc\u06d2\u060c \u0627\u0648\u0631 \u0627\u06cc\u062c\u0646\u0679 \u06a9\u0648 \u0628\u062a\u0627\u062a\u0627 \u06c1\u06d2 \u06a9\u06c1 \u0627\u0633 \u06a9\u06d2 \u0628\u062c\u0627\u0626\u06d2 \u06a9\u06cc\u0627 \u06a9\u0631\u0646\u0627 \u06c1\u06d2\u06d4<\/p>\n<p>\u06a9\u06c1 <code>_build...()<\/code> \u0679\u0631\u06cc\u0646\u0646\u06af \u0688\u06cc\u0679\u0627 \u0645\u06cc\u06ba \u067e\u06cc\u0679\u0631\u0646 \u0628\u06c1\u062a \u0639\u0627\u0645 \u06c1\u06d2 (\u06c1\u0645 \u0627\u0633\u06d2 \u0633\u0627\u062f\u06af\u06cc \u06a9\u06d2 \u0644\u06cc\u06d2 \u0679\u06cc\u0648\u0679\u0648\u0631\u06cc\u0644\u0632 \u0645\u06cc\u06ba \u0627\u06a9\u062b\u0631 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u062a\u06d2 \u06c1\u06cc\u06ba)\u06d4 \u0627\u0633 \u06a9\u0627 \u0645\u0637\u0644\u0628 \u06cc\u06c1 \u06c1\u06d2 \u06a9\u06c1 \u0627\u06af\u0631 \u0622\u067e \u06a9\u0633\u06cc \u0645\u062e\u0635\u0648\u0635 \u0645\u062b\u0627\u0644 \u06a9\u06d2 \u0628\u063a\u06cc\u0631 \u06a9\u06c1\u062a\u06d2 \u06c1\u06cc\u06ba \u06a9\u06c1 \"\u067e\u0631\u06c1\u06cc\u0632 \u06a9\u0631\u06cc\u06ba\"\u060c \u062a\u0648 \u0622\u067e \u0633\u06cc\u06a9\u06be\u06d2 \u06c1\u0648\u0626\u06d2 \u0631\u0648\u06cc\u06d2 \u06a9\u0648 \u0627\u0648\u0648\u0631 \u0631\u0627\u0626\u06cc\u0688 \u0646\u06c1 \u06a9\u0631\u0646\u06d2 \u06a9\u0627 \u062e\u0637\u0631\u06c1 \u0686\u0644\u0627\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4<\/p>\n<p>\u0633\u06d2 \u0628\u0686\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0635\u062d\u06cc\u062d \u06a9\u0648\u0688 \u06a9\u06d2 \u0646\u0645\u0648\u0646\u0648\u06ba \u06a9\u0648 \u062f\u06a9\u06be\u0627\u0646\u0627 \u0627\u0648\u0631 \u0645\u062a\u0628\u0627\u062f\u0644\u0627\u062a \u06a9\u06d2 \u0633\u0627\u062a\u06be \u0627\u0646 \u06a9\u0627 \u0645\u0642\u0627\u0628\u0644\u06c1 \u06a9\u0631\u0646\u0627 \u0631\u06c1\u0646\u0645\u0627\u0626\u06cc \u06a9\u0648 \u06c1\u0631 \u0645\u0645\u06a9\u0646 \u062d\u062f \u062a\u06a9 \u0648\u0627\u0636\u062d \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<pre><code class=\"language-markdown\">## Component Extraction\n\nDo not place large amounts of UI inside a single widget.\n\nExtract logical sections into reusable components whenever appropriate.\n\nExamples include:\n\n- Header sections\n- Statistics cards\n- Filter bars\n- Search bars\n- Lists\n- Table rows\n- Buttons\n- Empty states\n- Loading views\n- Form sections\n- Dialog content\n\nFavor small, reusable widgets over large build methods.\n<\/code><\/pre>\n<p>\u0627\u062c\u0632\u0627\u0621 \u0646\u06a9\u0627\u0644\u0646\u06d2 \u0648\u0627\u0644\u06d2 \u062d\u0635\u06d2 \u0645\u06cc\u06ba \u0645\u062b\u0627\u0644\u0648\u06ba \u06a9\u06cc \u0641\u06c1\u0631\u0633\u062a \u062d\u0642\u06cc\u0642\u06cc \u062f\u0646\u06cc\u0627 \u06a9\u06d2 \u062a\u062c\u0631\u0628\u06d2 \u067e\u0631 \u0645\u0628\u0646\u06cc \u06c1\u06d2\u06d4 \u06cc\u06c1 \u0627\u0635\u0644 UI \u062d\u0635\u06d2 \u06c1\u06cc\u06ba \u062c\u0648 \u0622\u067e \u06a9\u06cc \u067e\u0631\u0648\u0688\u06a9\u0634\u0646 \u0641\u0644\u0679\u0631 \u0627\u06cc\u067e \u06a9\u06d2 \u0627\u0633\u06a9\u0631\u06cc\u0646 \u0648\u06cc\u062c\u06cc\u0679\u0633 \u06a9\u06d2 \u0627\u0646\u062f\u0631 \u062c\u0645\u0639 \u06c1\u0648\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4 \u0627\u06cc\u06a9 \u0627\u06cc\u062c\u0646\u0679 \u062c\u0648 \u0627\u0633 \u0641\u06c1\u0631\u0633\u062a \u06a9\u0648 \u067e\u0691\u06be\u062a\u0627 \u06c1\u06d2 \u0648\u06c1 \u0627\u0646 \u0646\u0645\u0648\u0646\u0648\u06ba \u06a9\u0648 \u0627\u0633 \u06a9\u0648\u0688 \u0645\u06cc\u06ba \u067e\u06c1\u0686\u0627\u0646 \u0644\u06d2 \u06af\u0627 \u062c\u0633 \u06a9\u0627 \u0648\u06c1 \u0645\u0639\u0627\u0626\u0646\u06c1 \u06a9\u0631\u062a\u0627 \u06c1\u06d2 \u0627\u0648\u0631 \u062c\u0627\u0646 \u0644\u06d2 \u06af\u0627 \u06a9\u06c1 \u0627\u0646\u06c1\u06cc\u06ba \u06a9\u06cc\u0633\u06d2 \u0646\u06a9\u0627\u0644\u0627 \u062c\u0627\u0626\u06d2\u06d4<\/p>\n<p>\u0641\u06c1\u0631\u0633\u062a \u06a9\u06d2 \u0628\u063a\u06cc\u0631\u060c \"\u0645\u0646\u0637\u0642\u06cc \u062d\u0635\u06d2 \u0646\u06a9\u0627\u0644\u06cc\u06ba\" \u0642\u0627\u0628\u0644 \u0627\u0639\u062a\u0645\u0627\u062f \u06c1\u0648\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0628\u06c1\u062a \u0645\u0628\u06c1\u0645 \u06c1\u06d2\u06d4 \u0627\u06cc\u062c\u0646\u0679\u0648\u06ba \u06a9\u0648 \u062e\u0627\u0635 \u0637\u0648\u0631 \u067e\u0631 \u06cc\u06c1 \u062c\u0627\u0646\u0646\u06d2 \u06a9\u06cc \u0636\u0631\u0648\u0631\u062a \u06c1\u06d2 \u06a9\u06c1 \"\u0645\u0646\u0637\u0642\u06cc \u0633\u06cc\u06a9\u0634\u0646\" \u06a9\u06cc\u0627 \u0633\u0645\u062c\u06be\u0627 \u062c\u0627\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<pre><code class=\"language-markdown\">## Code Comments\n\nDo not write code comments.\n\nThis rule applies everywhere and to every layer.\n<\/code><\/pre>\n<p>\u06a9\u0648\u0688 \u067e\u0631 \u062a\u0628\u0635\u0631\u06c1 \u06a9\u0631\u0646\u06d2 \u06a9\u06d2 \u0627\u0635\u0648\u0644 \u0645\u0637\u0644\u0642 \u0627\u0648\u0631 \u0627\u0633 \u0644\u06cc\u06d2 \u0622\u0633\u0627\u0646 \u06c1\u06cc\u06ba\u06d4 \u062c\u0645\u0644\u06c1 \"\u06c1\u0631 \u062c\u06af\u06c1 \u0644\u0627\u06af\u0648 \u06c1\u0648\u062a\u0627 \u06c1\u06d2\u060c \u062a\u0645\u0627\u0645 \u062a\u06c1\u0648\u06ba \u067e\u0631\" \u062c\u0627\u0646 \u0628\u0648\u062c\u06be \u06a9\u0631 \u06c1\u06d2\u06d4 \u0627\u0633 \u0627\u0633\u06a9\u0648\u067e \u06a9\u0648\u0627\u0644\u06cc\u0641\u0627\u0626\u0631 \u06a9\u06d2 \u0628\u063a\u06cc\u0631\u060c \u0627\u06cc\u062c\u0646\u0679 \u0627\u0633 \u0627\u0635\u0648\u0644 \u06a9\u06cc \u062a\u0634\u0631\u06cc\u062d \u0635\u0631\u0641 \u0645\u0648\u062c\u0648\u062f\u06c1 \u0641\u0627\u0626\u0644 \u06a9\u0646\u0641\u06cc\u06af\u0631\u06cc\u0634\u0646 \u0622\u067e\u0631\u06cc\u0634\u0646 \u067e\u0631 \u0644\u0627\u06af\u0648 \u06a9\u0631\u0646\u06d2 \u06a9\u06d2 \u0637\u0648\u0631 \u067e\u0631 \u06a9\u0631 \u0633\u06a9\u062a\u0627 \u06c1\u06d2 \u0627\u0648\u0631 \u0627\u067e\u0646\u06cc \u062a\u062e\u0644\u06cc\u0642 \u06cc\u0627 \u062a\u0631\u0645\u06cc\u0645 \u06a9\u0631\u062f\u06c1 \u062f\u06cc\u06af\u0631 \u0641\u0627\u0626\u0644\u0648\u06ba \u0645\u06cc\u06ba \u062a\u0628\u0635\u0631\u06c1 \u0634\u0627\u0645\u0644 \u06a9\u0631\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0648\u0627\u067e\u0633 \u062c\u0627 \u0633\u06a9\u062a\u0627 \u06c1\u06d2\u06d4 \u0648\u0627\u0636\u062d \u062f\u0627\u0626\u0631\u06c1 \u06a9\u0627\u0631 \u0627\u0628\u06c1\u0627\u0645 \u06a9\u0648 \u062f\u0648\u0631 \u06a9\u0631\u062a\u0627 \u06c1\u06d2 \u0627\u0648\u0631 \u062a\u0645\u0627\u0645 \u0633\u06cc\u0627\u0642 \u0648 \u0633\u0628\u0627\u0642 \u0645\u06cc\u06ba \u0627\u0635\u0648\u0644 \u06a9\u06d2 \u0627\u0631\u0627\u062f\u06d2 \u06a9\u0648 \u0648\u0627\u0636\u062d \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<h2 id=\"heading-writing-your-own-skills-the-complete-guide\">\u0627\u067e\u0646\u06cc \u062e\u0648\u062f \u06a9\u06cc \u0645\u06c1\u0627\u0631\u062a \u0628\u0646\u0627\u0626\u06cc\u06ba: \u0645\u06a9\u0645\u0644 \u06af\u0627\u0626\u06cc\u0688<\/h2>\n<p>\u0631\u0633\u0645\u06cc \u0645\u06c1\u0627\u0631\u062a\u06cc\u06ba \u0622\u067e \u06a9\u06cc \u0628\u0646\u06cc\u0627\u062f \u06c1\u06cc\u06ba\u06d4 \u0644\u06cc\u06a9\u0646 \u0633\u0628 \u0633\u06d2 \u0642\u06cc\u0645\u062a\u06cc \u0645\u06c1\u0627\u0631\u062a \u0627\u06a9\u062b\u0631 \u0627\u067e\u0646\u06cc \u0644\u06a9\u06be\u0646\u06d2 \u06a9\u06cc \u0645\u06c1\u0627\u0631\u062a \u06c1\u0648\u062a\u06cc \u06c1\u06d2\u060c \u0645\u062e\u0635\u0648\u0635 \u067e\u06cc\u0679\u0631\u0646\u060c \u063a\u0644\u0637\u06cc\u0648\u06ba \u0627\u0648\u0631 \u0627\u067e\u0646\u06d2 \u067e\u0631\u0648\u062c\u06cc\u06a9\u0679 \u06a9\u06d2 \u0645\u0639\u06cc\u0627\u0631\u0627\u062a \u06a9\u0648 \u0627\u0646\u06a9\u0648\u0688\u0646\u06af \u06a9\u0631\u0646\u0627\u06d4<\/p>\n<h3 id=\"heading-the-right-mindset-for-writing-skills\">\u0644\u06a9\u06be\u0646\u06d2 \u06a9\u06d2 \u0628\u0627\u0631\u06d2 \u0645\u06cc\u06ba \u0633\u0648\u0686\u0646\u06d2 \u06a9\u0627 \u0635\u062d\u06cc\u062d \u0637\u0631\u06cc\u0642\u06c1<\/h3>\n<p>\u0679\u06cc\u06a9\u0646\u0627\u0644\u0648\u062c\u06cc \u06a9\u06d2 \u0644\u06cc\u06d2 \u0644\u06a9\u06be\u0646\u0627 \u0627\u0646\u0633\u0627\u0646\u0648\u06ba \u06a9\u06d2 \u0644\u06cc\u06d2 \u0644\u06a9\u06be\u0646\u06d2 \u0633\u06d2 \u0645\u062e\u062a\u0644\u0641 \u06c1\u06d2\u06d4 \u0627\u0646\u0633\u0627\u0646\u0648\u06ba \u06a9\u06d2 \u0644\u06cc\u06d2 \u062f\u0633\u062a\u0627\u0648\u06cc\u0632\u0627\u062a \u0645\u0634\u062a\u0631\u06a9\u06c1 \u0633\u06cc\u0627\u0642 \u0648 \u0633\u0628\u0627\u0642\u060c \u0645\u0636\u0645\u0631 \u062a\u0641\u06c1\u06cc\u0645\u060c \u0627\u0648\u0631 \u0633\u0648\u0627\u0644\u0627\u062a \u067e\u0648\u0686\u06be\u0646\u06d2 \u06a9\u06cc \u0635\u0644\u0627\u062d\u06cc\u062a \u067e\u0631 \u0627\u0646\u062d\u0635\u0627\u0631 \u06a9\u0631\u062a\u06cc \u06c1\u06cc\u06ba\u06d4 \u0627\u06cc\u062c\u0646\u0679 \u06a9\u06cc \u0645\u06c1\u0627\u0631\u062a\u06cc\u06ba \u0648\u0627\u0636\u062d \u0627\u0648\u0631 \u062f\u0631\u0633\u062a \u06c1\u0648\u0646\u06cc \u0686\u0627\u06c1\u0626\u06cc\u06ba\u060c \u0627\u0648\u0631 \u0645\u06c1\u0627\u0631\u062a \u06a9\u06cc \u0641\u0627\u0626\u0644 \u0645\u06cc\u06ba \u062c\u0648 \u06a9\u0686\u06be \u06c1\u06d2 \u0627\u0633 \u0633\u06d2 \u0628\u0691\u06be \u06a9\u0631 \u06a9\u0648\u0626\u06cc \u0639\u0644\u0645 \u0641\u0631\u0636 \u0646\u06c1\u06cc\u06ba \u06a9\u06cc\u0627 \u062c\u0627\u0626\u06d2 \u06af\u0627\u06d4<\/p>\n<p>\u0628\u06c1\u062a\u0631\u06cc\u0646 \u0645\u06c1\u0627\u0631\u062a\u06cc\u06ba \u06a9\u0648\u0688 \u0628\u06cc\u0633 \u06a9\u06d2 \u0633\u0627\u062a\u06be \u062d\u0642\u06cc\u0642\u06cc \u062f\u0646\u06cc\u0627 \u06a9\u06d2 \u062a\u062c\u0631\u0628\u06d2 \u0633\u06d2 \u062d\u0627\u0635\u0644 \u06c1\u0648\u062a\u06cc \u06c1\u06cc\u06ba\u06d4 \u062c\u0628 \u0628\u06be\u06cc \u0622\u067e AI \u0633\u06d2 \u062a\u06cc\u0627\u0631 \u06a9\u0631\u062f\u06c1 \u06a9\u0648\u0688 \u0645\u06cc\u06ba \u062f\u0633\u062a\u06cc \u0637\u0648\u0631 \u067e\u0631 \u062a\u0631\u0645\u06cc\u0645 \u06a9\u0631\u06cc\u06ba \u062a\u0648 \u0686\u0644\u062a\u06cc \u0641\u06c1\u0631\u0633\u062a \u06a9\u0648 \u0628\u0631\u0642\u0631\u0627\u0631 \u0631\u06a9\u06be\u06cc\u06ba\u06d4 \u062a\u0645\u0627\u0645 \u062a\u0631\u0627\u0645\u06cc\u0645 \u0645\u06c1\u0627\u0631\u062a \u06a9\u06d2 \u0627\u0635\u0648\u0644 \u06c1\u06cc\u06ba\u06d4 \u062c\u0628 \u0622\u067e \u0679\u06cc\u0645 \u06a9\u06d2 \u06a9\u0633\u06cc \u0646\u0626\u06d2 \u0631\u06a9\u0646 \u06a9\u0648 \u0642\u0648\u0627\u0639\u062f \u06a9\u06cc \u0648\u0636\u0627\u062d\u062a \u06a9\u0631\u062a\u06d2 \u06c1\u06cc\u06ba\u060c \u062a\u0648 \u0648\u06c1 \u0648\u0636\u0627\u062d\u062a \u062a\u06a9\u0646\u06cc\u06a9\u06cc \u0645\u0648\u0627\u062f \u06c1\u06d2\u06d4 \u0627\u06af\u0631 \u0622\u067e \u06a9\u0648 \u06a9\u0648\u0688 \u06a9\u06d2 \u062c\u0627\u0626\u0632\u06d2 \u0645\u06cc\u06ba \u0644\u06af\u0627\u062a\u0627\u0631 \u062a\u06cc\u0646 \u0628\u0627\u0631 \u0627\u06cc\u06a9 \u06c1\u06cc \u063a\u0644\u0637\u06cc \u0646\u0638\u0631 \u0622\u062a\u06cc \u06c1\u06d2\u060c \u062a\u0648 \u0627\u0633 \u063a\u0644\u0637\u06cc \u06a9\u06d2 \u0644\u06cc\u06d2 \u0645\u06c1\u0627\u0631\u062a \u06a9\u06cc \u0636\u0631\u0648\u0631\u062a \u06c1\u0648\u062a\u06cc \u06c1\u06d2\u06d4<\/p>\n<p>\u0627\u0633 \u0633\u06d2 \u067e\u06c1\u0644\u06d2 \u06a9\u06c1 \u0622\u067e \u06a9\u0648\u0626\u06cc \u0627\u0635\u0648\u0644 \u0644\u06a9\u06be\u06cc\u06ba\u060c \u0627\u067e\u0646\u06d2 \u0622\u067e \u0633\u06d2 \u067e\u0648\u0686\u06be\u06cc\u06ba: \"\u06a9\u06cc\u0627 \u06a9\u0648\u0626\u06cc \u0627\u06cc\u062c\u0646\u0679 \u062c\u0648 \u0645\u06cc\u0631\u06d2 \u06a9\u0648\u0688\u0628\u06cc\u0633 \u06a9\u0648 \u0646\u06c1\u06cc\u06ba \u062c\u0627\u0646\u062a\u0627 \u0648\u06c1 \u0627\u06cc\u0633\u0627 \u06a9\u0631 \u0633\u06a9\u06d2 \u06af\u0627\u061f\" \u0627\u06af\u0631 \u062c\u0648\u0627\u0628 \u0646\u0641\u06cc \u0645\u06cc\u06ba \u06c1\u06d2 \u062a\u0648 \u0627\u0635\u0648\u0644 \u062a\u06a9\u0646\u06cc\u06a9\u06cc \u06c1\u06d2\u06d4<\/p>\n<h3 id=\"heading-the-description-the-most-important-twenty-words\">\u062a\u0641\u0635\u06cc\u0644: 20 \u0627\u06c1\u0645 \u062a\u0631\u06cc\u0646 \u0627\u0644\u0641\u0627\u0638<\/h3>\n<p>\u062a\u0641\u0635\u06cc\u0644 \u06a9\u0627 \u0645\u06cc\u062f\u0627\u0646 \u06af\u06cc\u0679 \u06a9\u06cc\u067e\u0631 \u06c1\u06d2\u06d4 \u0622\u062e\u0631\u06cc \u062a\u062d\u0631\u06cc\u0631\u060c \u0645\u06c1\u0627\u0631\u062a \u06a9\u0627 \u0645\u0631\u06a9\u0632\u06cc \u062d\u0635\u06c1 \u0645\u06a9\u0645\u0644 \u06c1\u0648\u0646\u06d2 \u06a9\u06d2 \u0628\u0639\u062f\u060c \u06cc\u06c1 \u0628\u0627\u0644\u06a9\u0644 \u0648\u0627\u0636\u062d \u06a9\u0631\u062a\u0627 \u06c1\u06d2 \u06a9\u06c1 \u06c1\u0646\u0631 \u0627\u0635\u0644 \u0645\u06cc\u06ba \u06a9\u06cc\u0627 \u0627\u062d\u0627\u0637\u06c1 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4 \u0627\u06cc\u06a9 \u0627\u0686\u06be\u06cc \u0648\u0636\u0627\u062d\u062a \u0627\u0633 \u0627\u0645\u062a\u062d\u0627\u0646 \u0633\u06d2 \u06af\u0632\u0631\u062a\u06cc \u06c1\u06d2\u06d4 \u0627\u06af\u0631 \u0627\u06cc\u062c\u0646\u0679 \u0635\u0631\u0641 \u062a\u0641\u0635\u06cc\u0644 \u067e\u0691\u06be\u062a\u0627 \u06c1\u06d2\u060c \u062a\u0648 \u0627\u0633\u06d2 \u0645\u0639\u0644\u0648\u0645 \u06c1\u0648 \u062c\u0627\u0626\u06d2 \u06af\u0627 \u06a9\u06c1 \u06a9\u06cc\u0627 \u0645\u06c1\u0627\u0631\u062a \u062f\u06cc\u06d2 \u06af\u0626\u06d2 \u06a9\u0627\u0645 \u0633\u06d2 \u0645\u062a\u0639\u0644\u0642 \u06c1\u06d2\u06d4<\/p>\n<pre><code class=\"language-yaml\"># Poor: too vague, no trigger phrases\ndescription: How to handle state in Flutter apps.\n\n# Better: specific, multiple trigger phrases, clear scope\ndescription: Implement state management using flutter_bloc in Flutter applications.\nUse when adding state management to screens, creating new features that have loading\nor error states, fetching data from APIs, handling user interactions that change\nUI state, or implementing BlocProvider, BlocBuilder, BlocListener, or BlocConsumer.\nApplies when you see references to bloc, cubit, state, event, or stream in a task.\n<\/code><\/pre>\n<p>\u062f\u0648\u0633\u0631\u06cc \u0648\u0636\u0627\u062d\u062a \u06a9\u0626\u06cc \u0645\u062e\u0635\u0648\u0635 \u0648\u062c\u0648\u06c1\u0627\u062a \u06a9\u06cc \u0628\u0646\u0627 \u067e\u0631 \u0628\u06c1\u062a\u0631 \u06c1\u06d2\u06d4 \u0645\u062e\u0635\u0648\u0635 \u0679\u0631\u06af\u0631 \u0645\u0646\u0638\u0631\u0646\u0627\u0645\u0648\u06ba \u06a9\u06cc \u0641\u06c1\u0631\u0633\u062a \u0628\u0646\u0627\u0626\u06cc\u06ba (\"\u0644\u0648\u0688\u0646\u06af \u06cc\u0627 \u0627\u06cc\u0631\u0631 \u0627\u0633\u0679\u06cc\u0679\u0633 \u06a9\u06d2 \u0633\u0627\u062a\u06be \u0646\u06cc\u0627 \u0641\u0646\u06a9\u0634\u0646 \u0628\u0646\u0627\u0626\u06cc\u06ba\") \u062c\u0648 \u06a9\u06c1 \u0645\u0628\u06c1\u0645 \"\u06c1\u06cc\u0646\u0688\u0644 \u0627\u0633\u0679\u06cc\u0679\" \u06a9\u06d2 \u0645\u0642\u0627\u0628\u0644\u06d2 \u0645\u06cc\u06ba \u0627\u0635\u0644 \u06a9\u0627\u0645 \u06a9\u06cc \u062a\u0641\u0635\u06cc\u0644 \u0633\u06d2 \u0645\u0645\u0627\u062b\u0644 \u06c1\u06cc\u06ba\u06d4 \u0627\u0633 \u0645\u06cc\u06ba \u0645\u062a\u0639\u0644\u0642\u06c1 \u067e\u06cc\u06a9\u06cc\u062c \u06a9\u06cc API \u0633\u0637\u062d \u0634\u0627\u0645\u0644 \u06c1\u06d2 (<code>BlocProvider<\/code>, <code>BlocBuilder<\/code>) \u0645\u0645\u06a9\u0646\u06c1 \u0637\u0648\u0631 \u067e\u0631 \u0645\u0644\u0627\u0632\u0645\u062a \u06a9\u06cc \u062a\u0641\u0635\u06cc\u0644 \u0645\u06cc\u06ba \u0638\u0627\u06c1\u0631 \u06c1\u0648\u06af\u0627\u06d4 \u0627\u0648\u0631 \u062a\u0635\u0648\u0631\u0627\u062a\u06cc \u0645\u0637\u0644\u0648\u0628\u06c1 \u0627\u0644\u0641\u0627\u0638 \u06a9\u06cc \u0641\u06c1\u0631\u0633\u062a (<code>bloc<\/code>, <code>cubit<\/code>, <code>state<\/code>\u0627\u0648\u0631 <code>event<\/code>) \u0633\u06af\u0646\u0644 \u06a9\u06d2 \u0637\u0648\u0631 \u067e\u0631 \u06a9\u0627\u0645 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<h3 id=\"heading-writing-rules-that-change-agent-behavior\">\u0627\u06cc\u062c\u0646\u0679 \u06a9\u06d2 \u0631\u0648\u06cc\u06d2 \u06a9\u0648 \u062a\u0628\u062f\u06cc\u0644 \u06a9\u0631\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0642\u0648\u0627\u0639\u062f \u0644\u06a9\u06be\u06cc\u06ba\u06d4<\/h3>\n<p>\u062a\u0645\u0627\u0645 \u0642\u0648\u0627\u0646\u06cc\u0646 \u0628\u0631\u0627\u0628\u0631 \u0646\u06c1\u06cc\u06ba \u06c1\u06cc\u06ba\u06d4 \u0648\u06c1 \u0642\u0648\u0627\u0639\u062f \u062c\u0648 \u0627\u06cc\u062c\u0646\u0679\u0648\u06ba \u06a9\u0648 \u06a9\u06c1\u062a\u06d2 \u06c1\u06cc\u06ba \u06a9\u06c1 \u0648\u06c1 \u067e\u06c1\u0644\u06d2 \u0633\u06d2 \u06a9\u06cc\u0627 \u06a9\u0631 \u0631\u06c1\u06d2 \u06c1\u06cc\u06ba \u06a9\u0648\u0626\u06cc \u0627\u06c1\u0645\u06cc\u062a \u0646\u06c1\u06cc\u06ba \u062f\u06cc\u062a\u06d2\u06d4 \u0648\u06c1 \u0642\u0648\u0627\u0639\u062f \u062c\u0648 \u0627\u06cc\u062c\u0646\u0679 \u06a9\u06d2 \u06a9\u0627\u0645 \u06a9\u0648 \u062a\u0628\u062f\u06cc\u0644 \u06a9\u0631\u062a\u06d2 \u06c1\u06cc\u06ba \u0642\u06cc\u0645\u062a\u06cc \u0627\u0635\u0648\u0644 \u06c1\u06cc\u06ba\u06d4 \u0631\u0648\u06cc\u06d2 \u06a9\u0648 \u062a\u0628\u062f\u06cc\u0644 \u06a9\u0631\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0627\u0635\u0648\u0644 \u0644\u06a9\u06be\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2\u060c \u0645\u0634\u0627\u06c1\u062f\u0627\u062a \u0633\u06d2 \u0634\u0631\u0648\u0639 \u06a9\u0631\u06cc\u06ba\u06d4 \u0627\u06cc\u062c\u0646\u0679 \u0646\u06d2 \u0627\u0635\u0644 \u0645\u06cc\u06ba \u06a9\u06cc\u0627 \u062a\u062e\u0644\u06cc\u0642 \u06a9\u06cc\u0627 \u062c\u0648 \u063a\u0644\u0637 \u062a\u06be\u0627\u060c \u0627\u0648\u0631 \u06a9\u0646 \u0627\u0635\u0648\u0644\u0648\u06ba \u0646\u06d2 \u0627\u0633\u06d2 \u0631\u0648\u06a9\u0627\u061f<\/p>\n<pre><code class=\"language-markdown\">## Rules That Work vs Rules That Do Not\n\nDO NOT WORK (agent was already trying to do these):\n- Write clean, readable code.\n- Follow Flutter best practices.\n- Use appropriate state management.\n- Keep the codebase maintainable.\n\nWORK (these change specific agent behavior):\n- Extract any widget build section exceeding 30 lines into a separate class in widgets\/.\n- Never call setState inside a widget that has a corresponding BlocBuilder.\n- Name Bloc events as past-tense verbs: ProfileLoadRequested, not LoadProfile.\n- Place all Bloc files (bloc, event, state) in a bloc\/ subdirectory inside the feature.\n- The state class uses sealed keyword: sealed class ProfileState {}.\n- Provide super.key in every widget constructor: const MyWidget({super.key}).\n- Check mounted before calling setState in any async method.\n<\/code><\/pre>\n<p>\u06a9\u0627\u0645 \u06a9\u0631\u0646\u06d2 \u06a9\u06d2 \u0642\u0648\u0627\u0646\u06cc\u0646 \u0645\u06cc\u06ba \u0627\u06cc\u06a9 \u0645\u062e\u0635\u0648\u0635 \u0646\u0645\u0628\u0631 (30 \u0644\u0627\u0626\u0646\u06cc\u06ba)\u060c \u0627\u06cc\u06a9 \u0645\u062e\u0635\u0648\u0635 \u0641\u0648\u0644\u0688\u0631 \u06a9\u0627 \u0646\u0627\u0645 (widgets\/\u060c bloc\/)\u060c \u0645\u062b\u0627\u0644\u0648\u06ba \u06a9\u06d2 \u0633\u0627\u062a\u06be \u0627\u06cc\u06a9 \u0645\u062e\u0635\u0648\u0635 \u0646\u0627\u0645 \u06a9\u0627 \u0646\u0645\u0648\u0646\u06c1\u060c \u0627\u0648\u0631 \u0627\u06cc\u06a9 \u0645\u062e\u0635\u0648\u0635 \u06a9\u0648\u0688 \u067e\u06cc\u0679\u0631\u0646 \u0634\u0627\u0645\u0644 \u06c1\u06cc\u06ba\u06d4 \"\u06a9\u0644\u06cc\u0646 \u06a9\u0648\u0688 \u0644\u06a9\u06be\u06cc\u06ba\" \u062c\u06cc\u0633\u06d2 \u0645\u0628\u06c1\u0645 \u0627\u0635\u0648\u0644 \u0628\u06cc\u0627\u0646 \u06a9\u0631\u062a\u06d2 \u06c1\u06cc\u06ba \u06a9\u06c1 \u0627\u06cc\u062c\u0646\u0679 \u067e\u06c1\u0644\u06d2 \u0633\u06d2 \u0637\u06d2 \u0634\u062f\u06c1 \u0637\u0648\u0631 \u067e\u0631 \u06a9\u06cc\u0627 \u06a9\u0631\u0646\u06d2 \u06a9\u06cc \u06a9\u0648\u0634\u0634 \u06a9\u0631 \u0631\u06c1\u0627 \u06c1\u06d2\u06d4 \u06a9\u0686\u06be \u0627\u0635\u0648\u0644\u060c \u062c\u06cc\u0633\u06d2 \"\u0645\u062e\u0635\u0648\u0635 \u0645\u062b\u0627\u0644\u0648\u06ba \u06a9\u06d2 \u0633\u0627\u062a\u06be \u0645\u0627\u0636\u06cc \u06a9\u06d2 \u062a\u0646\u0627\u0624 \u06a9\u06d2 \u0641\u0639\u0644 \u06a9\u06d2 \u0633\u0627\u062a\u06be \u0646\u0627\u0645 \u0628\u0644\u0627\u06a9 \u0648\u0627\u0642\u0639\u0627\u062a\"\u060c \u0627\u0635\u0644 \u067e\u06cc\u062f\u0627\u0648\u0627\u0631 \u06a9\u0648 \u062a\u0628\u062f\u06cc\u0644 \u06a9\u0631\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4<\/p>\n<h3 id=\"heading-the-counterexample-pattern\">\u0645\u062a\u0636\u0627\u062f \u0646\u0645\u0648\u0646\u06c1<\/h3>\n<p>\u062a\u0631\u0628\u06cc\u062a \u06a9\u06d2 \u0627\u0639\u062f\u0627\u062f \u0648 \u0634\u0645\u0627\u0631 \u0645\u06cc\u06ba \u0639\u0627\u0645 \u0646\u0645\u0648\u0646\u0648\u06ba \u06a9\u0627 \u0627\u062d\u0627\u0637\u06c1 \u06a9\u0631\u0646\u06d2 \u0648\u0627\u0644\u06d2 \u0627\u0635\u0648\u0644\u0648\u06ba \u06a9\u06d2 \u0644\u06cc\u06d2\u060c \u062f\u0631\u0633\u062a \u0646\u0645\u0648\u0646\u0648\u06ba \u06a9\u06d2 \u0633\u0627\u062a\u06be \u063a\u0644\u0637 \u0646\u0645\u0648\u0646\u0648\u06ba \u06a9\u0648 \u0638\u0627\u06c1\u0631 \u06a9\u0631\u0646\u0627 \u0635\u0631\u0641 \u0645\u062a\u0646 \u0645\u06cc\u06ba \u0627\u0635\u0648\u0644 \u06a9\u0648 \u0628\u06cc\u0627\u0646 \u06a9\u0631\u0646\u06d2 \u0633\u06d2 \u06a9\u06c1\u06cc\u06ba \u0632\u06cc\u0627\u062f\u06c1 \u0645\u0624\u062b\u0631 \u06c1\u06d2\u06d4 \u0627\u06cc\u062c\u0646\u0679\u0648\u06ba \u0646\u06d2 \u062a\u0631\u0628\u06cc\u062a \u06a9\u06d2 \u062f\u0648\u0631\u0627\u0646 \u06c1\u0632\u0627\u0631\u0648\u06ba \u0628\u0627\u0631 \u063a\u0644\u0637 \u0646\u0645\u0648\u0646\u06d2 \u062f\u06cc\u06a9\u06be\u06d2\u06d4 \u0645\u062a\u0646\u06cc \u0627\u0635\u0648\u0644 \u0634\u0627\u06cc\u062f \u0627\u062a\u0646\u06d2 \u0637\u0627\u0642\u062a\u0648\u0631 \u0646\u06c1 \u06c1\u0648\u06ba \u06a9\u06c1 \u0633\u06cc\u06a9\u06be\u06d2 \u06c1\u0648\u0626\u06d2 \u0631\u0648\u06cc\u06d2 \u06a9\u0648 \u0627\u0648\u0648\u0631 \u0631\u0627\u0626\u06cc\u0688 \u06a9\u0631 \u0633\u06a9\u06cc\u06ba\u06d4 \u0628\u0635\u0631\u06cc \u062a\u0636\u0627\u062f \u0627\u0631\u0627\u062f\u06d2 \u06a9\u0648 \u0648\u0627\u0636\u062d \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<pre><code class=\"language-markdown\">## Error State Naming\n\nDo not name error states with the word \"Error\" alone at the end.\n\nDo not do this:\n\n```\nfinal class ProfileError extends ProfileState {\n  const ProfileError();\n}\n<\/code><\/pre>\n<p>\u063a\u0644\u0637\u06cc \u06a9\u06d2 \u0633\u06cc\u0627\u0642 \u0648 \u0633\u0628\u0627\u0642 \u067e\u0631 \u0645\u0634\u062a\u0645\u0644 \u06c1\u06d2\u06d4<\/p>\n<pre><code class=\"language-dart\">final class ProfileLoadFailure extends ProfileState {\n  const ProfileLoadFailure({required this.message});\n  final String message;\n}\n<\/code><\/pre>\n<p>\u06a9\u0627\u0645 \u06a9\u0627 \u0646\u0627\u0645 \u0634\u0627\u0645\u0644 \u06a9\u0631\u06cc\u06ba (<code>Load<\/code>) \u0646\u0627\u06a9\u0627\u0645 \u0622\u067e\u0631\u06cc\u0634\u0646 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0645\u062e\u0635\u0648\u0635 \u062e\u0631\u0627\u0628\u06cc \u06a9\u06cc \u062d\u0627\u0644\u062a \u067e\u06cc\u062f\u0627 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4 \u06cc\u06c1 \u0627\u0633 \u0648\u0642\u062a \u0627\u06c1\u0645 \u06c1\u06d2 \u062c\u0628 \u0627\u06cc\u06a9 \u0628\u0644\u0627\u06a9 \u0645\u062a\u0639\u062f\u062f \u06a9\u0627\u0645\u0648\u06ba \u06a9\u0648 \u0633\u0646\u0628\u06be\u0627\u0644\u062a\u0627 \u06c1\u06d2 \u062c\u0648 \u0622\u0632\u0627\u062f\u0627\u0646\u06c1 \u0637\u0648\u0631 \u067e\u0631 \u0646\u0627\u06a9\u0627\u0645 \u06c1\u0648 \u0633\u06a9\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4 <code>ProfileLoadFailure<\/code> \u0627\u0648\u0631 <code>ProfileUpdateFailure<\/code> \u06c1\u0645 \u0628\u0627\u0645\u0639\u0646\u06cc \u0637\u0648\u0631 \u067e\u0631 \u0627\u06cc\u06a9 \u0633\u0627\u062a\u06be \u0631\u06c1 \u0633\u06a9\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4 <code>ProfileError<\/code> \u0627\u0648\u0631 <code>ProfileError2<\/code> \u0646\u06c1\u06cc\u06ba \u06a9\u0631 \u0633\u06a9\u062a\u06d2<\/p>\n<p>\u062c\u0648\u0627\u0628\u06cc \u0645\u062b\u0627\u0644 \u06a9\u06d2 \u0628\u0639\u062f \u06a9\u06cc \u0648\u0636\u0627\u062d\u062a (\"\u0627\u06cc\u06a9\u0634\u0646 \u06a9\u06d2 \u0646\u0627\u0645 \u06a9\u06d2 \u0633\u0627\u062a\u06be...\") \u0627\u0635\u0648\u0644 \u06a9\u0648 \u0627\u06cc\u06a9 \u0648\u062c\u06c1 \u0633\u06d2 \u062c\u0648\u0691\u062a\u06cc \u06c1\u06d2\u060c \u062c\u0633 \u0633\u06d2 \u0627\u06cc\u062c\u0646\u0679 \u06a9\u0648 \u0635\u0631\u0641 \u0627\u0635\u0648\u0644 \u06a9\u06d2 \u062e\u0637 \u067e\u0631 \u0639\u0645\u0644 \u06a9\u0631\u0646\u06d2 \u06a9\u06cc \u0628\u062c\u0627\u0626\u06d2 \u0627\u0646\u062a\u06c1\u0627\u0626\u06cc \u0635\u0648\u0631\u062a\u0648\u06ba \u0645\u06cc\u06ba \u0627\u0635\u0648\u0644 \u06a9\u0648 \u062f\u0631\u0633\u062a \u0637\u0631\u06cc\u0642\u06d2 \u0633\u06d2 \u0644\u0627\u06af\u0648 \u06a9\u0631\u0646\u06d2 \u0645\u06cc\u06ba \u0645\u062f\u062f \u0645\u0644\u062a\u06cc \u06c1\u06d2\u06d4<\/p>\n<h2 id=\"heading-essential-flutter-skills-every-team-should-have\">\u0636\u0631\u0648\u0631\u06cc \u067e\u06be\u0691\u067e\u06be\u0691\u0627\u0646\u06d2 \u06a9\u06cc \u0645\u06c1\u0627\u0631\u062a\u06cc\u06ba \u06c1\u0631 \u0679\u06cc\u0645 \u06a9\u0648 \u06c1\u0648\u0646\u06cc \u0686\u0627\u06c1\u0626\u06cc\u06ba<\/h2>\n<p>\u0633\u0628 \u0633\u06d2 \u0639\u0627\u0645 \u0639\u0644\u0627\u0642\u0648\u06ba \u06a9\u06cc \u0628\u0646\u06cc\u0627\u062f \u067e\u0631 \u062c\u06c1\u0627\u06ba AI \u0627\u06cc\u062c\u0646\u0679 \u063a\u0644\u0637 \u0641\u0644\u0679\u0631 \u0622\u0624\u0679 \u067e\u0679 \u062a\u06cc\u0627\u0631 \u06a9\u0631\u062a\u06d2 \u06c1\u06cc\u06ba\u060c \u06cc\u06c1\u0627\u06ba \u0636\u0631\u0648\u0631\u06cc \u0679\u06cc\u06a9\u0646\u0627\u0644\u0648\u062c\u06cc\u0632 \u06c1\u06cc\u06ba \u062c\u0648 \u06c1\u0631 \u0641\u0644\u0679\u0631 \u0679\u06cc\u0645 \u06a9\u0648 \u0628\u0646\u0627\u0646\u0627 \u0627\u0648\u0631 \u0628\u0631\u0642\u0631\u0627\u0631 \u0631\u06a9\u06be\u0646\u06cc \u0686\u0627\u06c1\u06cc\u06d2: \u06c1\u0631 \u0627\u06cc\u06a9 \u06a9\u0648 \u0645\u06a9\u0645\u0644 \u0637\u0648\u0631 \u067e\u0631 \u067e\u06cc\u0634 \u06a9\u06cc\u0627 \u062c\u0627\u062a\u0627 \u06c1\u06d2 \u062a\u0627\u06a9\u06c1 \u0627\u0633\u06d2 \u0622\u067e \u06a9\u06d2 \u0645\u062e\u0635\u0648\u0635 \u0627\u0635\u0648\u0644\u0648\u06ba \u06a9\u06d2 \u0645\u0637\u0627\u0628\u0642 \u0628\u0646\u0627\u06cc\u0627 \u062c\u0627 \u0633\u06a9\u06d2\u06d4<\/p>\n<h3 id=\"heading-the-bloc-state-management-skill\">\u0631\u06cc\u0627\u0633\u062a\u06cc \u0627\u0646\u062a\u0638\u0627\u0645\u06cc \u0679\u06cc\u06a9\u0646\u0627\u0644\u0648\u062c\u06cc \u06a9\u0648 \u0628\u0644\u0627\u06a9 \u06a9\u0631\u06cc\u06ba\u06d4<\/h3>\n<pre><code class=\"language-plaintext\">---\nname: flutter-bloc-state-management\ndescription: Implement state management using flutter_bloc. Use when creating new features,\nadding state to screens, fetching data from APIs, handling user interactions that produce\nloading or error states, using BlocProvider, BlocBuilder, BlocListener, BlocConsumer,\nadding a Cubit, or any task involving state transitions in Flutter.\n---\n\n# Flutter Bloc State Management\n\nThis project uses flutter_bloc for all state management. Do not use setState, ChangeNotifier,\nProvider, or Riverpod unless explicitly instructed.\n\n## File Structure\n\nEvery feature that requires state management has three Bloc files in a bloc\/ subdirectory:\n<\/code><\/pre>\n<pre><code class=\"language-plaintext\">lib\/\n  features\/\n    profile\/\n      bloc\/\n        profile_bloc.dart      <- Bloc class and handler methods\n        profile_event.dart     <- All events as sealed class hierarchy\n        profile_state.dart     <- All states as sealed class hierarchy\n      screens\/\n        profile_screen.dart\n      widgets\/\n        profile_card.dart\n      profile.dart              <- barrel export\n<\/code><\/pre>\n<h4 id=\"heading-sealed-classes\">\u0645\u06c1\u0631\u0628\u0646\u062f \u06a9\u0644\u0627\u0633<\/h4>\n<p>\u062a\u0642\u0631\u06cc\u0628\u0627\u062a \u0627\u0648\u0631 \u0631\u06cc\u0627\u0633\u062a\u06cc\u06ba \u0688\u0627\u0631\u0679 \u06a9\u06d2 \u0645\u06c1\u0631 \u0628\u0646\u062f \u06a9\u0644\u0627\u0633 \u0633\u0633\u0679\u0645 \u06a9\u0648 \u0645\u06a9\u0645\u0644 \u06c1\u06cc\u0646\u0688\u0644\u0646\u06af \u06a9\u06d2 \u0644\u06cc\u06d2 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u062a\u06cc \u06c1\u06cc\u06ba\u06d4<\/p>\n<pre><code class=\"language-dart\">\/\/ profile_event.dart\nsealed class ProfileEvent {}\n\nfinal class ProfileLoadRequested extends ProfileEvent {\n  const ProfileLoadRequested({required this.userId});\n  final String userId;\n}\n\nfinal class ProfileUsernameUpdated extends ProfileEvent {\n  const ProfileUsernameUpdated({required this.newUsername});\n  final String newUsername;\n}\n<\/code><\/pre>\n<pre><code class=\"language-dart\">\/\/ profile_state.dart\nsealed class ProfileState {}\n\nfinal class ProfileInitial extends ProfileState {}\n\nfinal class ProfileLoading extends ProfileState {}\n\nfinal class ProfileLoaded extends ProfileState {\n  const ProfileLoaded({required this.profile});\n  final UserProfile profile;\n}\n\nfinal class ProfileLoadFailure extends ProfileState {\n  const ProfileLoadFailure({required this.message});\n  final String message;\n}\n<\/code><\/pre>\n<p><code>sealed class<\/code>    \u0627\u06cc\u06a9 \u0645\u06a9\u0645\u0644 \u062f\u0631\u062c\u06c1 \u0628\u0646\u062f\u06cc \u0628\u0646\u0627\u0626\u06cc\u06ba\u06d4 \u0688\u0627\u0631\u0679 \u06a9\u0627 \u06a9\u0645\u067e\u0627\u0626\u0644\u0631 \u0627\u0633 \u0628\u0627\u062a \u06a9\u0648 \u06cc\u0642\u06cc\u0646\u06cc \u0628\u0646\u0627 \u0633\u06a9\u062a\u0627 \u06c1\u06d2 \u06a9\u06c1 \u062a\u0645\u0627\u0645 \u0645\u0645\u06a9\u0646\u06c1 \u0631\u06cc\u0627\u0633\u062a\u0648\u06ba \u06a9\u0648 \u0633\u0648\u0626\u0686 \u0627\u0633\u0679\u06cc\u0679\u0645\u0646\u0679 \u0645\u06cc\u06ba \u06c1\u06cc\u0646\u0688\u0644 \u06a9\u06cc\u0627 \u062c\u0627\u0626\u06d2\u06d4 <code>final class<\/code> \u0679\u06be\u0648\u0633 \u0639\u0645\u0644 \u062f\u0631\u0622\u0645\u062f \u063a\u06cc\u0631 \u0627\u0631\u0627\u062f\u06cc \u0630\u06cc\u0644\u06cc \u0637\u0628\u0642\u06d2 \u06a9\u0648 \u0631\u0648\u06a9\u062a\u0627 \u06c1\u06d2\u06d4 \u062a\u0645\u0627\u0645 \u0631\u06cc\u0627\u0633\u062a\u06cc\u06ba \u0627\u0648\u0631 \u0648\u0627\u0642\u0639\u0627\u062a <code>final<\/code> \u0627\u0648\u0631 <code>sealed<\/code>.<\/p>\n<h4 id=\"heading-naming-conventions\">\u0646\u0627\u0645 \u062f\u06cc\u0646\u06d2 \u06a9\u0627 \u06a9\u0646\u0648\u0646\u0634\u0646<\/h4>\n<p>\u0628\u0644\u0627\u06a9 \u06a9\u0644\u0627\u0633 \u06a9\u0648 \u0641\u0646\u06a9\u0634\u0646 \u06a9\u06d2 \u0646\u0627\u0645 \u06a9\u06d2 \u0628\u0639\u062f \u0641\u0646\u06a9\u0634\u0646 \u06a9\u0627 \u0646\u0627\u0645 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u0646\u0627 \u0686\u0627\u06c1\u06cc\u06d2\u06d4 <code>Bloc<\/code>\u0627\u0633 \u0637\u0631\u062d <code>ProfileBloc<\/code>, <code>AuthBloc<\/code>\u06cc\u0627 <code>CartBloc<\/code>. \u0648\u0627\u0642\u0639\u0627\u062a \u06a9\u0648 \u0645\u0627\u0636\u06cc \u06a9\u06d2 \u0632\u0645\u0627\u0646\u06c1 \u0641\u0639\u0644 \u06a9\u06d2 \u0641\u0642\u0631\u06d2\u060c \u0641\u0646\u06a9\u0634\u0646 \u06a9\u06d2 \u0646\u0627\u0645\u060c \u0627\u0648\u0631 \u0641\u0646\u06a9\u0634\u0646 \u06a9\u06d2 \u0646\u0627\u0645 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u0646\u06d2 \u0686\u0627\u06c1\u0626\u06cc\u06ba\u06d4 <code>Event<\/code> \u0644\u0627\u062d\u0642\u06d2 \u062c\u06cc\u0633\u06d2 <code>ProfileLoadRequested<\/code> \u06cc\u0627 <code>AuthLoginAttempted<\/code>. \u0631\u06cc\u0627\u0633\u062a\u0648\u06ba \u06a9\u0648 \u0641\u0646\u06a9\u0634\u0646 \u06a9\u06d2 \u0646\u0627\u0645 \u06a9\u06d2 \u0628\u0639\u062f \u062f\u0631\u062c \u0630\u06cc\u0644 \u0648\u0636\u0627\u062d\u062a\u06cc \u0627\u0633\u0645 \u06cc\u0627 \u0635\u0641\u062a \u06a9\u0627 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u0646\u0627 \u0686\u0627\u06c1\u06cc\u06d2: <code>ProfileInitial<\/code>, <code>ProfileLoading<\/code>, <code>ProfileLoaded<\/code>\u06cc\u0627 <code>ProfileLoadFailure<\/code>.<\/p>\n<p>\u06a9\u0645\u0627\u0646\u0688 \u06a9\u06d2 \u0637\u0648\u0631 \u067e\u0631 \u0627\u06cc\u0648\u0646\u0679 \u06a9\u0627 \u0646\u0627\u0645 \u0645\u062a\u0639\u06cc\u0646 \u0646\u06c1 \u06a9\u0631\u06cc\u06ba ( <code>LoadProfile<\/code>\u0644\u06cc\u06a9\u0646 <code>ProfileLoadRequested<\/code>)\u06d4 \u063a\u0644\u0637\u06cc \u06a9\u06cc \u062d\u0627\u0644\u062a \u06a9\u0648 \u0627\u0633 \u0637\u0631\u062d \u06a9\u0627 \u0646\u0627\u0645 \u0646\u06c1 \u062f\u06cc\u06ba: <code>ProfileError<\/code>. \u062f\u0631\u062c \u0630\u06cc\u0644 \u06a9\u0627\u0645\u0648\u06ba \u067e\u0631 \u0645\u0634\u062a\u0645\u0644 \u06c1\u06d2: <code>ProfileLoadFailure<\/code>, <code>ProfileUpdateFailure<\/code>.<\/p>\n<h4 id=\"heading-the-bloc-class\">\u0628\u0644\u0627\u06a9 \u06a9\u0644\u0627\u0633<\/h4>\n<pre><code class=\"language-dart\">\/\/ profile_bloc.dart\nclass ProfileBloc extends Bloc<profileevent profilestate=\"\"> {\n  final ProfileRepository _repository;\n\n  ProfileBloc({required ProfileRepository repository})\n      : _repository = repository,\n        super(ProfileInitial()) {\n    on<profileloadrequested>(_onProfileLoadRequested);\n    on<profileusernameupdated>(_onProfileUsernameUpdated);\n  }\n\n  Future<void> _onProfileLoadRequested(\n    ProfileLoadRequested event,\n    Emitter<profilestate> emit,\n  ) async {\n    emit(ProfileLoading());\n\n    final result = await _repository.getProfile(event.userId);\n\n    result.fold(\n      (failure) => emit(ProfileLoadFailure(message: _mapFailure(failure))),\n      (profile) => emit(ProfileLoaded(profile: profile)),\n    );\n  }\n\n  String _mapFailure(AppFailure failure) => switch (failure) {\n    NetworkFailure(:final message) => message,\n    ServerFailure(:final message) => message,\n    NotFoundFailure() => 'Profile not found',\n    UnauthorizedFailure() => 'Please sign in again',\n    _ => 'An unexpected error occurred',\n  };\n}\n<\/profilestate><\/void><\/profileusernameupdated><\/profileloadrequested><\/profileevent><\/code><\/pre>\n<p>\u06c1\u0631 \u0627\u06cc\u0648\u0646\u0679 \u06c1\u06cc\u0646\u0688\u0644\u0631 \u0627\u06cc\u06a9 \u0646\u062c\u06cc \u0637\u0631\u06cc\u0642\u06c1 \u06c1\u06d2: <code>_on<\/code> + \u0627\u06cc\u0648\u0646\u0679 \u06a9\u0644\u0627\u0633 \u06a9\u0627 \u0646\u0627\u0645\u06d4 \u067e\u06cc\u0679\u0631\u0646 \u062a\u0645\u0627\u0645 \u0628\u0644\u0627\u06a9\u0633 \u0645\u06cc\u06ba \u06cc\u06a9\u0633\u0627\u06ba \u06c1\u06d2\u06d4 \u062a\u0645\u0627\u0645 \u06c1\u06cc\u0646\u0688\u0644\u0631\u0632 \u063a\u06cc\u0631 \u0645\u0637\u0627\u0628\u0642\u062a \u067e\u0630\u06cc\u0631 \u0622\u067e\u0631\u06cc\u0634\u0646 \u0633\u06d2 \u067e\u06c1\u0644\u06d2 \u0644\u0648\u0688\u0646\u06af \u06a9\u06cc \u062d\u06cc\u062b\u06cc\u062a \u0627\u0648\u0631 \u0627\u0633 \u06a9\u06d2 \u0628\u0639\u062f \u06a9\u0627\u0645\u06cc\u0627\u0628\u06cc \u06cc\u0627 \u0646\u0627\u06a9\u0627\u0645\u06cc \u06a9\u06cc \u062d\u06cc\u062b\u06cc\u062a \u06a9\u0627 \u0627\u062e\u0631\u0627\u062c \u06a9\u0631\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4 \u06c1\u06cc\u0646\u0688\u0644\u0631 \u0628\u0631\u0627\u06c1 \u0631\u0627\u0633\u062a \u0688\u06cc\u0679\u0627 \u0648\u0627\u067e\u0633 \u0646\u06c1\u06cc\u06ba \u06a9\u0631\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4 \u062a\u0645\u0627\u0645 \u0645\u0648\u0627\u0635\u0644\u062a \u062e\u0627\u0631\u062c \u06c1\u0648\u0646\u06d2 \u0648\u0627\u0644\u06cc \u0631\u06cc\u0627\u0633\u062a\u0648\u06ba \u06a9\u06d2 \u0630\u0631\u06cc\u0639\u06d2 \u06c1\u0648\u062a\u06cc \u06c1\u06d2\u06d4<\/p>\n<h4 id=\"heading-widget-integration\">\u0648\u06cc\u062c\u06cc\u0679 \u0627\u0646\u0636\u0645\u0627\u0645<\/h4>\n<pre><code class=\"language-dart\">class ProfileScreen extends StatelessWidget {\n  const ProfileScreen({super.key, required this.userId});\n  final String userId;\n\n  @override\n  Widget build(BuildContext context) {\n    return BlocProvider(\n      create: (context) => ProfileBloc(\n        repository: context.read<profilerepository>(),\n      )..add(ProfileLoadRequested(userId: userId)),\n      child: BlocConsumer<profilebloc profilestate=\"\">(\n        listener: (context, state) {\n          if (state is ProfileLoadFailure) {\n            ScaffoldMessenger.of(context).showSnackBar(\n              SnackBar(content: Text(state.message)),\n            );\n          }\n        },\n        builder: (context, state) => switch (state) {\n          ProfileInitial() => const SizedBox.shrink(),\n          ProfileLoading() => const Center(child: CircularProgressIndicator()),\n          ProfileLoaded(:final profile) => ProfileContent(profile: profile),\n          ProfileLoadFailure(:final message) => ProfileErrorView(message: message),\n        },\n      ),\n    );\n  }\n}\n<\/profilebloc><\/profilerepository><\/code><\/pre>\n<p><code>BlocConsumer<\/code>    \u0633\u0646\u0646\u06d2 \u0648\u0627\u0644\u0648\u06ba (\u0633\u0627\u0626\u06cc\u0688 \u0627\u06cc\u0641\u06cc\u06a9\u0679\u0633) \u0627\u0648\u0631 \u0628\u0644\u0688\u0631\u0632 (UI) \u06a9\u0648 \u06cc\u06a9\u062c\u0627 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4 \u0645\u06c1\u0631\u0628\u0646\u062f \u062d\u0627\u0644\u062a \u0645\u06cc\u06ba \u0633\u0648\u0626\u0686 \u0627\u06cc\u06a9\u0633\u067e\u0631\u06cc\u0634\u0646\u0632 \u0645\u06a9\u0645\u0644 \u06c1\u06cc\u06ba\u06d4 \u0645\u0631\u062a\u0628 \u06a9\u0631\u0646\u06d2 \u0648\u0627\u0644\u0627 \u06c1\u0631 \u0631\u06cc\u0627\u0633\u062a \u06a9\u0648 \u0627\u06cc\u06a9 \u0645\u062a\u0639\u0644\u0642\u06c1 UI \u0631\u06a9\u06be\u0646\u06d2 \u067e\u0631 \u0645\u062c\u0628\u0648\u0631 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<h4 id=\"heading-prohibited-patterns\">\u062d\u0631\u0627\u0645 \u067e\u06cc\u0679\u0631\u0646<\/h4>\n<p>\u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u0646\u06c1 \u06a9\u0631\u06cc\u06ba <code>setState<\/code> \u0627\u0646 \u062a\u0645\u0627\u0645 \u0648\u06cc\u062c\u0679\u0633 \u067e\u0631 \u062c\u0646 \u06a9\u06d2 \u067e\u0627\u0633 \u0648\u06c1 \u0628\u0644\u0627\u06a9 \u06c1\u06d2\u06d4 \u0641\u0648\u0646 \u0645\u062a \u06a9\u0631\u0648 <code>context.read<somebloc>().add(event)<\/somebloc><\/code> \u0627\u0646\u062f\u0631 \u0633\u06d2 <code>initState<\/code> \u0627\u062f\u0627\u06a9\u0627\u0631\u06cc \u06a9\u06d2 \u0628\u063a\u06cc\u0631 <code>addPostFrameCallback<\/code>. \u0642\u0631\u06cc\u0628 \u0646\u06c1 \u062c\u0627\u0624 <code>BuildContext<\/code> \u062c\u0628 \u0633\u06d2 <code>await<\/code> \u0686\u06cc\u06a9 \u06a9\u06cc\u06d2 \u0628\u063a\u06cc\u0631 <code>mounted<\/code>. \u0627\u0646\u062f\u0631 \u0628\u0644\u0627\u06a9\u0633 \u0646\u06c1 \u0628\u0646\u0627\u0626\u06cc\u06ba\u06d4 <code>StatelessWidget.build<\/code> \u0637\u0631\u06cc\u0642\u06c1 (\u06c1\u0631 \u062a\u0639\u0645\u06cc\u0631 \u0646\u0648 \u067e\u0631 \u062f\u0648\u0628\u0627\u0631\u06c1 \u0628\u0646\u0627\u06cc\u0627 \u06af\u06cc\u0627)<\/p>\n<h3 id=\"heading-the-feature-architecture-skill\">\u0641\u0646\u06a9\u0634\u0646\u0644 \u0622\u0631\u06a9\u06cc\u0679\u06cc\u06a9\u0686\u0631 \u0679\u06cc\u06a9\u0646\u0627\u0644\u0648\u062c\u06cc<\/h3>\n<pre><code class=\"language-plaintext\">---\nname: flutter-feature-architecture\ndescription: Structure Flutter features using clean architecture with repository, service,\nand presentation layers. Use when creating new features, adding screens, implementing\ndata fetching, organizing existing code, deciding where a new file belongs, or any task\nthat involves folder structure, layer boundaries, or the project's directory organization.\n---\n\n# Flutter Feature Architecture\n\nThis project uses feature-first folder structure with clean architecture layers.\n<\/code><\/pre>\n<h4 id=\"heading-top-level-structure\">\u0627\u0639\u0644\u06cc \u0633\u0637\u062d \u06a9\u06cc \u0633\u0627\u062e\u062a<\/h4>\n<pre><code class=\"language-plaintext\">lib\/\n  core\/\n    constants\/     <- app-wide constants, not feature-specific\n    errors\/         <- AppFailure sealed class hierarchy\n    extensions\/     <- Dart extension methods\n    theme\/          <- theme extensions, color tokens, typography\n    utils\/          <- pure utility functions\n  features\/\n    auth\/\n    profile\/\n    home\/\n    settings\/\n  shared\/\n    widgets\/        <- widgets used in 3+ features\n    models\/         <- models shared between features\n    services\/       <- services used by multiple features\n  app.dart          <- MaterialApp setup\n  main.dart         <- entry point\n<\/code><\/pre>\n<h4 id=\"heading-feature-folder-structure\">\u0641\u0646\u06a9\u0634\u0646 \u0641\u0648\u0644\u0688\u0631 \u06a9\u0627 \u0688\u06be\u0627\u0646\u0686\u06c1<\/h4>\n<p>\u062a\u0645\u0627\u0645 \u0627\u0641\u0639\u0627\u0644 \u062f\u0631\u062c \u0630\u06cc\u0644 \u0627\u0646\u062f\u0631\u0648\u0646\u06cc \u0633\u0627\u062e\u062a \u06a9\u06cc \u067e\u06cc\u0631\u0648\u06cc \u06a9\u0631\u062a\u06d2 \u06c1\u06cc\u06ba:<\/p>\n<pre><code class=\"language-plaintext\">features\/\n  profile\/\n    bloc\/\n      profile_bloc.dart\n      profile_event.dart\n      profile_state.dart\n    data\/\n      profile_repository.dart          <- interface\n      profile_repository_impl.dart     <- implementation\n      profile_remote_data_source.dart\n      profile_local_data_source.dart\n    domain\/\n      profile_model.dart                <- freezed domain model\n    screens\/\n      profile_screen.dart\n      edit_profile_screen.dart\n    widgets\/\n      profile_card.dart\n      profile_header.dart\n      profile_stats_row.dart\n    profile.dart                         <- barrel export\n<\/code><\/pre>\n<h4 id=\"heading-layer-dependency-rules\">\u067e\u0631\u062a \u067e\u0631 \u0627\u0646\u062d\u0635\u0627\u0631 \u06a9\u06d2 \u0627\u0635\u0648\u0644<\/h4>\n<p>\u067e\u0631\u06cc\u0632\u0646\u0679\u06cc\u0634\u0646 \u067e\u0631\u062a (\u0627\u0633\u06a9\u0631\u06cc\u0646 \u0627\u0648\u0631 \u0648\u06cc\u062c\u0679) \u0635\u0631\u0641 \u0628\u0644\u0627\u06a9 \u0627\u0648\u0631 \u0688\u0648\u0645\u06cc\u0646 \u0645\u0627\u0688\u0644\u0632 \u067e\u0631 \u0627\u0646\u062d\u0635\u0627\u0631 \u06a9\u0631\u062a\u06cc \u06c1\u06d2\u06d4 \u0628\u0644\u0627\u06a9 \u0635\u0631\u0641 \u0627\u0633\u0679\u0648\u0631\u06cc\u062c \u0627\u0646\u0679\u0631\u0641\u06cc\u0633 \u067e\u0631 \u0627\u0646\u062d\u0635\u0627\u0631 \u06a9\u0631\u062a\u0627 \u06c1\u06d2 (\u0639\u0645\u0644 \u062f\u0631\u0622\u0645\u062f \u0646\u06c1\u06cc\u06ba)\u06d4 \u0688\u06cc\u0679\u0627 \u0645\u0627\u062e\u0630 \u06a9\u06d2 \u0644\u062d\u0627\u0638 \u0633\u06d2 \u0627\u0633\u0679\u0648\u0631\u06cc\u062c \u06a9\u0627 \u0646\u0641\u0627\u0630 \u0645\u062e\u062a\u0644\u0641 \u06c1\u0648\u062a\u0627 \u06c1\u06d2\u06d4 \u0688\u06cc\u0679\u0627 \u06a9\u06d2 \u0630\u0631\u0627\u0626\u0639 \u06a9\u0627 \u0627\u0646\u062d\u0635\u0627\u0631 \u0628\u06cc\u0631\u0648\u0646\u06cc \u067e\u06cc\u06a9\u062c\u0632 (Firebase\u060c HTTP\u060c SharedPreferences) \u067e\u0631 \u06c1\u0648\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<p>\u063a\u0644\u0637 \u0633\u0645\u062a \u0645\u06cc\u06ba \u062a\u06c1\u0648\u06ba \u06a9\u0648 \u062f\u0631\u0622\u0645\u062f \u06a9\u0631\u0646\u06d2 \u0633\u06d2 \u06af\u0631\u06cc\u0632 \u06a9\u0631\u06cc\u06ba\u06d4 \u0688\u06cc\u0679\u0627 \u067e\u0631\u062a \u067e\u0631\u06cc\u0632\u0646\u0679\u06cc\u0634\u0646 \u067e\u0631\u062a \u0633\u06d2 \u0646\u06c1\u06cc\u06ba \u0622\u062a\u06cc \u06c1\u06d2\u06d4 \u0688\u0648\u0645\u06cc\u0646 \u067e\u0631\u062a \u0622\u067e \u06a9\u06d2 \u067e\u0631\u0648\u062c\u06cc\u06a9\u0679 \u0633\u06d2 \u06a9\u0686\u06be \u0628\u06be\u06cc \u062f\u0631\u0622\u0645\u062f \u0646\u06c1\u06cc\u06ba \u06a9\u0631\u062a\u06cc \u06c1\u06d2\u06d4<\/p>\n<h4 id=\"heading-the-barrel-export-file\">\u0628\u06cc\u0631\u0644 \u0628\u0631\u0622\u0645\u062f \u0641\u0627\u0626\u0644<\/h4>\n<p>\u06c1\u0631 \u0641\u0646\u06a9\u0634\u0646 \u0645\u06cc\u06ba \u0627\u06cc\u06a9 \u0628\u06cc\u0631\u0644 \u0641\u0627\u0626\u0644 \u06c1\u0648\u062a\u06cc \u06c1\u06d2 \u062c\u0648 \u0635\u0631\u0641 \u0627\u0633 \u0641\u0646\u06a9\u0634\u0646 \u06a9\u06d2 \u067e\u0628\u0644\u06a9 API \u06a9\u0648 \u0627\u06cc\u06a9\u0633\u067e\u0648\u0631\u0679 \u06a9\u0631\u062a\u06cc \u06c1\u06d2\u06d4<\/p>\n<pre><code class=\"language-dart\">\/\/ features\/profile\/profile.dart\nexport 'domain\/profile_model.dart';\nexport 'screens\/profile_screen.dart';\nexport 'screens\/edit_profile_screen.dart';\nexport 'bloc\/profile_bloc.dart';\nexport 'bloc\/profile_event.dart';\nexport 'bloc\/profile_state.dart';\n<\/code><\/pre>\n<p>\u0627\u0646\u062f\u0631\u0648\u0646\u06cc \u0646\u0641\u0627\u0630 \u06a9\u06cc \u0641\u0627\u0626\u0644\u06cc\u06ba (\u0688\u06cc\u0679\u0627 \u0633\u0648\u0631\u0633\u060c \u0631\u06cc\u067e\u0648\u0632\u0679\u0631\u06cc \u06a9\u0627 \u0646\u0641\u0627\u0630) \u0628\u0631\u0622\u0645\u062f \u0646\u06c1\u06cc\u06ba \u06a9\u06cc \u062c\u0627\u062a\u06cc \u06c1\u06cc\u06ba\u06d4 \u06a9\u0648\u0688 \u062f\u0631\u0622\u0645\u062f \u06a9\u0627 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u06cc\u06ba\u06d4 <code>package:myapp\/features\/profile\/profile.dart<\/code>\u06cc\u06c1 \u06a9\u0633\u06cc \u0628\u06be\u06cc \u0637\u0631\u062d \u0633\u06d2 \u06af\u06c1\u0631\u0627 \u0631\u0627\u0633\u062a\u06c1 \u0646\u06c1\u06cc\u06ba \u06c1\u06d2\u06d4<\/p>\n<h4 id=\"heading-the-core-folder-rule\">\u0628\u0646\u06cc\u0627\u062f\u06cc \u0641\u0648\u0644\u0688\u0631 \u06a9\u06d2 \u0642\u0648\u0627\u0639\u062f<\/h4>\n<p>\u0627\u06cc\u06a9 \u0641\u0627\u0626\u0644 \u06a9\u0627 \u062a\u0639\u0644\u0642 \u0628\u0646\u06cc\u0627\u062f\u06cc\/ \u0635\u0631\u0641 \u0627\u0633 \u0635\u0648\u0631\u062a \u0645\u06cc\u06ba \u06c1\u06d2 \u062c\u0628 \u0627\u0633\u06d2 \u062a\u06cc\u0646 \u06cc\u0627 \u0632\u06cc\u0627\u062f\u06c1 \u0641\u0646\u06a9\u0634\u0646\u0632 \u06a9\u06d2 \u0630\u0631\u06cc\u0639\u06d2 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u06cc\u0627 \u06af\u06cc\u0627 \u06c1\u0648\u06d4 \u0627\u06af\u0631 \u06cc\u06c1 \u0635\u0631\u0641 \u0627\u06cc\u06a9 \u06cc\u0627 \u062f\u0648 \u062e\u0635\u0648\u0635\u06cc\u0627\u062a \u0645\u06cc\u06ba \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06c1\u0648\u062a\u0627 \u06c1\u06d2\u060c \u062a\u0648 \u0627\u0633 \u06a9\u0627 \u062a\u0639\u0644\u0642 \u0627\u0633 \u0641\u06cc\u0686\u0631 \u06a9\u06d2 \u0641\u0648\u0644\u0688\u0631 \u0645\u06cc\u06ba \u06c1\u0648\u062a\u0627 \u06c1\u06d2\u06d4 \u0622\u0626\u0679\u0645\u0632 \u06a9\u0648 \u0645\u0633\u062a\u0642\u0628\u0644 \u0645\u06cc\u06ba \u06a9\u06c1\u0627\u06ba \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u06cc\u0627 \u062c\u0627\u0626\u06d2 \u06af\u0627 \u0627\u0633 \u06a9\u06cc \u0628\u0646\u06cc\u0627\u062f \u067e\u0631 \u0627\u0646 \u06a9\u0648 \u0628\u0646\u06cc\u0627\u062f\u06cc \u0637\u0648\u0631 \u067e\u0631 \u0645\u0646\u062a\u0642\u0644 \u0646\u06c1 \u06a9\u0631\u06cc\u06ba\u06d4<\/p>\n<h3 id=\"heading-the-error-handling-skill\">\u063a\u0644\u0637\u06cc \u0633\u06d2 \u0646\u0645\u0679\u0646\u06d2 \u06a9\u06cc \u062a\u06a9\u0646\u06cc\u06a9<\/h3>\n<pre><code class=\"language-markdown\">---\nname: flutter-error-handling\ndescription: Implement error handling using typed AppFailure classes and Either return types.\nUse when handling errors from API calls, repository methods, Bloc error states, catching\nexceptions in data sources, showing error UI, implementing try-catch, or any task that\ninvolves failure, exception, error state, or error message handling.\n---\n\n# Flutter Error Handling\n\nThis project uses a typed failure system. Raw exceptions do not cross layer boundaries.\n<\/code><\/pre>\n<h4 id=\"heading-the-appfailure-hierarchy\">\u0627\u06cc\u067e \u06a9\u06cc \u0646\u0627\u06a9\u0627\u0645\u06cc \u06a9\u0627 \u062f\u0631\u062c\u06c1 \u0628\u0646\u062f\u06cc<\/h4>\n<pre><code class=\"language-dart\">\/\/ core\/errors\/app_failure.dart\nsealed class AppFailure {\n  const AppFailure();\n}\n\nfinal class NetworkFailure extends AppFailure {\n  const NetworkFailure({required this.message});\n  final String message;\n}\n\nfinal class ServerFailure extends AppFailure {\n  const ServerFailure({required this.statusCode, required this.message});\n  final int statusCode;\n  final String message;\n}\n\nfinal class CacheFailure extends AppFailure {\n  const CacheFailure({required this.message});\n  final String message;\n}\n\nfinal class NotFoundFailure extends AppFailure {\n  const NotFoundFailure();\n}\n\nfinal class UnauthorizedFailure extends AppFailure {\n  const UnauthorizedFailure();\n}\n\nfinal class ValidationFailure extends AppFailure {\n  const ValidationFailure({required this.field, required this.message});\n  final String field;\n  final String message;\n}\n<\/code><\/pre>\n<p><code>sealed class AppFailure<\/code>    \u0627\u06cc\u06a9 \u0645\u06a9\u0645\u0644 \u062f\u0631\u062c\u06c1 \u0628\u0646\u062f\u06cc \u0628\u0646\u0627\u0626\u06cc\u06ba\u06d4 \u0646\u0626\u06cc \u0646\u0627\u06a9\u0627\u0645\u06cc \u06a9\u06cc \u0627\u0642\u0633\u0627\u0645 \u0634\u0627\u0645\u0644 \u06a9\u06cc \u06af\u0626\u06cc \u06c1\u06cc\u06ba: <code>final class<\/code> \u0630\u06cc\u0644\u06cc \u06a9\u0644\u0627\u0633 \u0645\u0631\u062a\u0628 \u06a9\u0631\u0646\u06d2 \u0648\u0627\u0644\u0627 \u0628\u06cc\u0627\u0646\u0627\u062a \u06a9\u0648 \u0644\u0627\u06af\u0648 \u06a9\u0631\u0646\u06d2 \u067e\u0631 \u0645\u062c\u0628\u0648\u0631 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4 <code>AppFailure<\/code> \u062a\u0645\u0627\u0645 \u0645\u0645\u06a9\u0646\u06c1 \u0630\u06cc\u0644\u06cc \u0642\u0633\u0645\u0648\u06ba \u06a9\u0648 \u06c1\u06cc\u0646\u0688\u0644 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<h4 id=\"heading-repository-return-types\">\u0630\u062e\u06cc\u0631\u06c1 \u06a9\u06cc \u0648\u0627\u067e\u0633\u06cc \u06a9\u06cc \u0642\u0633\u0645<\/h4>\n<p>\u0630\u062e\u06cc\u0631\u06c1 \u06a9\u0631\u0646\u06d2 \u06a9\u0627 \u0637\u0631\u06cc\u0642\u06c1 \u0648\u0627\u067e\u0633\u06cc <code>Either<appfailure t=\"\"\/><\/code> \u067e\u0631 <code>fpdart<\/code> \u067e\u06cc\u06a9\u06cc\u062c:<\/p>\n<pre><code class=\"language-dart\">abstract class ProfileRepository {\n  Future<either userprofile=\"\">> getProfile(String userId);\n  Future<either unit=\"\">> updateUsername(String userId, String username);\n}\n<\/either><\/either><\/code><\/pre>\n<p>\u0648\u0627\u067e\u0633\u06cc \u06a9\u06d2 \u0631\u0627\u0633\u062a\u06d2 \u0645\u06cc\u06ba <code>Either<\/code> \u0646\u0627\u06a9\u0627\u0645\u06cc \u06a9\u0648 \u0642\u0627\u0628\u0644 \u0628\u0646\u0627\u062a\u0627 \u06c1\u06d2\u060c \u0644\u06cc\u06a9\u0646 \u0627\u0633\u06d2 \u0642\u0633\u0645 \u06a9\u06cc \u0633\u0637\u062d \u067e\u0631 \u0648\u0627\u0636\u062d \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4 \u0630\u062e\u06cc\u0631\u06c1 \u06a9\u0631\u0646\u06d2 \u0648\u0627\u0644\u06d2 \u0635\u0627\u0631\u0641 \u06a9\u0648 \u0648\u0627\u067e\u0633\u06cc \u06a9\u06cc \u0642\u0633\u0645 \u06a9\u06cc \u0648\u062c\u06c1 \u0633\u06d2 \u062f\u0648\u0646\u0648\u06ba \u0634\u0627\u062e\u0648\u06ba \u06a9\u0648 \u06c1\u06cc\u0646\u0688\u0644 \u06a9\u0631\u0646\u0627 \u0686\u0627\u06c1\u06cc\u06d2\u060c \u0627\u0633 \u0644\u06cc\u06d2 \u0648\u06c1 \u0646\u0627\u062f\u0627\u0646\u0633\u062a\u06c1 \u0637\u0648\u0631 \u067e\u0631 \u0646\u0627\u06a9\u0627\u0645\u06cc \u06a9\u06d2 \u0627\u0645\u06a9\u0627\u0646 \u06a9\u0648 \u0646\u0638\u0631 \u0627\u0646\u062f\u0627\u0632 \u0646\u06c1\u06cc\u06ba \u06a9\u0631 \u0633\u06a9\u062a\u0627\u06d4<\/p>\n<h4 id=\"heading-data-source-exception-handling\">\u0688\u06cc\u0679\u0627 \u0645\u0627\u062e\u0630 \u0627\u0633\u062a\u062b\u0646\u06cc\u0670 \u06c1\u06cc\u0646\u0688\u0644\u0646\u06af<\/h4>\n<p>\u0688\u06cc\u0679\u0627 \u0633\u0648\u0631\u0633 \u0648\u0627\u062d\u062f \u067e\u0631\u062a \u06c1\u06d2 \u062c\u0648 \u0679\u0631\u0627\u0626\u06cc \u06a9\u06cc\u0686 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u062a\u06cc \u06c1\u06d2\u06d4 \u062e\u0627\u0645 \u0627\u0633\u062a\u062b\u0646\u0627\u0621 \u06a9\u0648 \u067e\u06a9\u0691\u06cc\u06ba \u200b\u200b\u0627\u0648\u0631 \u0627\u0633\u06d2 AppFailure \u0622\u0628\u062c\u06cc\u06a9\u0679 \u0645\u06cc\u06ba \u062a\u0628\u062f\u06cc\u0644 \u06a9\u0631\u06cc\u06ba\u06d4<\/p>\n<pre><code class=\"language-dart\">class ProfileRemoteDataSource {\n  Future<either userprofiledto=\"\">> getProfile(String userId) async {\n    try {\n      final doc = await _firestore.collection('users').doc(userId).get();\n\n      if (!doc.exists) return left(const NotFoundFailure());\n\n      return right(UserProfileDto.fromJson(doc.data()!));\n    } on FirebaseException catch (e) {\n      return switch (e.code) {\n        'permission-denied' => left(const UnauthorizedFailure()),\n        'unavailable' => left(NetworkFailure(message: e.message ?? 'Network error')),\n        _ => left(ServerFailure(statusCode: 0, message: e.message ?? 'Server error')),\n      };\n    } catch (e) {\n      return left(NetworkFailure(message: e.toString()));\n    }\n  }\n}\n<\/either><\/code><\/pre>\n<h4 id=\"heading-prohibited-patterns\">\u062d\u0631\u0627\u0645 \u067e\u06cc\u0679\u0631\u0646<\/h4>\n<p>\u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u0646\u06c1 \u06a9\u0631\u06cc\u06ba <code>try-catch<\/code> \u0628\u0644\u0627\u06a9\u060c \u0627\u0633\u0679\u0648\u0631\u06cc\u062c \u06cc\u0627 \u067e\u0631\u06cc\u0632\u0646\u0679\u06cc\u0634\u0646 \u0644\u06cc\u0626\u0631 \u06a9\u0648\u0688 \u0645\u06cc\u06ba\u06d4 \u0633\u0679\u0648\u0631\u06cc\u062c \u06a9\u06d2 \u0637\u0631\u06cc\u0642\u0648\u06ba \u0645\u06cc\u06ba \u0645\u0633\u062a\u062b\u0646\u06cc\u0627\u062a \u0646\u06c1 \u067e\u06be\u06cc\u0646\u06a9\u06cc\u06ba\u06d4 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u0646\u06c1 \u06a9\u0631\u06cc\u06ba <code>String<\/code> \u0627\u0633\u0679\u06cc\u0679\u0633 \u06a9\u0644\u0627\u0633 \u06a9\u06d2 \u0644\u06cc\u06d2 \u063a\u0644\u0637\u06cc \u06a9\u06d2 \u067e\u06cc\u063a\u0627\u0645 \u06a9\u06cc \u0642\u0633\u0645 \u06a9\u06d2 \u0637\u0648\u0631 \u067e\u0631 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u06cc\u0627 \u062c\u0627\u062a\u0627 \u06c1\u06d2\u06d4 \u0627\u0646 \u067e\u0679 \u06a9\u06cc \u0646\u0627\u06a9\u0627\u0645\u06cc \u06a9\u0627 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u06cc\u06ba\u06d4 UI \u06a9\u0648 \u062e\u0627\u0645 \u0627\u0633\u062a\u062b\u0646\u0627\u0626\u06cc \u067e\u06cc\u063a\u0627\u0645\u0627\u062a \u0646\u06c1 \u0628\u06be\u06cc\u062c\u06cc\u06ba\u06d4 \u0628\u0644\u0627\u06a9 \u0645\u06cc\u06ba \u0635\u0627\u0631\u0641 \u062f\u0648\u0633\u062a \u067e\u06cc\u063a\u0627\u0645\u0627\u062a \u0645\u06cc\u06ba \u0646\u0642\u0634\u06c1 \u06a9\u06cc \u0646\u0627\u06a9\u0627\u0645\u06cc\u06d4<\/p>\n<h3 id=\"heading-the-theming-skill\">\u062a\u06be\u06cc\u0645 \u06a9\u06cc \u0645\u06c1\u0627\u0631\u062a<\/h3>\n<pre><code class=\"language-markdown\">---\nname: flutter-theming\ndescription: Apply colors, typography, spacing, and visual styling using the project's\ntheme extension system. Use whenever writing code that involves colors, text styles,\npadding, margin, border radius, shadows, or any visual appearance of UI components.\nApply when you see requests involving styling, colors, fonts, spacing, or visual design.\n---\n\n# Flutter Theming\n\nThis project uses theme extensions for all visual styling. Hardcoded visual values are not permitted anywhere in the codebase.\n<\/code><\/pre>\n<h4 id=\"heading-color-access\">\u0631\u0646\u06af \u062a\u06a9 \u0631\u0633\u0627\u0626\u06cc<\/h4>\n<pre><code class=\"language-dart\">\/\/ Do not do this\ncolor: const Color(0xFF6750A4)\ncolor: Colors.deepPurple\nbackgroundColor: Theme.of(context).colorScheme.primary\n\n\/\/ Do this\ncolor: context.appColors.primary\nbackgroundColor: context.appColors.surface\n<\/code><\/pre>\n<p><code>context.appColors<\/code>    \u06a9\u06cc \u062a\u0648\u0633\u06cc\u0639 \u06c1\u06d2 <code>BuildContext<\/code> \u0645\u06cc\u06ba \u0628\u06cc\u0627\u0646 \u06a9\u06cc\u0627 \u06af\u06cc\u0627 \u06c1\u06d2\u06d4 <code>core\/theme\/app_colors_extension.dart<\/code>. \u0627\u06cc\u06a9 \u0646\u0627\u0645 \u06a9\u0627 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u062a\u06d2 \u06c1\u0648\u0626\u06d2 \u0645\u06a9\u0645\u0644 \u0631\u0646\u06af \u067e\u06cc\u0644\u06cc\u0679 \u062a\u06a9 \u0679\u0627\u0626\u067e \u0634\u062f\u06c1 \u0631\u0633\u0627\u0626\u06cc \u0641\u0631\u0627\u06c1\u0645 \u06a9\u0631\u062a\u0627 \u06c1\u06d2 \u062c\u0648 \u0627\u0631\u0627\u062f\u06d2 \u06a9\u0648 \u0638\u0627\u06c1\u0631 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<p>\u062f\u0633\u062a\u06cc\u0627\u0628 \u0631\u0646\u06af: \u06a9\u06d2 \u0630\u0631\u06cc\u0639\u06d2 \u0641\u0631\u0627\u06c1\u0645 \u06a9\u0631\u062f\u06c1 \u0633\u06cc\u0645\u0646\u0679\u06a9 \u0631\u0646\u06af \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u06cc\u06ba\u06d4 <code>context.appColors<\/code>.<\/p>\n<p>\u06a9\u06d2 \u0644\u06cc\u06d2 <strong>\u0628\u0631\u0627\u0646\u0688\u0646\u06af \u0627\u0648\u0631 \u0633\u0637\u062d\u06cc\u06ba\u06d4<\/strong>\u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u06cc\u06ba <code>context.appColors.primary<\/code> \u0628\u0631\u0627\u0646\u0688 \u06a9\u06d2 \u0627\u06c1\u0645 \u0631\u0646\u06af \u06a9\u06d2 \u0637\u0648\u0631 \u067e\u0631\u060c <code>context.appColors.secondary<\/code> \u062b\u0627\u0646\u0648\u06cc \u0644\u06c1\u062c\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 <code>context.appColors.surface<\/code> \u06a9\u0627\u0631\u0688 \u0627\u0648\u0631 \u06a9\u0646\u0679\u06cc\u0646\u0631 \u06a9\u06d2 \u067e\u0633 \u0645\u0646\u0638\u0631 \u06a9\u06d2 \u0644\u06cc\u06d2 <code>context.appColors.background<\/code> \u0627\u0633\u06a9\u0631\u06cc\u0646 \u06a9\u06d2 \u067e\u0633 \u0645\u0646\u0638\u0631 \u06a9\u06d2 \u0644\u06cc\u06d2\u06d4<\/p>\n<p>\u06a9\u06d2 \u0644\u06cc\u06d2 <strong>\u0627\u06c1\u0645<\/strong>\u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u06cc\u06ba <code>context.appColors.error<\/code> \u063a\u0644\u0637\u06cc \u06a9\u06cc \u062d\u06cc\u062b\u06cc\u062a \u0627\u0648\u0631 <code>context.appColors.success<\/code> \u06a9\u0627\u0645\u06cc\u0627\u0628\u06cc \u06a9\u06cc \u062d\u06cc\u062b\u06cc\u062a \u06a9\u06d2 \u0644\u06cc\u06d2\u06d4<\/p>\n<p>\u06a9\u06d2 \u0644\u06cc\u06d2 <strong>\u0645\u062a\u0646<\/strong>\u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u06cc\u06ba <code>context.appColors.textPrimary<\/code> \u0645\u0642\u0627\u0645\u06cc \u0637\u0648\u0631 \u067e\u0631 \u067e\u0691\u06be\u0646\u06d2 \u06a9\u06d2 \u0642\u0627\u0628\u0644 \u0645\u062a\u0646 \u06a9\u06d2 \u0644\u06cc\u06d2 <code>context.appColors.textSecondary<\/code> \u06a9\u06cc\u067e\u0634\u0646\u0632\u060c \u0644\u06cc\u0628\u0644\u0632 \u0627\u0648\u0631 \u0645\u0639\u0627\u0648\u0646 \u0645\u0639\u0644\u0648\u0645\u0627\u062a \u06a9\u06d2 \u0644\u06cc\u06d2 <code>context.appColors.textDisabled<\/code> \u063a\u06cc\u0631 \u0641\u0639\u0627\u0644 \u06a9\u0646\u0679\u0631\u0648\u0644\u0632 \u0627\u0648\u0631 \u0645\u062a\u0646 \u06a9\u06d2 \u0644\u06cc\u06d2\u06d4<\/p>\n<h4 id=\"heading-spacing\">\u0648\u0642\u0641\u06c1<\/h4>\n<pre><code class=\"language-dart\">\/\/ Do not do this\npadding: const EdgeInsets.all(16)\nmargin: const EdgeInsets.symmetric(horizontal: 24, vertical: 8)\n\n\/\/ Do this\npadding: const EdgeInsets.all(AppSpacing.md)\nmargin: const EdgeInsets.symmetric(\n  horizontal: AppSpacing.lg,\n  vertical: AppSpacing.sm,\n)\n<\/code><\/pre>\n<p><code>AppSpacing<\/code>    \u0645\u06cc\u06ba \u0628\u06cc\u0627\u0646 \u06a9\u06cc\u0627 \u06af\u06cc\u0627 \u06c1\u06d2\u06d4 <code>core\/constants\/app_spacing.dart<\/code> \u062f\u0631\u062c \u0630\u06cc\u0644 \u0648\u0642\u0641\u06c1 \u06a9\u06cc \u0642\u062f\u0631\u06cc\u06ba \u0641\u0631\u0627\u06c1\u0645 \u06a9\u0631\u06cc\u06ba:<\/p>\n<p><strong>xs:<\/strong> 4 \u00b7 <strong>sm:<\/strong> 8 \u00b7 <strong>\u0627\u06cc\u0645 \u0688\u06cc:<\/strong> 16 \u00b7 <strong>LG:<\/strong> 24 \u00b7 <strong>\u0628\u0691\u0627 \u0633\u0627\u0626\u0632:<\/strong> 32 \u00b7 <strong>xxl:<\/strong> 48<\/p>\n<h4 id=\"heading-typography\">\u0646\u0648\u0639 \u0679\u0627\u0626\u067e<\/h4>\n<pre><code class=\"language-dart\">\/\/ Do not do this\nstyle: const TextStyle(fontSize: 16, fontWeight: FontWeight.w600)\n\n\/\/ Do this\nstyle: context.appTypography.bodyMedium\nstyle: context.appTypography.headlineLarge.copyWith(\n  color: context.appColors.textPrimary,\n)\n<\/code><\/pre>\n<p><code>context.appTypography<\/code>    \u06a9\u06cc \u062a\u0648\u0633\u06cc\u0639 \u06c1\u06d2 <code>BuildContext<\/code> \u0645\u06a9\u0645\u0644 \u0642\u0633\u0645 \u06a9\u0627 \u067e\u06cc\u0645\u0627\u0646\u06c1 \u0641\u0631\u0627\u06c1\u0645 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<h4 id=\"heading-border-radius\">\u0633\u0631\u062d\u062f\u06cc \u0631\u062f\u0627\u0633<\/h4>\n<pre><code class=\"language-dart\">\/\/ Do not do this\nborderRadius: BorderRadius.circular(8)\n\n\/\/ Do this\nborderRadius: BorderRadius.circular(AppRadius.sm)\n<\/code><\/pre>\n<p><code>AppRadius<\/code>    \u0645\u0633\u062a\u0642\u0644: <code>xs<\/code> (4)\u060c <code>sm<\/code> (8) <code>md<\/code> (12) <code>lg<\/code> (16) <code>xl<\/code> (24) <code>round<\/code> (999)<\/p>\n<h3 id=\"heading-the-navigation-skill\">\u0646\u06cc\u0648\u06cc\u06af\u06cc\u0634\u0646 \u06a9\u06cc \u0645\u06c1\u0627\u0631\u062a<\/h3>\n<pre><code class=\"language-markdown\">---\nname: flutter-navigation\ndescription: Implement navigation using GoRouter. Use when adding routes, navigating\nbetween screens, implementing deep links, setting up route guards or redirects,\nhandling authentication-gated routes, working with nested navigation or shell routes,\nor any task involving navigation, routing, back button, browser URL, or deep link.\n---\n\n# Flutter Navigation\n\nThis project uses GoRouter for all navigation. Do not use Navigator.push, Navigator.pushNamed, Navigator.pop (only via GoRouter), or any Navigator API that bypasses GoRouter.\n<\/code><\/pre>\n<h4 id=\"heading-route-constants\">\u0631\u0627\u0633\u062a\u06c1 \u0645\u0633\u0644\u0633\u0644<\/h4>\n<p>\u062a\u0645\u0627\u0645 \u0631\u0627\u0633\u062a\u06d2 \u06a9\u06d2 \u0631\u0627\u0633\u062a\u06d2 \u0645\u0633\u062a\u0642\u0644 \u06c1\u06cc\u06ba\u06d4 <code>core\/router\/routes.dart<\/code>:<\/p>\n<pre><code class=\"language-dart\">abstract class Routes {\n  static const splash=\"\/\";\n  static const login = '\/auth\/login';\n  static const register=\"\/auth\/register\";\n  static const home=\"\/home\";\n  static const profile=\"\/home\/profile\/:userId\";\n  static const editProfile=\"\/home\/profile\/:userId\/edit\";\n  static const settings=\"\/settings\";\n}\n<\/code><\/pre>\n<p>\u0646\u06cc\u0648\u06cc\u06af\u06cc\u0634\u0646 \u0645\u06cc\u06ba \u0633\u0679\u0631\u0646\u06af \u0644\u0679\u0631\u06cc\u0644\u0632 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u0646\u06d2 \u0633\u06d2 \u06af\u0631\u06cc\u0632 \u06a9\u0631\u06cc\u06ba\u06d4 \u06c1\u0645\u06cc\u0634\u06c1 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u06cc\u06ba\u06d4 <code>Routes.home<\/code>\u0646\u06c1\u06cc\u06ba <code>'\/home'<\/code>.<\/p>\n<h4 id=\"heading-navigation-methods\">\u0646\u06cc\u0648\u06cc\u06af\u06cc\u0679 \u06a9\u0631\u0646\u06d2 \u06a9\u0627 \u0637\u0631\u06cc\u0642\u06c1<\/h4>\n<pre><code class=\"language-dart\">\/\/ Replace the current location (no back button to previous)\ncontext.go(Routes.home);\n\n\/\/ Push on top (back button returns to previous location)\ncontext.push(Routes.profile.replaceAll(':userId', userId));\n\n\/\/ Pop (go back)\ncontext.pop();\n\n\/\/ Pop with a result\ncontext.pop(result);\n<\/code><\/pre>\n<p>\u0627\u0633\u06d2 \u06a9\u0628\u06be\u06cc \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u0646\u06c1 \u06a9\u0631\u06cc\u06ba\u06d4 <code>Navigator.of(context).push(...)<\/code>. GoRouter \u06a9\u0648 \u0628\u0627\u0626\u06cc \u067e\u0627\u0633 \u06a9\u0631\u06cc\u06ba \u0627\u0648\u0631 \u0688\u06cc\u067e \u0644\u0646\u06a9\u0646\u06af \u06a9\u0648 \u062a\u0648\u0691 \u062f\u06cc\u06ba\u06d4<\/p>\n<h4 id=\"heading-router-definition\">\u0631\u0648\u0679\u0631 \u06a9\u06cc \u062a\u0639\u0631\u06cc\u0641<\/h4>\n<p>\u062a\u0645\u0627\u0645 \u0631\u0627\u0633\u062a\u06d2 \u0627\u0633 \u0645\u06cc\u06ba \u0628\u06cc\u0627\u0646 \u06a9\u06cc\u06d2 \u06af\u0626\u06d2 \u06c1\u06cc\u06ba: <code>core\/router\/app_router.dart<\/code>:<\/p>\n<pre><code class=\"language-dart\">final router = GoRouter(\n  initialLocation: Routes.splash,\n  redirect: _redirectLogic,\n  routes: [\n    GoRoute(\n      path: Routes.home,\n      pageBuilder: (context, state) => NoTransitionPage(\n        child: const HomeScreen(),\n      ),\n    ),\n    GoRoute(\n      path: Routes.profile,\n      builder: (context, state) {\n        final userId = state.pathParameters['userId']!;\n        return ProfileScreen(userId: userId);\n      },\n    ),\n  ],\n);\n<\/code><\/pre>\n<h4 id=\"heading-typed-parameters\">\u062f\u0631\u062c \u06a9\u0631\u062f\u06c1 \u067e\u06cc\u0631\u0627\u0645\u06cc\u0679\u0631\u0632<\/h4>\n<p>\u0631\u0627\u0633\u062a\u06d2 \u06a9\u06d2 \u067e\u06cc\u0631\u0627\u0645\u06cc\u0679\u0631\u0632 \u06a9\u0648 \u0627\u0633 \u0633\u06d2 \u0646\u06a9\u0627\u0644\u06cc\u06ba: <code>state.pathParameters<\/code>\u0627\u0648\u0631 \u0627\u0633\u062a\u0641\u0633\u0627\u0631 \u06a9\u06d2 \u067e\u06cc\u0631\u0627\u0645\u06cc\u0679\u0631\u0632 <code>state.uri.queryParameters<\/code>. \u0631\u0627\u0633\u062a\u06d2 \u06a9\u06d2 \u062a\u0627\u0631\u0648\u06ba \u06a9\u0648 \u062f\u0633\u062a\u06cc \u0637\u0648\u0631 \u067e\u0631 \u067e\u0627\u0631\u0633 \u0646\u06c1 \u06a9\u0631\u06cc\u06ba\u06d4<\/p>\n<h2 id=\"heading-essential-dart-skills-every-developer-should-write\">\u0636\u0631\u0648\u0631\u06cc \u0688\u0627\u0631\u0679 \u0645\u06c1\u0627\u0631\u062a\u06cc\u06ba \u06c1\u0631 \u0688\u0648\u06cc\u0644\u067e\u0631 \u06a9\u0648 \u0644\u06a9\u06be\u0646\u0627 \u0686\u0627\u06c1\u0626\u06d2\u06d4<\/h2>\n<p>\u0641\u0644\u0679\u0631 \u0645\u062e\u0635\u0648\u0635 \u0645\u06c1\u0627\u0631\u062a\u0648\u06ba \u06a9\u06d2 \u0639\u0644\u0627\u0648\u06c1\u060c \u062e\u0627\u0644\u0635 \u0688\u0627\u0631\u0679 \u06a9\u06cc \u062a\u0631\u0642\u06cc \u0679\u06cc\u0645 \u06a9\u06cc \u0633\u0637\u062d \u06a9\u06cc \u0645\u06c1\u0627\u0631\u062a\u0648\u06ba \u0633\u06d2 \u0628\u06c1\u062a \u0632\u06cc\u0627\u062f\u06c1 \u0641\u0627\u0626\u062f\u06c1 \u0627\u0679\u06be\u0627\u062a\u06cc \u06c1\u06d2\u06d4 \u06cc\u06c1 \u062a\u0645\u0627\u0645 \u0688\u0627\u0631\u0679 \u06a9\u0648\u0688 \u067e\u0631 \u0644\u0627\u06af\u0648 \u06c1\u0648\u062a\u0627 \u06c1\u06d2\u060c \u0686\u0627\u06c1\u06d2 \u0648\u06c1 \u06a9\u0627\u0631\u0648\u0628\u0627\u0631\u06cc \u0645\u0646\u0637\u0642 \u06c1\u0648\u060c \u0688\u06cc\u0679\u0627 \u067e\u0631\u0648\u0633\u06cc\u0633\u0646\u06af\u060c \u0679\u06cc\u0633\u0679\u0646\u06af\u060c \u06cc\u0627 CLI \u0679\u0648\u0644\u0632\u06d4<\/p>\n<h3 id=\"heading-the-dart-model-and-freezed-skill\">\u0688\u0627\u0631\u0679 \u0645\u0627\u0688\u0644 \u0627\u0648\u0631 \u0645\u0646\u062c\u0645\u062f \u0645\u06c1\u0627\u0631\u062a<\/h3>\n<pre><code class=\"language-markdown\">---\nname: dart-models-freezed\ndescription: Create immutable data models using the freezed package with json_serializable\nfor serialization. Use when creating new data models, DTOs, request or response objects,\nvalue objects, or any Dart class that represents structured data. Applies when working\nwith JSON parsing, API response mapping, or defining data structures.\n---\n\n# Dart Models with Freezed\n\nAll data models use the freezed package for immutability and code generation.\n<\/code><\/pre>\n<h4 id=\"heading-model-definition\">\u0645\u0627\u0688\u0644 \u06a9\u06cc \u062a\u0639\u0631\u06cc\u0641<\/h4>\n<pre><code class=\"language-dart\">import 'package:freezed_annotation\/freezed_annotation.dart';\n\npart 'user_profile.freezed.dart';\npart 'user_profile.g.dart';\n\n@freezed\nclass UserProfile with _$UserProfile {\n  const factory UserProfile({\n    required String id,\n    required String name,\n    required String email,\n    String? avatarUrl,\n    @Default(false) bool isVerified,\n    required DateTime createdAt,\n  }) = _UserProfile;\n\n  factory UserProfile.fromJson(Map<string dynamic=\"\"> json) =>\n      _$UserProfileFromJson(json);\n}\n<\/string><\/code><\/pre>\n<p><code>@freezed<\/code>    \u0646\u0627\u0645\u0632\u062f \u06a9\u0646\u0633\u0679\u0631\u06a9\u0679\u0631 \u06a9\u0627 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u062a\u06d2 \u06c1\u0648\u0626\u06d2 \u0627\u06cc\u06a9 \u0646\u0627\u0642\u0627\u0628\u0644 \u062a\u063a\u06cc\u0631 \u06a9\u0644\u0627\u0633 \u0628\u0646\u0627\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u06a9\u0648\u0688 \u062c\u0646\u0631\u06cc\u0634\u0646 \u06a9\u0648 \u0645\u062a\u062d\u0631\u06a9 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4 <code>copyWith<\/code> \u0627\u06cc\u06a9 \u062a\u0631\u0645\u06cc\u0645 \u0634\u062f\u06c1 \u06a9\u0627\u067e\u06cc \u0628\u0646\u0627\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 <code>==<\/code> \u0627\u0648\u0631 <code>hashCode<\/code> \u062a\u0645\u0627\u0645 \u0634\u0639\u0628\u0648\u06ba \u06a9\u06cc \u0628\u0646\u06cc\u0627\u062f \u067e\u0631\u060c <code>toString<\/code> \u0688\u06cc\u0628\u06af\u0646\u06af \u06a9\u06d2 \u0644\u06cc\u06d2 <code>fromJson<\/code>\/<code>toJson<\/code> \u06a9\u06d2 \u0630\u0631\u06cc\u0639\u06d2 <code>json_serializable<\/code>.<\/p>\n<p>\u06a9\u06c1 <code>part<\/code> \u06c1\u062f\u0627\u06cc\u062a \u062f\u0631\u06a9\u0627\u0631 \u06c1\u06d2 \u0627\u0648\u0631 \u0641\u0627\u0626\u0644 \u06a9\u06d2 \u0646\u0627\u0645 \u0633\u06d2 \u0645\u0645\u0627\u062b\u0644 \u06c1\u0648\u0646\u06cc \u0686\u0627\u06c1\u06cc\u06d2\u06d4 <code>user_profile.dart<\/code> \u0628\u0646\u0627\u0626\u06cc\u06ba <code>user_profile.freezed.dart<\/code> \u0627\u0648\u0631 <code>user_profile.g.dart<\/code>.<\/p>\n<h4 id=\"heading-field-rules\">\u0641\u06cc\u0644\u0688 \u06a9\u06d2 \u0642\u0648\u0627\u0646\u06cc\u0646<\/h4>\n<p>\u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u06cc\u06ba <code>required<\/code> \u0627\u0646 \u0641\u06cc\u0644\u0688\u0632 \u06a9\u06d2 \u0644\u06cc\u06d2 \u062c\u0648 \u06c1\u0645\u06cc\u0634\u06c1 \u0645\u0648\u062c\u0648\u062f \u06c1\u0648\u0646\u0627 \u0686\u0627\u06c1\u06cc\u06d2\u06d4 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u06cc\u06ba <code>String?<\/code> (\u0646\u0627\u0642\u0627\u0628\u0644 \u0642\u0628\u0648\u0644) \u0627\u062e\u062a\u06cc\u0627\u0631\u06cc \u0641\u06cc\u0644\u0688\u06d4 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u06cc\u06ba <code>@Default(value)<\/code> \u0645\u0646\u0627\u0633\u0628 \u0688\u06cc\u0641\u0627\u0644\u0679 \u0627\u0642\u062f\u0627\u0631 \u06a9\u06d2 \u0633\u0627\u062a\u06be \u0641\u06cc\u0644\u0688\u0632 \u06a9\u06d2 \u0644\u06cc\u06d2 \u062c\u0648 \u0645\u0646\u0633\u0648\u062e\u06cc \u06a9\u0648 \u0631\u0648\u06a9\u062a\u06cc \u06c1\u06cc\u06ba\u06d4 \u0627\u0648\u0631 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u06cc\u06ba <code>@JsonKey(name: 'field_name')<\/code> JSON \u0641\u06cc\u0644\u0688 \u06a9\u0627 \u0646\u0627\u0645 \u0688\u0627\u0631\u0679 \u0641\u06cc\u0644\u0688 \u06a9\u06d2 \u0646\u0627\u0645 \u0633\u06d2 \u0645\u062e\u062a\u0644\u0641 \u06c1\u06d2\u06d4<\/p>\n<h4 id=\"heading-after-adding-or-modifying-a-model\">\u0645\u0627\u0688\u0644 \u06a9\u0648 \u0634\u0627\u0645\u0644 \u06a9\u0631\u0646\u06d2 \u06cc\u0627 \u0627\u0633 \u0645\u06cc\u06ba \u062a\u0631\u0645\u06cc\u0645 \u06a9\u0631\u0646\u06d2 \u06a9\u06d2 \u0628\u0639\u062f<\/h4>\n<p>\u06c1\u0645\u06cc\u0634\u06c1 \u0686\u0644\u0627\u0626\u06cc\u06ba:<\/p>\n<pre><code class=\"language-bash\">dart run build_runner build --delete-conflicting-outputs\n<\/code><\/pre>\n<p>\u062f\u0633\u062a\u06cc \u0637\u0648\u0631 \u067e\u0631 \u062a\u0631\u0645\u06cc\u0645 \u0646\u06c1 \u06a9\u0631\u06cc\u06ba\u06d4 <code>.freezed.dart<\/code> \u06cc\u0627 <code>.g.dart<\/code> \u0641\u0627\u0626\u0644 \u0627\u06af\u0644\u06cc \u062a\u0639\u0645\u06cc\u0631 \u0645\u06cc\u06ba \u062a\u062e\u0644\u06cc\u0642 \u0627\u0648\u0631 \u0627\u0648\u0648\u0631 \u0631\u0627\u0626\u0679 \u06a9\u06cc\u0627 \u062c\u0627\u0626\u06d2 \u06af\u0627\u06d4<\/p>\n<h4 id=\"heading-dtos-vs-domain-models\">\u0688\u06cc \u0679\u06cc \u0627\u0648 \u0627\u0648\u0631 \u0688\u0648\u0645\u06cc\u0646 \u0645\u0627\u0688\u0644<\/h4>\n<p>\u0688\u06cc\u0679\u0627 \u0679\u0631\u0627\u0646\u0633\u0641\u0631 \u0622\u0628\u062c\u06cc\u06a9\u0679 (DTOs) \u067e\u0631 \u0648\u0627\u0642\u0639 \u06c1\u06cc\u06ba: <code>data\/<\/code> \u0646\u0642\u0634\u06d2 \u0628\u0631\u0627\u06c1 \u0631\u0627\u0633\u062a API \u0641\u0627\u0631\u0645 \u067e\u0631\u06d4 \u062c\u06c1\u0627\u06ba \u0688\u0648\u0645\u06cc\u0646 \u0645\u0627\u0688\u0644 \u0631\u06c1\u062a\u0627 \u06c1\u06d2\u06d4 <code>domain\/<\/code> \u0627\u06cc\u067e \u06a9\u06d2 \u0627\u0646\u062f\u0631\u0648\u0646\u06cc \u0688\u06cc\u0679\u0627 \u0645\u0627\u0688\u0644 \u06a9\u06cc \u0646\u0645\u0627\u0626\u0646\u062f\u06af\u06cc \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<p>\u0627\u06cc\u06a9 DTO \u0645\u06cc\u06ba \u062f\u0631\u062c \u0630\u06cc\u0644 \u0641\u06cc\u0644\u0688\u0632 \u06c1\u0648 \u0633\u06a9\u062a\u06cc \u06c1\u06cc\u06ba: <code>created_at<\/code> (API \u0645\u06cc\u06ba snake_case)\u06d4 \u0688\u0648\u0645\u06cc\u0646 \u0645\u0627\u0688\u0644 \u0645\u06cc\u06ba <code>createdAt<\/code> (\u0627\u0648\u0646\u0679 \u06a9\u06cc\u0633) \u0631\u06cc\u067e\u0648\u0632\u0679\u0631\u06cc\u0632 \u06a9\u0648 DTOs \u0633\u06d2 \u0688\u0648\u0645\u06cc\u0646 \u0645\u0627\u0688\u0644\u0632 \u0645\u06cc\u06ba \u0645\u06cc\u067e \u06a9\u06cc\u0627 \u062c\u0627\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<h3 id=\"heading-the-dart-pattern-matching-skill\">\u0688\u0627\u0631\u0679 \u067e\u06cc\u0679\u0631\u0646 \u06a9\u06d2 \u0645\u0644\u0627\u067e \u06a9\u06cc \u0645\u06c1\u0627\u0631\u062a<\/h3>\n<pre><code class=\"language-markdown\">---\nname: dart-pattern-matching-idiomatic\ndescription: Use Dart 3 pattern matching, switch expressions, and sealed class hierarchies\nfor exhaustive control flow. Use when working with sealed classes, enums, discriminated\nunions, conditional logic on types, or any switch statement that could be a switch\nexpression. Applies when refactoring if-else chains, handling multiple subtypes, or\nimplementing business logic that branches on type.\n---\n\n# Dart Pattern Matching\n\nUse Dart 3 pattern matching for all control flow that involves type discrimination, sealed class hierarchies, or structural decomposition of data.\n<\/code><\/pre>\n<h4 id=\"heading-switch-expressions-over-switch-statements\">\u0633\u0648\u0626\u0686 \u0627\u0633\u0679\u06cc\u0679\u0645\u0646\u0679\u0633 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0627\u06cc\u06a9\u0633\u067e\u0631\u06cc\u0634\u0646\u0632 \u0633\u0648\u0626\u0686 \u06a9\u0631\u06cc\u06ba\u06d4<\/h4>\n<pre><code class=\"language-dart\">\/\/ Do not do this (switch statement is an imperative flow)\nswitch (state) {\n  case ProfileLoading():\n    return const CircularProgressIndicator();\n  case ProfileLoaded():\n    return ProfileContent(profile: state.profile);\n  case ProfileLoadFailure():\n    return ErrorView(message: state.message);\n  default:\n    return const SizedBox.shrink();\n}\n\n\/\/ Do this (switch expression is a value, works in build methods)\nreturn switch (state) {\n  ProfileInitial() => const SizedBox.shrink(),\n  ProfileLoading() => const CircularProgressIndicator(),\n  ProfileLoaded(:final profile) => ProfileContent(profile: profile),\n  ProfileLoadFailure(:final message) => ErrorView(message: message),\n};\n<\/code><\/pre>\n<p>\u0633\u0648\u0626\u0686 \u0627\u0638\u06c1\u0627\u0631 \u0627\u0642\u062f\u0627\u0631 \u06c1\u06cc\u06ba\u060c \u0628\u06cc\u0627\u0646\u0627\u062a \u0646\u06c1\u06cc\u06ba\u06d4 \u0648\u06c1 \u0642\u062f\u0631\u062a\u06cc \u0637\u0648\u0631 \u067e\u0631 \u062f\u0631\u062c \u0630\u06cc\u0644 \u062f\u0644\u06cc\u0644 \u06a9\u06d2 \u0633\u0627\u062a\u06be \u06a9\u0627\u0645 \u06a9\u0631\u062a\u06d2 \u06c1\u06cc\u06ba: <code>return<\/code> \u06cc\u0627 \u0645\u062a\u063a\u06cc\u0631 \u06a9\u06cc \u0642\u062f\u0631 \u06a9\u06d2 \u0637\u0648\u0631 \u067e\u0631\u06d4 \u0645\u06c1\u0631 \u0628\u0646\u062f \u0637\u0628\u0642\u0627\u062a\u06cc \u062f\u0631\u062c\u06c1 \u0628\u0646\u062f\u06cc \u0627\u0633 \u06a9\u0648 \u0645\u06a9\u0645\u0644 \u0628\u0646\u0627\u062a\u06cc \u06c1\u06d2\u06d4 \u062c\u0628 \u0622\u067e \u0627\u06cc\u06a9 \u0646\u0626\u06cc \u062d\u0627\u0644\u062a \u0634\u0627\u0645\u0644 \u06a9\u0631\u062a\u06d2 \u06c1\u06cc\u06ba\u060c \u062a\u0648 \u0645\u0631\u062a\u0628 \u06a9\u0631\u0646\u06d2 \u0648\u0627\u0644\u0627 \u0622\u067e \u06a9\u0648 \u0633\u0648\u0626\u0686 \u06a9\u06d2 \u0648\u06c1 \u062a\u0645\u0627\u0645 \u062a\u0627\u062b\u0631\u0627\u062a \u0628\u062a\u0627\u062a\u0627 \u06c1\u06d2 \u062c\u0648 \u0627\u0633\u06d2 \u0633\u0646\u0628\u06be\u0627\u0644\u0646\u06d2 \u0686\u0627\u06c1\u0626\u06cc\u06ba\u06d4<\/p>\n<h4 id=\"heading-destructuring-in-patterns\">\u067e\u06cc\u0679\u0631\u0646 \u06a9\u06cc \u062a\u0628\u0627\u06c1\u06cc<\/h4>\n<pre><code class=\"language-dart\">\/\/ Access fields directly in the pattern\ncase ProfileLoaded(:final profile) => ProfileContent(profile: profile),\n\/\/ Equivalent to:\ncase ProfileLoaded() => ProfileContent(profile: state.profile),\n<\/code><\/pre>\n<p>\u06a9\u06c1 <code>:final field<\/code> \u067e\u06cc\u0679\u0631\u0646 \u06a9\u06d2 \u0627\u0646\u062f\u0631 \u0646\u062d\u0648 \u0641\u06cc\u0644\u0688 \u06a9\u06cc \u0627\u0642\u062f\u0627\u0631 \u06a9\u0648 \u06a9\u06cc\u0633 \u0628\u0631\u0627\u0646\u0686 \u0645\u06cc\u06ba \u0628\u0631\u0627\u06c1 \u0631\u0627\u0633\u062a \u0628\u0627\u0646\u062f\u06be\u062a\u0627 \u06c1\u06d2\u06d4 \u0627\u0633 \u0633\u06d2 \u0631\u0633\u0627\u0626\u06cc \u06a9\u06cc \u0636\u0631\u0648\u0631\u062a \u062e\u062a\u0645 \u06c1\u0648 \u062c\u0627\u0626\u06d2 \u06af\u06cc\u06d4 <code>state.profile<\/code> \u0627\u0644\u06af \u0633\u06d2 \u06cc\u06c1 \u06a9\u0648\u0688 \u06a9\u0648 \u0645\u0632\u06cc\u062f \u062c\u0627\u0645\u0639 \u0628\u0646\u0627\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<h4 id=\"heading-guard-clauses\">\u062a\u062d\u0641\u0638 \u06a9\u06cc \u0634\u0642<\/h4>\n<pre><code class=\"language-dart\">return switch (state) {\n  ProfileLoaded(:final profile) when profile.isVerified => VerifiedProfileView(profile: profile),\n  ProfileLoaded(:final profile) => UnverifiedProfileView(profile: profile),\n  _ => const LoadingView(),\n};\n<\/code><\/pre>\n<p><code>when<\/code>    \u067e\u06cc\u0679\u0631\u0646 \u0645\u06cc\u06ba \u0627\u06cc\u06a9 \u0645\u062d\u0641\u0648\u0638 \u0634\u0642 \u0634\u0627\u0645\u0644 \u06a9\u0631\u06cc\u06ba\u06d4 \u06a9\u06cc\u0633 \u0635\u0631\u0641 \u0627\u0633 \u0635\u0648\u0631\u062a \u0645\u06cc\u06ba \u0645\u0645\u0627\u062b\u0644 \u06c1\u06d2 \u062c\u0628 \u062f\u0648\u0646\u0648\u06ba \u067e\u06cc\u0679\u0631\u0646 \u0645\u0645\u0627\u062b\u0644 \u06c1\u0648\u06ba \u0627\u0648\u0631 \u06af\u0627\u0631\u0688 \u06a9\u06cc \u062d\u0627\u0644\u062a \u062f\u0631\u0633\u062a \u06c1\u0648\u06d4 \u06af\u0627\u0631\u0688\u0632 \u0627\u06cc\u06a9 \u06c1\u06cc \u0642\u0633\u0645 \u06a9\u06d2 \u0627\u0646\u062f\u0631 \u0628\u0627\u0631\u06cc\u06a9 \u062f\u0627\u0646\u06d2 \u062f\u0627\u0631 \u0634\u0627\u062e\u06cc\u06ba \u0644\u06af\u0627\u0646\u06d2 \u06a9\u06cc \u0627\u062c\u0627\u0632\u062a \u062f\u06cc\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4<\/p>\n<h4 id=\"heading-record-patterns\">\u0631\u06cc\u06a9\u0627\u0631\u0688\u0646\u06af \u067e\u06cc\u0679\u0631\u0646<\/h4>\n<pre><code class=\"language-dart\">\/\/ Matching on records\nfinal (name, age) = getUserInfo();\n\n\/\/ In switch expressions\nfinal description = switch ((user.name, user.isAdmin)) {\n  (final name, true) => '$name (Admin)',\n  (final name, false) => name,\n};\n<\/code><\/pre>\n<p>\u0631\u06cc\u06a9\u0627\u0631\u0688 \u0627\u06cc\u06a9 \u0633\u0627\u062e\u062a\u06cc \u0679\u0648\u067e\u0644 \u06c1\u06d2\u06d4 \u0631\u06cc\u06a9\u0627\u0631\u0688 \u067e\u0631 \u067e\u06cc\u0679\u0631\u0646 \u06a9\u06cc \u0645\u0645\u0627\u062b\u0644\u062a \u0628\u063a\u06cc\u0631 \u06a9\u0633\u06cc \u0646\u0627\u0645\u0632\u062f \u0627\u06cc\u06a9\u0633\u06cc\u0633\u0631 \u06a9\u06d2 \u062c\u0632\u0648 \u06a9\u0648 \u0628\u0631\u0627\u06c1 \u0631\u0627\u0633\u062a \u0646\u06a9\u0627\u0644\u062a\u06cc \u06c1\u06d2\u06d4<\/p>\n<h4 id=\"heading-converting-if-else-chains\">\u0627\u06af\u0631 \u062f\u0648\u0633\u0631\u06cc \u0632\u0646\u062c\u06cc\u0631 \u06a9\u06cc \u062a\u0628\u062f\u06cc\u0644\u06cc<\/h4>\n<p>\u0627\u06af\u0631 \u0622\u067e \u06a9\u0648 \u0642\u0633\u0645 \u06cc\u0627 \u0642\u062f\u0631 \u06a9\u06d2 \u0644\u062d\u0627\u0638 \u0633\u06d2 \u0627\u06cc\u06a9 if-else \u0686\u06cc\u0646 \u0628\u0631\u0627\u0646\u0686\u0646\u06af \u0646\u0638\u0631 \u0622\u062a\u06cc \u06c1\u06d2 \u062a\u0648 \u0627\u0633\u06d2 \u0633\u0648\u0626\u0686 \u0627\u06cc\u06a9\u0633\u067e\u0631\u06cc\u0634\u0646 \u0645\u06cc\u06ba \u062a\u0628\u062f\u06cc\u0644 \u06a9\u0631\u06cc\u06ba\u06d4<\/p>\n<pre><code class=\"language-dart\">\/\/ Do not do this\nString label;\nif (priority == Priority.high) {\n  label=\"Urgent\";\n} else if (priority == Priority.medium) {\n  label=\"Normal\";\n} else {\n  label=\"Low\";\n}\n\n\/\/ Do this\nfinal label = switch (priority) {\n  Priority.high => 'Urgent',\n  Priority.medium => 'Normal',\n  Priority.low => 'Low',\n};\n<\/code><\/pre>\n<h3 id=\"heading-the-dart-testing-conventions-skill\">\u0688\u0627\u0631\u0679 \u0679\u06cc\u0633\u0679 \u06a9\u06d2 \u0642\u0648\u0627\u0639\u062f \u06a9\u06cc \u062a\u06a9\u0646\u06cc\u06a9<\/h3>\n<pre><code class=\"language-markdown\">---\nname: dart-testing-conventions\ndescription: Write Dart unit tests following package:test conventions with mocktail mocks,\ndescriptive group\/test naming, and correct async testing patterns. Use when writing any test\nfile, adding tests to existing files, mocking dependencies, testing async functions,\nor verifying error handling behavior.\n---\n\n# Dart Testing Conventions\n<\/code><\/pre>\n<h4 id=\"heading-test-file-structure\">\u0679\u06cc\u0633\u0679 \u0641\u0627\u0626\u0644 \u06a9\u0627 \u0688\u06be\u0627\u0646\u0686\u06c1<\/h4>\n<pre><code class=\"language-dart\">import 'package:flutter_test\/flutter_test.dart';\nimport 'package:mocktail\/mocktail.dart';\nimport 'package:myapp\/features\/profile\/data\/profile_repository_impl.dart';\nimport 'package:myapp\/core\/errors\/app_failure.dart';\n\nclass MockProfileRemoteDataSource extends Mock\n    implements ProfileRemoteDataSource {}\n\nclass MockProfileLocalDataSource extends Mock\n    implements ProfileLocalDataSource {}\n\nvoid main() {\n  late MockProfileRemoteDataSource mockRemote;\n  late MockProfileLocalDataSource mockLocal;\n  late ProfileRepositoryImpl repository;\n\n  setUp(() {\n    mockRemote = MockProfileRemoteDataSource();\n    mockLocal = MockProfileLocalDataSource();\n    repository = ProfileRepositoryImpl(\n      remote: mockRemote,\n      local: mockLocal,\n    );\n  });\n\n  group('ProfileRepositoryImpl', () {\n    group('getProfile', () {\n      test(\n        'returns Right(profile) when remote data source succeeds',\n        () async {\n          when(() => mockRemote.getProfile(any()))\n              .thenAnswer((_) async => right(fakeProfileDto));\n\n          final result = await repository.getProfile('user123');\n\n          expect(result.isRight(), isTrue);\n          expect(result.getOrElse(() => null)?.id, equals('user123'));\n        },\n      );\n\n      test(\n        'returns Left(NetworkFailure) when remote throws network error',\n        () async {\n          when(() => mockRemote.getProfile(any()))\n              .thenAnswer((_) async => left(NetworkFailure(message: 'No internet')));\n\n          final result = await repository.getProfile('user123');\n\n          expect(result.isLeft(), isTrue);\n          expect(result.fold((f) => f, (_) => null), isA<networkfailure>());\n        },\n      );\n    });\n  });\n}\n<\/networkfailure><\/code><\/pre>\n<h4 id=\"heading-test-naming\">\u0627\u067e\u0646\u06d2 \u0679\u06cc\u0633\u0679 \u06a9\u0627 \u0646\u0627\u0645 \u062f\u06cc\u06ba\u06d4<\/h4>\n<p>\u0648\u0636\u0627\u062d\u062a\u06cc \u0679\u06cc\u0633\u0679 \u06a9\u06d2 \u0646\u0627\u0645 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u06cc\u06ba \u062c\u0648 \u067e\u06cc\u0679\u0631\u0646 \u06a9\u06cc \u067e\u06cc\u0631\u0648\u06cc \u06a9\u0631\u06cc\u06ba\u06d4 <strong>\"\u062c\u0628 Y\u060c \u0645\u06cc\u06ba X \u06a9\u0631\u062a\u0627 \u06c1\u0648\u06ba\"<\/strong> \u06cc\u0627 <strong>\"\u0627\u06af\u0631 Y\u060c \u062a\u0648 X \u0648\u0627\u067e\u0633 \u06a9\u0631\u06cc\u06ba\u06d4\"<\/strong>.<\/p>\n<p><strong>\u06c1\u0627\u06ba:<\/strong> <code>returns Right(profile) when remote data source succeeds<\/code>, <code>returns Left(NetworkFailure) when connection fails<\/code>\u0627\u0648\u0631 <code>calls local data source when remote fails<\/code>.<\/p>\n<p>\u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u0646\u06d2 \u0633\u06d2 \u06af\u0631\u06cc\u0632 \u06a9\u0631\u06cc\u06ba\u06d4 <strong>\"\u0679\u06cc\u0633\u0679\"<\/strong> \u06cc\u0627 <strong>\"\u0645\u062c\u06be\u06d2 \u06cc\u06c1 \u06a9\u0631\u0646\u0627 \u06c1\u06d2\"<\/strong> \u0679\u06cc\u0633\u0679 \u0646\u0627\u0645 \u06a9\u06d2 \u0633\u0627\u062a\u06be\u06d4 \u0645\u062b\u0627\u0644 \u06a9\u06d2 \u0637\u0648\u0631 \u067e\u0631 <code>returns profile when repository call succeeds<\/code> \u0627\u0633 \u06a9\u06d2 \u0628\u062c\u0627\u0626\u06d2 <code>test that profile is returned correctly<\/code> \u06cc\u0627 <code>should return profile when called<\/code>.<\/p>\n<h4 id=\"heading-mock-setup\">\u0641\u0631\u0636\u06cc \u062a\u0631\u062a\u06cc\u0628\u0627\u062a<\/h4>\n<p>\u0627\u06cc\u06a9 \u0646\u06cc\u0627 \u0641\u0631\u0636\u06cc \u0645\u0627\u0688\u0644 \u0628\u0646\u0627\u0626\u06cc\u06ba <code>setUp<\/code>\u0627\u0639\u0644\u06cc \u0633\u0637\u062d \u067e\u0631 \u0646\u06c1\u06cc\u06ba <code>main<\/code>. \u06cc\u06c1 \u0627\u0633 \u0628\u0627\u062a \u06a9\u0648 \u06cc\u0642\u06cc\u0646\u06cc \u0628\u0646\u0627\u062a\u0627 \u06c1\u06d2 \u06a9\u06c1 \u0627\u06cc\u06a9 \u0679\u06cc\u0633\u0679 \u0633\u06d2 \u0631\u06cc\u0627\u0633\u062a \u062f\u0648\u0633\u0631\u06d2 \u0679\u06cc\u0633\u0679 \u0645\u06cc\u06ba \u0644\u06cc\u06a9 \u0646\u06c1\u06cc\u06ba \u06c1\u0648 \u0633\u06a9\u062a\u06cc\u06d4<\/p>\n<p>\u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u06cc\u06ba <code>registerFallbackValue<\/code> \u06a9\u0648 <code>setUpAll<\/code> \u062a\u0645\u0627\u0645 \u062d\u0633\u0628 \u0636\u0631\u0648\u0631\u062a \u0627\u0642\u0633\u0627\u0645 \u06a9\u06d2 \u0644\u06cc\u06d2 <code>any()<\/code>:<\/p>\n<pre><code class=\"language-dart\">setUpAll(() {\n  registerFallbackValue(const ProfileLoadRequested(userId: ''));\n  registerFallbackValue(left<appfailure userprofile=\"\">(const NotFoundFailure()));\n});\n<\/appfailure><\/code><\/pre>\n<h4 id=\"heading-async-testing\">\u063a\u06cc\u0631 \u0645\u0637\u0627\u0628\u0642\u062a \u067e\u0630\u06cc\u0631 \u0679\u06cc\u0633\u0679\u0646\u06af<\/h4>\n<pre><code class=\"language-dart\">\/\/ For Future results\nfinal result = await repository.getProfile('user123');\nexpect(result.isRight(), isTrue);\n\n\/\/ For Stream results\nexpectLater(\n  bloc.stream,\n  emitsInOrder([ProfileLoading(), ProfileLoaded(profile: fakeProfile)]),\n);\n<\/code><\/pre>\n<p>\u06c1\u0645\u06cc\u0634\u06c1 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u06cc\u06ba\u06d4 <code>await<\/code> \u062a\u062d\u0641\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2\u06d4 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u06cc\u06ba <code>expectLater<\/code> \u06a9\u06d2 \u0633\u0627\u062a\u06be <code>emitsInOrder<\/code> \u0646\u062f\u06cc\u0648\u06ba \u06a9\u06d2 \u0644\u06cc\u06d2\u06d4 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u0646\u06c1 \u06a9\u0631\u06cc\u06ba <code>await Future.delayed(...)<\/code> \u062c\u0627\u0646\u0686 \u0645\u06cc\u06ba\u06d4 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u06cc\u06ba <code>pump()<\/code> \u0648\u06cc\u062c\u0679 \u06a9\u06cc \u062c\u0627\u0646\u0686 \u06a9\u06d2 \u0644\u06cc\u06d2\u060c \u06cc\u0627 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u062a\u06d2 \u06c1\u0648\u0626\u06d2 \u063a\u06cc\u0631 \u0645\u0637\u0627\u0628\u0642\u062a \u067e\u0630\u06cc\u0631 \u0631\u0648\u06cc\u06d2 \u06a9\u0627 \u0645\u0630\u0627\u0642 \u0627\u0691\u0627\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2: <code>thenAnswer<\/code>.<\/p>\n<h2 id=\"heading-skills-for-architecture-and-large-codebases\">\u0641\u0646 \u062a\u0639\u0645\u06cc\u0631 \u0627\u0648\u0631 \u0628\u0691\u06d2 \u06a9\u0648\u0688 \u0628\u06cc\u0633 \u0645\u06cc\u06ba \u0645\u06c1\u0627\u0631\u062a<\/h2>\n<p>\u062c\u06cc\u0633\u06d2 \u062c\u06cc\u0633\u06d2 \u0622\u067e \u06a9\u0627 \u0641\u0644\u0679\u0631 \u067e\u0631\u0648\u062c\u06cc\u06a9\u0679 \u0628\u0691\u06be\u062a\u0627 \u06c1\u06d2\u060c \u0622\u067e \u06a9\u06d2 \u062a\u0639\u0645\u06cc\u0631\u0627\u062a\u06cc \u0641\u06cc\u0635\u0644\u0648\u06ba \u06a9\u06cc \u067e\u06cc\u0686\u06cc\u062f\u06af\u06cc \u0628\u06be\u06cc \u0628\u0691\u06be\u062a\u06cc \u062c\u0627\u062a\u06cc \u06c1\u06d2\u06d4 \u06cc\u06c1 \u0679\u06cc\u06a9\u0646\u0627\u0644\u0648\u062c\u06cc\u0632 \u0628\u0691\u06d2 \u06a9\u0648\u0688 \u0628\u06cc\u0633\u0632 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0688\u06cc\u0632\u0627\u0626\u0646 \u06a9\u06cc \u06af\u0626\u06cc \u06c1\u06cc\u06ba \u062c\u06c1\u0627\u06ba \u0645\u0633\u062a\u0642\u0644 \u0641\u0646 \u062a\u0639\u0645\u06cc\u0631 \u062e\u0627\u0635 \u0637\u0648\u0631 \u067e\u0631 \u0627\u06c1\u0645 \u06c1\u06d2\u06d4<\/p>\n<h3 id=\"heading-the-performance-skill\">\u06a9\u0627\u0631\u06a9\u0631\u062f\u06af\u06cc \u06a9\u06cc \u0645\u06c1\u0627\u0631\u062a<\/h3>\n<pre><code class=\"language-markdown\">---\nname: flutter-performance\ndescription: Apply Flutter performance best practices including const widgets, selective\nrebuilds, lazy loading, and proper use of keys. Use when optimizing screens, implementing\nlists, adding animations, working with images, or any task where rendering performance,\njank, frame rate, or memory usage is relevant.\n---\n\n# Flutter Performance\n<\/code><\/pre>\n<h4 id=\"heading-const-widgets\">Const \u0648\u06cc\u062c\u06cc\u0679<\/h4>\n<p>\u06a9\u0648\u0626\u06cc \u0628\u06be\u06cc \u0648\u06cc\u062c\u06cc\u0679 \u062c\u0648 const \u06c1\u0648 \u0633\u06a9\u062a\u0627 \u06c1\u06d2 const \u06c1\u0648\u0646\u0627 \u0686\u0627\u06c1\u06cc\u06d2\u06d4 \u06a9\u0648\u0626\u06cc \u0628\u06be\u06cc \u06a9\u0646\u0633\u0679\u0631\u06a9\u0679\u0631 \u062c\u0648 const \u06c1\u0648\u0633\u06a9\u062a\u0627 \u06c1\u06d2 \u0627\u0633 \u06a9\u06d2 \u067e\u0627\u0633 const \u06a9\u0646\u0633\u0679\u0631\u06a9\u0679\u0631 \u06c1\u0648\u0646\u0627 \u0636\u0631\u0648\u0631\u06cc \u06c1\u06d2\u06d4<\/p>\n<pre><code class=\"language-dart\">\/\/ Do not do this\nclass UserAvatar extends StatelessWidget {\n  UserAvatar({super.key, required this.url}); \/\/ Missing const\n  final String url;\n\n  @override\n  Widget build(BuildContext context) {\n    return CircleAvatar(  \/\/ Missing const where possible\n      backgroundImage: NetworkImage(url),\n    );\n  }\n}\n\n\/\/ Do this\nclass UserAvatar extends StatelessWidget {\n  const UserAvatar({super.key, required this.url});\n  final String url;\n\n  @override\n  Widget build(BuildContext context) {\n    return CircleAvatar(\n      backgroundImage: NetworkImage(url),\n    );\n  }\n}\n<\/code><\/pre>\n<h4 id=\"heading-list-performance\">\u06a9\u0627\u0631\u06a9\u0631\u062f\u06af\u06cc \u06a9\u06cc \u0641\u06c1\u0631\u0633\u062a \u0628\u0646\u0627\u0626\u06cc\u06ba<\/h4>\n<p>\u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u06cc\u06ba <code>ListView.builder<\/code> \u0646\u0627\u0645\u0639\u0644\u0648\u0645 \u06cc\u0627 \u0628\u0691\u06cc \u062a\u0639\u062f\u0627\u062f \u0645\u06cc\u06ba \u0622\u0626\u0679\u0645\u0632 \u0648\u0627\u0644\u06cc \u0641\u06c1\u0631\u0633\u062a\u0648\u06ba \u06a9\u06d2 \u0644\u06cc\u06d2\u06d4 \u0627\u0633\u06d2 \u06a9\u0628\u06be\u06cc \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u0646\u06c1 \u06a9\u0631\u06cc\u06ba\u06d4 <code>ListView<\/code> \u06a9\u06d2 \u0633\u0627\u062a\u06be <code>children<\/code> \u0627\u0646 \u0641\u06c1\u0631\u0633\u062a\u0648\u06ba \u06a9\u06d2 \u0644\u06cc\u06d2 \u062c\u0648 20 \u0633\u06d2 \u0632\u06cc\u0627\u062f\u06c1 \u0627\u0634\u06cc\u0627\u0621 \u062a\u06a9 \u0628\u0691\u06be \u0633\u06a9\u062a\u06cc \u06c1\u06cc\u06ba\u06d4<\/p>\n<pre><code class=\"language-dart\">\/\/ Do not do this for variable-length lists\nListView(\n  children: items.map((item) => ItemCard(item: item)).toList(),\n)\n\n\/\/ Do this\nListView.builder(\n  itemCount: items.length,\n  itemBuilder: (context, index) => ItemCard(item: items[index]),\n)\n<\/code><\/pre>\n<h4 id=\"heading-selective-rebuilds-with-blocselector\">\u0628\u0644\u0627\u06a9 \u0633\u0644\u06cc\u06a9\u0679\u0631 \u06a9\u0627 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u062a\u06d2 \u06c1\u0648\u0626\u06d2 \u0633\u0644\u06cc\u06a9\u0679\u06cc\u0648 \u0631\u06cc \u0628\u0644\u0688<\/h4>\n<p>\u0627\u06af\u0631 \u0648\u06cc\u062c\u06cc\u0679 \u0679\u0631\u06cc \u06a9\u0627 \u0635\u0631\u0641 \u0627\u06cc\u06a9 \u062d\u0635\u06c1 \u0631\u06cc\u0627\u0633\u062a \u06a9\u06d2 \u06a9\u0686\u06be \u062d\u0635\u06d2 \u067e\u0631 \u0645\u0646\u062d\u0635\u0631 \u06c1\u06d2\u060c \u062a\u0648 \u0635\u0631\u0641 \u0627\u0646\u062d\u0635\u0627\u0631 \u0648\u06cc\u062c\u0679 \u06a9\u0648 \u062f\u0648\u0628\u0627\u0631\u06c1 \u0628\u0646\u0627\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0628\u0644\u0627\u06a9 \u0633\u0644\u06cc\u06a9\u0679\u0631 \u06a9\u0627 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u06cc\u06ba\u06d4<\/p>\n<pre><code class=\"language-dart\">\/\/ Do not do this (entire subtree rebuilds on any state change)\nBlocBuilder<cartbloc cartstate=\"\">(\n  builder: (context, state) => CartBadge(count: state is CartLoaded ? state.itemCount : 0),\n)\n\n\/\/ Do this (rebuilds only when item count changes)\nBlocSelector<cartbloc cartstate=\"\" int=\"\">(\n  selector: (state) => state is CartLoaded ? state.itemCount : 0,\n  builder: (context, count) => CartBadge(count: count),\n)\n<\/cartbloc><\/cartbloc><\/code><\/pre>\n<h4 id=\"heading-image-optimization\">\u0627\u0645\u06cc\u062c \u0622\u067e\u0679\u06cc\u0645\u0627\u0626\u0632\u06cc\u0634\u0646<\/h4>\n<p>\u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u06cc\u06ba <code>cached_network_image<\/code> \u0646\u06cc\u0679 \u0648\u0631\u06a9 \u06a9\u06cc \u062a\u0635\u0627\u0648\u06cc\u0631 \u06a9\u06d2 \u0644\u06cc\u06d2\u06d4 \u0627\u0633\u06d2 \u06a9\u0628\u06be\u06cc \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u0646\u06c1 \u06a9\u0631\u06cc\u06ba\u06d4 <code>Image.network<\/code> \u0628\u0631\u0627\u06c1 \u0631\u0627\u0633\u062a \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u06cc\u06ba <code>cacheWidth<\/code> \u0627\u0648\u0631 <code>cacheHeight<\/code> \u0641\u06c1\u0631\u0633\u062a \u06a9\u06d2 \u0622\u0626\u0679\u0645\u0632 \u06a9\u0648 \u0688\u06cc \u06a9\u0648\u0688 \u06a9\u0631\u062a\u06d2 \u0648\u0642\u062a \u062a\u0635\u0648\u06cc\u0631 \u06a9\u0648 \u0627\u0633\u06a9\u06cc\u0644 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4 \u0628\u06c1\u062a \u0686\u06be\u0648\u0679\u06d2 \u0641\u0627\u0626\u0644 \u0633\u0627\u0626\u0632 \u06a9\u06d2 \u0644\u06cc\u06d2\u060c Android \u067e\u0631 WebP \u0641\u0627\u0631\u0645\u06cc\u0679 \u0627\u0648\u0631 iOS \u067e\u0631 HEIC\/WebP \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u06cc\u06ba\u06d4<\/p>\n<h3 id=\"heading-the-accessibility-skill\">\u0631\u0633\u0627\u0626\u06cc \u0679\u06cc\u06a9\u0646\u0627\u0644\u0648\u062c\u06cc<\/h3>\n<pre><code class=\"language-markdown\">---\nname: flutter-accessibility\ndescription: Implement accessibility features including semantic labels, focus management,\ncontrast requirements, and screen reader support. Use when creating interactive widgets,\nimages, icons, form fields, or any element that needs to be usable by people with\ndisabilities. Apply when working with Semantics, ExcludeSemantics, Focus, or FocusNode.\n---\n\n# Flutter Accessibility\n<\/code><\/pre>\n<h4 id=\"heading-semantic-labels-on-interactive-elements\">\u0627\u0646\u0679\u0631\u0627\u06cc\u06a9\u0679\u0648 \u0639\u0646\u0627\u0635\u0631 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0633\u06cc\u0645\u0646\u0679\u06a9 \u0644\u06cc\u0628\u0644\u0632<\/h4>\n<p>\u06c1\u0631 <code>IconButton<\/code>, <code>FloatingActionButton<\/code>\u0627\u0648\u0631 <code>GestureDetector<\/code> \u0627\u06af\u0631 \u0622\u067e \u06a9\u0648\u0626\u06cc \u0645\u0639\u0646\u06cc \u062e\u06cc\u0632 \u06a9\u0627\u0645 \u06a9\u0631 \u0631\u06c1\u06d2 \u06c1\u06cc\u06ba\u060c \u062a\u0648 \u0622\u067e \u06a9\u06d2 \u067e\u0627\u0633 \u0633\u06cc\u0645\u0646\u0679\u06a9 \u0644\u06cc\u0628\u0644 \u06c1\u0648\u0646\u0627 \u0686\u0627\u06c1\u06cc\u06d2\u06d4<\/p>\n<pre><code class=\"language-dart\">\/\/ Do not do this\nIconButton(\n  onPressed: _onShare,\n  icon: const Icon(Icons.share),\n)\n\n\/\/ Do this\nIconButton(\n  onPressed: _onShare,\n  icon: const Icon(Icons.share),\n  tooltip: 'Share post', \/\/ Used as semantic label on mobile\n)\n<\/code><\/pre>\n<h4 id=\"heading-images-and-decorative-icons\">\u062a\u0635\u0627\u0648\u06cc\u0631 \u0627\u0648\u0631 \u0622\u0631\u0627\u0626\u0634\u06cc \u0634\u0628\u06cc\u06c1\u06cc\u06ba<\/h4>\n<p>\u0634\u0628\u06cc\u06c1\u06cc\u06ba \u0627\u0648\u0631 \u062a\u0635\u0627\u0648\u06cc\u0631 \u062c\u0648 \u062e\u0627\u0644\u0635\u062a\u0627\u064b \u06a9\u0627\u0633\u0645\u06cc\u0679\u06a9 \u06c1\u06cc\u06ba \u0688\u0633\u067e\u0644\u06d2 \u06a9\u06cc \u062c\u0627\u0646\u06cc \u0686\u0627\u06c1\u0626\u06cc\u06ba \u062a\u0627\u06a9\u06c1 \u0627\u0633\u06a9\u0631\u06cc\u0646 \u0631\u06cc\u0688\u0631\u0632 \u0627\u0646\u06c1\u06cc\u06ba \u0686\u06be\u0648\u0691 \u0633\u06a9\u06cc\u06ba\u06d4<\/p>\n<pre><code class=\"language-dart\">\/\/ Decorative icon (no semantic value)\nIcon(\n  Icons.star,\n  semanticLabel: '', \/\/ Empty label marks it as decorative\n)\n\n\/\/ Informative icon (has semantic value)\nIcon(\n  Icons.warning,\n  semanticLabel: 'Warning: action cannot be undone',\n)\n<\/code><\/pre>\n<h4 id=\"heading-form-accessibility\">\u0641\u0627\u0631\u0645 \u06a9\u06cc \u0631\u0633\u0627\u0626\u06cc<\/h4>\n<p>\u062a\u0645\u0627\u0645 \u0641\u0627\u0631\u0645 \u0641\u06cc\u0644\u0688\u0632 \u0645\u06cc\u06ba \u0627\u06cc\u06a9 \u0644\u06cc\u0628\u0644 \u06c1\u0648\u0646\u0627 \u0686\u0627\u06c1\u06cc\u06d2 \u062c\u0648 \u0627\u0633\u06a9\u0631\u06cc\u0646 \u0631\u06cc\u0688\u0631 \u06a9\u0648 \u0628\u062a\u0627\u0626\u06d2 \u06a9\u06c1 \u06a9\u06cc\u0627 \u06a9\u0631\u0646\u0627 \u06c1\u06d2\u06d4 \u0641\u06cc\u0644\u0688\u0632 \u06a9\u06cc \u0634\u0646\u0627\u062e\u062a \u06a9\u06d2 \u0644\u06cc\u06d2 \u0645\u06a9\u0645\u0644 \u0637\u0648\u0631 \u067e\u0631 \u067e\u0644\u06cc\u0633 \u06c1\u0648\u0644\u0688\u0631 \u0679\u06cc\u06a9\u0633\u0679 \u067e\u0631 \u0627\u0646\u062d\u0635\u0627\u0631 \u0646\u06c1 \u06a9\u0631\u06cc\u06ba\u06d4<\/p>\n<pre><code class=\"language-dart\">TextFormField(\n  decoration: const InputDecoration(\n    labelText: 'Email address',    \/\/ Screen readers announce this\n    hintText: 'name@example.com', \/\/ Only visible when empty\n  ),\n)\n<\/code><\/pre>\n<h4 id=\"heading-minimum-touch-target-size\">\u06a9\u0645 \u0627\u0632 \u06a9\u0645 \u0679\u0686 \u06c1\u062f\u0641 \u06a9\u0627 \u0633\u0627\u0626\u0632<\/h4>\n<p>\u062a\u0645\u0627\u0645 \u0645\u062a\u0639\u0627\u0645\u0644 \u0639\u0646\u0627\u0635\u0631 \u06a9\u0645 \u0627\u0632 \u06a9\u0645 48x48dp \u06c1\u0648\u0646\u06d2 \u0686\u0627\u06c1\u0626\u06cc\u06ba\u06d4 \u062c\u0628 \u0628\u0635\u0631\u06cc \u0633\u0627\u0626\u0632 \u0686\u06be\u0648\u0679\u0627 \u06c1\u0648\u062a\u0627 \u06c1\u06d2\u06d4 <code>SizedBox<\/code> \u06cc\u0627 <code>Padding<\/code> \u06c1\u0679 \u0627\u06cc\u0631\u06cc\u0627 \u06a9\u0648 \u0628\u0691\u06be\u0627\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2:<\/p>\n<pre><code class=\"language-dart\">SizedBox(\n  width: 48,\n  height: 48,\n  child: IconButton(\n    iconSize: 20,\n    onPressed: _onClose,\n    icon: const Icon(Icons.close),\n  ),\n)\n<\/code><\/pre>\n<h2 id=\"heading-advanced-skill-patterns\">\u0627\u0639\u0644\u06cc \u062f\u0631\u062c\u06d2 \u06a9\u06cc \u0645\u06c1\u0627\u0631\u062a \u06a9\u06d2 \u067e\u06cc\u0679\u0631\u0646<\/h2>\n<h3 id=\"heading-teaching-tool-usage-as-part-of-task-completion\">\u0627\u0633\u0627\u0626\u0646\u0645\u0646\u0679\u0633 \u06a9\u0648 \u0645\u06a9\u0645\u0644 \u06a9\u0631\u0646\u06d2 \u06a9\u06d2 \u062d\u0635\u06d2 \u06a9\u06d2 \u0637\u0648\u0631 \u067e\u0631 \u062a\u0639\u0644\u06cc\u0645\u06cc \u0679\u0648\u0644\u0632 \u06a9\u0627 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u06cc\u06ba\u06d4<\/h3>\n<p>\u0679\u06cc\u06a9\u0646\u0627\u0644\u0648\u062c\u06cc \u0628\u0639\u0636 \u06a9\u0645\u0627\u0646\u0688\u0632 \u06a9\u0648 \"\u06a9\u0627\u0645 \u06a9\u0631\u0646\u06d2\" \u06a9\u06cc \u062a\u0639\u0631\u06cc\u0641 \u06a9\u0627 \u062d\u0635\u06c1 \u0628\u0646\u0627 \u0633\u06a9\u062a\u06cc \u06c1\u06d2\u06d4 \u06cc\u06c1 \u0633\u0628 \u0633\u06d2 \u0637\u0627\u0642\u062a\u0648\u0631 \u0646\u0645\u0648\u0646\u0648\u06ba \u0645\u06cc\u06ba \u0633\u06d2 \u0627\u06cc\u06a9 \u06c1\u06d2 \u06a9\u06cc\u0648\u0646\u06a9\u06c1 \u06cc\u06c1 \u062e\u0648\u062f \u0628\u062e\u0648\u062f \u06a9\u0648\u0627\u0644\u0679\u06cc \u0644\u0648\u067e \u06a9\u0648 \u0628\u0646\u062f \u06a9\u0631 \u062f\u06cc\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<pre><code class=\"language-markdown\">## Required Verification Steps\n\nAfter any code generation or modification task, always:\n\n1. Run `dart format .` to format all Dart files\n2. Run `flutter analyze` to check for analyzer errors and warnings\n3. Run `flutter test` to verify no tests are broken by the changes\n4. If any of the above produce errors, fix them before reporting the task as complete\n\nDo not report a task complete if any of these commands fail.\n<\/code><\/pre>\n<p>\u06cc\u06c1 \u0646\u0645\u0648\u0646\u06c1 \u06a9\u0648\u0688 \u062c\u0646\u0631\u06cc\u0634\u0646 \u06af\u0627\u0626\u06cc\u0688 \u06a9\u06cc \u062a\u06a9\u0646\u06cc\u06a9\u0648\u06ba \u06a9\u0627 \u0645\u06a9\u0645\u0644 \u06a9\u0648\u0627\u0644\u0679\u06cc \u0627\u06cc\u0634\u0648\u0631\u0646\u0633 \u0648\u0631\u06a9 \u0641\u0644\u0648 \u0645\u06cc\u06ba \u062a\u0631\u062c\u0645\u06c1 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4 \u0627\u06cc\u062c\u0646\u0679 \u0635\u0631\u0641 \u06a9\u0648\u0688 \u0646\u06c1\u06cc\u06ba \u0644\u06a9\u06be\u062a\u06d2\u06d4 \u06c1\u0645 \u06cc\u06c1 \u06a9\u06c1\u0646\u06d2 \u0633\u06d2 \u067e\u06c1\u0644\u06d2 \u06a9\u06c1 \u06cc\u06c1 \u06c1\u0648 \u06af\u06cc\u0627 \u06c1\u06d2 \u0645\u0639\u06cc\u0627\u0631 \u06a9\u06d2 \u0645\u0639\u06cc\u0627\u0631 \u06a9\u06d2 \u0645\u0637\u0627\u0628\u0642 \u0622\u067e \u06a9\u06d2 \u06a9\u0648\u0688 \u06a9\u06cc \u062a\u0648\u062b\u06cc\u0642 \u06a9\u0631\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4<\/p>\n<h3 id=\"heading-conditional-rules-based-on-context\">\u062d\u0627\u0644\u0627\u062a \u067e\u0631 \u0645\u0646\u062d\u0635\u0631 \u0645\u0634\u0631\u0648\u0637 \u0642\u0648\u0627\u0639\u062f<\/h3>\n<p>\u06a9\u0686\u06be \u0627\u0635\u0648\u0644 \u0635\u0631\u0641 \u0645\u062e\u0635\u0648\u0635 \u062d\u0627\u0644\u0627\u062a \u0645\u06cc\u06ba \u0644\u0627\u06af\u0648 \u06c1\u0648\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4 \u06c1\u0645 \u0627\u0646 \u06a9\u0627 \u0627\u0638\u06c1\u0627\u0631 \u0645\u0634\u0631\u0648\u0637 \u062a\u0627\u062b\u0631\u0627\u062a \u0645\u06cc\u06ba \u06a9\u0631\u062a\u06d2 \u06c1\u06cc\u06ba \u062c\u0648 \u0627\u06cc\u062c\u0646\u0679 \u06a9\u0648 \u0635\u062d\u06cc\u062d \u0637\u0631\u06cc\u0642\u06d2 \u0633\u06d2 \u0644\u0627\u06af\u0648 \u06a9\u0631\u0646\u06d2 \u0645\u06cc\u06ba \u0645\u062f\u062f \u06a9\u0631\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4<\/p>\n<pre><code class=\"language-markdown\">## Context-Dependent Rules\n\nWhen a widget initiates a network request:\n- Disable all interactive elements while the request is in flight\n- Show a loading indicator appropriate to the UI scope\n- Handle errors with a user-readable message\n- Re-enable interactive elements when the request completes (success or failure)\n\nWhen a Bloc handles multiple independent operations:\n- Create separate error states for each operation (not a single generic Error state)\n- Name each error state after the operation: ProfileLoadFailure, ProfileUpdateFailure\n\nWhen creating a widget that appears in a ListView:\n- Always provide a key\n- Use const constructors wherever possible\n- Consider using ListView.builder at the list level if the list may exceed 50 items\n<\/code><\/pre>\n<h3 id=\"heading-cross-referencing-skills\">\u06a9\u0631\u0627\u0633 \u062d\u0648\u0627\u0644\u06c1 \u062f\u06cc\u0646\u06d2 \u06a9\u06cc \u062a\u06a9\u0646\u06cc\u06a9<\/h3>\n<p>\u067e\u06cc\u0686\u06cc\u062f\u06c1 \u06a9\u0627\u0645\u0648\u06ba \u06a9\u06d2 \u0644\u06cc\u06d2 \u0645\u0644 \u06a9\u0631 \u06a9\u0627\u0645 \u06a9\u0631\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0645\u062a\u0639\u062f\u062f \u0645\u06c1\u0627\u0631\u062a\u0648\u06ba \u06a9\u06cc \u0636\u0631\u0648\u0631\u062a \u067e\u0691 \u0633\u06a9\u062a\u06cc \u06c1\u06d2\u06d4 \u0627\u0633\u06a9\u0644 \u0628\u0627\u0688\u06cc \u0645\u06cc\u06ba \u0645\u062a\u0639\u0644\u0642\u06c1 \u0645\u06c1\u0627\u0631\u062a\u0648\u06ba \u06a9\u0627 \u0648\u0627\u0636\u062d \u0637\u0648\u0631 \u067e\u0631 \u062d\u0648\u0627\u0644\u06c1 \u062f\u06cc\u06ba \u062a\u0627\u06a9\u06c1 \u0627\u06cc\u062c\u0646\u0679 \u062c\u0627\u0646\u062a\u0627 \u06c1\u0648 \u06a9\u06c1 \u0627\u0633 \u0645\u06c1\u0627\u0631\u062a \u06a9\u0648 \u06a9\u06cc\u0633\u06d2 \u0644\u0648\u0688 \u06a9\u0631\u0646\u0627 \u06c1\u06d2\u06d4<\/p>\n<pre><code class=\"language-markdown\">## Related Skills\n\nWhen this skill's rules result in widget extraction, also apply the\nflutter-file-organization skill to determine the correct file location.\n\nWhen the extracted component requires state management, apply the\nflutter-bloc-state-management skill to determine whether it needs its own Bloc.\n\nWhen writing tests for code created using this skill, apply the\ndart-testing-conventions skill for test naming and structure.\n<\/code><\/pre>\n<h3 id=\"heading-skills-that-encode-hard-won-production-lessons\">\u0645\u0634\u06a9\u0644 \u0633\u06d2 \u062c\u06cc\u062a\u0646\u06d2 \u0648\u0627\u0644\u06d2 \u067e\u0631\u0648\u0688\u06a9\u0634\u0646 \u0627\u0633\u0628\u0627\u0642 \u06a9\u0648 \u0627\u0646\u06a9\u0648\u0688\u0646\u06af \u06a9\u0631\u0646\u06d2 \u06a9\u0627 \u0641\u0646<\/h3>\n<p>\u06a9\u0686\u06be \u0627\u0646\u062a\u06c1\u0627\u0626\u06cc \u0642\u06cc\u0645\u062a\u06cc \u062a\u06a9\u0646\u06cc\u06a9\u06cc \u0645\u0648\u0627\u062f \u0645\u062e\u0635\u0648\u0635 \u067e\u0631\u0648\u0688\u06a9\u0634\u0646 \u0627\u06cc\u0648\u0646\u0679\u0633 \u0633\u06d2 \u0622\u062a\u0627 \u06c1\u06d2\u06d4 \u0648\u0627\u0642\u0639\u06d2 \u0633\u06d2 \u0633\u06cc\u06a9\u06be\u06d2 \u06af\u0626\u06d2 \u0627\u0633\u0628\u0627\u0642 \u06a9\u0648 \u062a\u06a9\u0646\u06cc\u06a9\u06cc \u0627\u0635\u0648\u0644\u0648\u06ba \u06a9\u06d2 \u0633\u0627\u062a\u06be \u06a9\u0627\u0641\u06cc \u0633\u06cc\u0627\u0642 \u0648 \u0633\u0628\u0627\u0642 \u06a9\u06d2 \u0633\u0627\u062a\u06be \u062f\u0633\u062a\u0627\u0648\u06cc\u0632 \u06a9\u0631\u06cc\u06ba \u062a\u0627\u06a9\u06c1 \u06c1\u0631 \u06a9\u0648\u0626\u06cc (\u0627\u0648\u0631 \u06c1\u0631 \u0627\u06cc\u062c\u0646\u0679) \u06cc\u06c1 \u0633\u0645\u062c\u06be \u0633\u06a9\u06d2 \u06a9\u06c1 \u0648\u0627\u0642\u0639\u06c1 \u06a9\u06cc\u0648\u06ba \u0645\u0648\u062c\u0648\u062f \u06c1\u06d2\u06d4<\/p>\n<h4 id=\"heading-buildcontext-after-async-gaps-learned-from-production\">\u063a\u06cc\u0631 \u0645\u0637\u0627\u0628\u0642\u062a \u067e\u0630\u06cc\u0631 \u0648\u0642\u0641\u06c1 \u06a9\u06d2 \u0628\u0639\u062f \u062a\u0639\u0645\u06cc\u0631 \u06a9\u0627 \u062d\u0648\u0627\u0644\u06c1 (\u067e\u06cc\u062f\u0627\u0648\u0627\u0631 \u0633\u06d2 \u0633\u06cc\u06a9\u06be\u06cc\u06ba)<\/h4>\n<p>\u0627\u0646\u062a\u0638\u0627\u0631 \u06a9\u06d2 \u0628\u0639\u062f BuildContext \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u0646\u06d2 \u0633\u06d2 \u067e\u06c1\u0644\u06d2 \u06c1\u0645\u06cc\u0634\u06c1 \u0645\u0627\u0624\u0646\u0679 \u06a9\u06cc \u062c\u0627\u0646\u0686 \u06a9\u0631\u06cc\u06ba\u06d4<\/p>\n<pre><code class=\"language-dart\">Future<void> _onSubmit() async {\n  final result = await _repository.save(formData);\n\n  \/\/ WRONG: context may be stale if widget was disposed during the await\n  ScaffoldMessenger.of(context).showSnackBar(...);\n\n  \/\/ CORRECT: check mounted first\n  if (!mounted) return;\n  ScaffoldMessenger.of(context).showSnackBar(...);\n}\n<\/void><\/code><\/pre>\n<p>\u06cc\u06c1 \u062e\u0631\u0627\u0628\u06cc \u062a\u0631\u0642\u06cc \u0645\u06cc\u06ba \u062e\u0627\u0645\u0648\u0634 \u06c1\u06d2 (\u0648\u06cc\u062c\u06cc\u0679 \u0639\u0627\u0645 \u0637\u0648\u0631 \u067e\u0631 \u0627\u0633 \u0648\u0642\u062a \u062a\u06a9 \u0646\u0635\u0628 \u0631\u06c1\u06d2 \u06af\u0627 \u062c\u0628 \u062a\u06a9 \u06a9\u06c1 \u063a\u06cc\u0631 \u0645\u0637\u0627\u0628\u0642\u062a \u067e\u0630\u06cc\u0631 \u0622\u067e\u0631\u06cc\u0634\u0646 \u0645\u06a9\u0645\u0644 \u0646\u06c1 \u06c1\u0648 \u062c\u0627\u0626\u06d2)\u060c \u0644\u06cc\u06a9\u0646 \u067e\u0631\u0648\u0688\u06a9\u0634\u0646 \u0645\u06cc\u06ba\u060c \u062c\u06c1\u0627\u06ba \u0646\u06cc\u0679 \u0648\u0631\u06a9 \u0645\u06cc\u06ba \u062a\u0627\u062e\u06cc\u0631 \u0632\u06cc\u0627\u062f\u06c1 \u06c1\u0648\u062a\u06cc \u06c1\u06d2 \u0627\u0648\u0631 \u0635\u0627\u0631\u0641 \u0627\u0633 \u0648\u0642\u062a \u0686\u0644\u0627 \u062c\u0627\u062a\u0627 \u06c1\u06d2 \u062c\u0628 \u0622\u067e\u0631\u06cc\u0634\u0646 \u062c\u0627\u0631\u06cc \u06c1\u0648\u062a\u0627 \u06c1\u06d2\u060c \u0627\u06cc\u06a9 \"FlutterError (\u0627\u06cc\u06a9 \u063a\u06cc\u0631 \u0641\u0639\u0627\u0644 \u0648\u06cc\u062c\u06cc\u0679 \u06a9\u06cc \u062a\u0644\u0627\u0634 \u06a9\u0627 \u0627\u062c\u062f\u0627\u062f)\" \u06a9\u0631\u06cc\u0634 \u06c1\u0648\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<h2 id=\"heading-package-level-skills-teaching-the-agent-your-libraries\">\u067e\u06cc\u06a9\u06cc\u062c \u06a9\u06cc \u0633\u0637\u062d \u06a9\u06cc \u0645\u06c1\u0627\u0631\u062a: \u0644\u0627\u0626\u0628\u0631\u06cc\u0631\u06cc\u0648\u06ba \u0645\u06cc\u06ba \u0627\u06cc\u062c\u0646\u0679\u0648\u06ba \u06a9\u0648 \u062a\u0631\u0628\u06cc\u062a \u062f\u06cc\u06ba\u06d4<\/h2>\n<p>\u06a9\u06c1 <code>skills<\/code> CLI \u0679\u0648\u0644 (\u0627\u06cc\u06a9 \u0688\u0627\u0631\u0679 \u067e\u06cc\u06a9\u06cc\u062c \u06a9\u06d2 \u0637\u0648\u0631 \u067e\u0631 \u062f\u0633\u062a\u06cc\u0627\u0628 \u06c1\u06d2 \u06cc\u06c1\u0627\u06ba \u0633\u06d2: <code>pub.dev\/packages\/skills<\/code>) \u0627\u06cc\u06a9 \u0637\u0627\u0642\u062a\u0648\u0631 \u067e\u06cc\u0679\u0631\u0646 \u06a9\u0648 \u0642\u0627\u0628\u0644 \u0628\u0646\u0627\u062a\u0627 \u06c1\u06d2: \u0622\u067e \u06a9\u06d2 \u067e\u0631\u0648\u062c\u06cc\u06a9\u0679 \u06a9\u06d2 \u067e\u06cc\u06a9\u06cc\u062c \u06a9\u06d2 \u0627\u0646\u062d\u0635\u0627\u0631 \u0633\u06d2 \u0628\u0631\u0627\u06c1 \u0631\u0627\u0633\u062a \u0679\u06cc\u06a9\u0646\u0627\u0644\u0648\u062c\u06cc\u0632 \u06a9\u0648 \u0627\u0646\u0633\u0679\u0627\u0644 \u06a9\u0631\u0646\u0627\u06d4<\/p>\n<pre><code class=\"language-bash\"># Install the Dart skills CLI globally\ndart pub global activate skills\n\n# Install skills from all packages in your project that ship skills\nskills get\n<\/code><\/pre>\n<p>\u067e\u06cc\u06a9\u06cc\u062c \u0634\u0627\u0645\u0644 \u06a9\u0631\u0646\u0627 <code>pubspec.yaml<\/code> \u0627\u0648\u0631 \u0686\u0644\u0627\u0626\u06cc\u06ba <code>skills get<\/code>CLI \u06c1\u0631 \u067e\u06cc\u06a9\u062c \u06a9\u0648 \u0627\u0646\u062d\u0635\u0627\u0631 \u06a9\u06d2 \u062f\u0631\u062e\u062a \u0645\u06cc\u06ba \u062a\u0644\u0627\u0634 \u06a9\u0631\u062a\u0627 \u06c1\u06d2 \u0627\u0648\u0631 \u0641\u0631\u0627\u06c1\u0645 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4 <code>skills\/<\/code> \u0688\u0627\u0626\u0631\u06cc\u06a9\u0679\u0631\u06cc \u06a9\u0648 \u0628\u0631\u0627\u0624\u0632 \u06a9\u0631\u06cc\u06ba \u0627\u0648\u0631 \u062e\u0648\u062f \u0628\u062e\u0648\u062f \u0679\u06cc\u06a9\u0646\u0627\u0644\u0648\u062c\u06cc \u06a9\u0648 \u0627\u0646\u0633\u0679\u0627\u0644 \u06a9\u0631\u06cc\u06ba\u06d4 \u0627\u0633 \u06a9\u0627 \u0645\u0637\u0644\u0628 \u06cc\u06c1 \u06c1\u06d2 \u06a9\u06c1 \u067e\u06cc\u06a9\u06cc\u062c \u06a9\u06d2 \u0645\u0635\u0646\u0641\u06cc\u0646 \u0627\u067e\u0646\u06d2 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u06cc \u06c1\u062f\u0627\u06cc\u0627\u062a \u0628\u0631\u0627\u06c1 \u0631\u0627\u0633\u062a \u0627\u06cc\u062c\u0646\u0679 \u0635\u0627\u0631\u0641\u06cc\u0646 \u062a\u06a9 \u067e\u06c1\u0646\u0686\u0627 \u0633\u06a9\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4<\/p>\n<h3 id=\"heading-why-this-matters\">\u06cc\u06c1 \u06a9\u06cc\u0648\u06ba \u0627\u06c1\u0645\u06cc\u062a \u0631\u06a9\u06be\u062a\u0627 \u06c1\u06d2\u06d4<\/h3>\n<p>\u067e\u06cc\u06a9\u06cc\u062c \u06a9\u06cc \u0633\u0637\u062d \u06a9\u06cc \u0679\u06cc\u06a9\u0646\u0627\u0644\u0648\u062c\u06cc\u0632 \u0633\u06d2 \u067e\u06c1\u0644\u06d2\u060c \u062c\u0628 \u0622\u067e \u0641\u0644\u0679\u0631 \u067e\u0631\u0648\u062c\u06cc\u06a9\u0679 \u0645\u06cc\u06ba \u0627\u06cc\u06a9 \u0646\u06cc\u0627 \u067e\u06cc\u06a9\u062c \u0634\u0627\u0645\u0644 \u06a9\u0631\u062a\u06d2 \u06c1\u06cc\u06ba\u060c \u062a\u0648 \u0627\u06cc\u062c\u0646\u0679 \u0679\u0631\u06cc\u0646\u0646\u06af \u0688\u06cc\u0679\u0627 \u0633\u06d2 \u062c\u0627\u0646 \u0644\u06d2 \u06af\u0627 \u06a9\u06c1 \u067e\u06cc\u06a9\u062c \u0645\u0648\u062c\u0648\u062f \u06c1\u06d2\u060c \u0644\u06cc\u06a9\u0646 \u06c1\u0648 \u0633\u06a9\u062a\u0627 \u06c1\u06d2 \u0645\u0648\u062c\u0648\u062f\u06c1 API\u060c \u062a\u0631\u062c\u06cc\u062d\u06cc \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u06d2 \u0646\u0645\u0648\u0646\u0648\u06ba\u060c \u06cc\u0627 \u0639\u0627\u0645 \u063a\u0644\u0637\u06cc\u0648\u06ba \u06a9\u0648 \u0646\u06c1\u06cc\u06ba \u062c\u0627\u0646\u062a\u0627 \u06c1\u0648\u06d4 \u06cc\u06c1 \u0627\u06cc\u062c\u0646\u0679\u0648\u06ba \u06a9\u0648 \u0637\u0631\u06cc\u0642\u06c1 \u06a9\u0627\u0631 \u06a9\u06d2 \u0646\u0627\u0645\u0648\u06ba \u06a9\u0648 \u063a\u0644\u0637 \u0637\u0631\u06cc\u0642\u06d2 \u0633\u06d2 \u067e\u06cc\u0634 \u06a9\u0631\u0646\u06d2\u060c \u0641\u0631\u0633\u0648\u062f\u06c1 APIs \u06a9\u0627 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u0646\u06d2\u060c \u06cc\u0627 \u067e\u06cc\u06a9\u06cc\u062c \u06a9\u06d2 \u0645\u0635\u0646\u0641 \u06a9\u06cc \u0637\u0631\u0641 \u0633\u06d2 \u0628\u0646\u0627\u0626\u06d2 \u06af\u0626\u06d2 \u0645\u062d\u0627\u0648\u0631\u0627\u062a\u06cc \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u06d2 \u0646\u0645\u0648\u0646\u0648\u06ba \u06a9\u0648 \u06cc\u0627\u062f \u06a9\u0631\u0646\u06d2 \u06a9\u0627 \u0633\u0628\u0628 \u0628\u0646 \u0633\u06a9\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<p>\u067e\u06cc\u06a9\u06cc\u062c \u06a9\u06cc \u0633\u0637\u062d \u06a9\u06cc \u0679\u06cc\u06a9\u0646\u0627\u0644\u0648\u062c\u06cc \u06a9\u06d2 \u0633\u0627\u062a\u06be\u060c \u0627\u06cc\u062c\u0646\u0679\u0648\u06ba \u06a9\u0648 \u0628\u0631\u0627\u06c1 \u0631\u0627\u0633\u062a \u0627\u0633 \u0634\u062e\u0635 \u0633\u06d2 \u0642\u0627\u0628\u0644 \u0627\u0639\u062a\u0645\u0627\u062f \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u06cc \u06c1\u062f\u0627\u06cc\u0627\u062a \u0645\u0648\u0635\u0648\u0644 \u06c1\u0648\u062a\u06cc \u06c1\u06cc\u06ba \u062c\u0633 \u0646\u06d2 \u067e\u06cc\u06a9\u06cc\u062c \u0644\u06a9\u06be\u0627 \u062a\u06be\u0627\u06d4 \u062c\u0628 <code>go_router<\/code> \u062a\u0631\u0633\u06cc\u0644 <code>skills\/go-router-navigation.md<\/code> \u0641\u0627\u0626\u0644\u06cc\u06ba\u060c \u062a\u0645\u0627\u0645 \u0641\u0644\u0679\u0631 \u0679\u06cc\u0645\u06cc\u06ba \u0686\u0644 \u0631\u06c1\u06cc \u06c1\u06cc\u06ba\u06d4 <code>skills get<\/code> GoRouter \u06a9\u0648 \u0634\u0627\u0645\u0644 \u06a9\u0631\u0646\u06d2 \u06a9\u06d2 \u0628\u0639\u062f\u060c \u0622\u067e \u06a9\u0648 GoRouter \u0679\u06cc\u0645 \u0633\u06d2 \u0645\u06c1\u0627\u0631\u062a\u06cc\u06ba \u062d\u0627\u0635\u0644 \u06c1\u0648\u06ba \u06af\u06cc \u062a\u0627\u06a9\u06c1 \u0622\u067e \u0627\u067e\u0646\u06d2 \u0627\u06cc\u062c\u0646\u0679\u0648\u06ba \u06a9\u0648 \u0628\u0627\u0644\u06a9\u0644 \u0633\u06a9\u06be\u0627\u0626\u06cc\u06ba \u06a9\u06c1 GoRouter \u06a9\u06cc\u0633\u06d2 \u06a9\u0627\u0645 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<h3 id=\"heading-writing-skills-for-your-own-packages\">\u0622\u067e \u06a9\u06d2 \u0627\u067e\u0646\u06d2 \u067e\u06cc\u06a9\u062c\u0648\u06ba \u06a9\u06d2 \u0644\u06cc\u06d2 \u0644\u06a9\u06be\u0646\u06d2 \u06a9\u06cc \u062a\u06a9\u0646\u06cc\u06a9<\/h3>\n<p>\u0627\u06af\u0631 \u0622\u067e \u0627\u0646\u062f\u0631\u0648\u0646\u06cc \u0688\u0627\u0631\u0679 \u06cc\u0627 \u0641\u0644\u0679\u0631 \u067e\u06cc\u06a9\u062c \u06a9\u0648 \u0628\u0631\u0642\u0631\u0627\u0631 \u0631\u06a9\u06be\u062a\u06d2 \u06c1\u06cc\u06ba \u062c\u0633\u06d2 \u0622\u067e \u06a9\u06cc \u0679\u06cc\u0645 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u062a\u06cc \u06c1\u06d2\u060c \u062a\u0648 \u0627\u0646 \u06a9\u06d2 \u0630\u0631\u06cc\u0639\u06d2 \u0645\u06c1\u0627\u0631\u062a \u0641\u0631\u0627\u06c1\u0645 \u06a9\u0631\u0646\u0627 \u0627\u06cc\u06a9 \u0627\u0639\u0644\u06cc\u0670 \u0642\u06cc\u0645\u062a\u06cc \u0633\u0631\u0645\u0627\u06cc\u06c1 \u06a9\u0627\u0631\u06cc \u06c1\u06d2\u06d4<\/p>\n<pre><code class=\"language-plaintext\">my_design_system\/\n  lib\/\n    src\/\n      components\/\n    my_design_system.dart\n  skills\/\n    my-design-system-components.md    <- teaches agents how to use your components\n    my-design-system-theming.md       <- teaches agents your theming system\n  pubspec.yaml\n  README.md\n<\/code><\/pre>\n<pre><code class=\"language-markdown\">---\nname: my-design-system-components\ndescription: Use the MyDesignSystem component library for UI elements. Use when creating\nany UI elements including buttons, cards, form fields, navigation elements, or any visual\ncomponent. Apply instead of raw Material or Cupertino widgets wherever a design system\ncomponent exists.\n---\n\n# MyDesignSystem Component Usage\n\nAlways use MyDesignSystem components instead of raw Flutter widgets where equivalents exist.\n\n## Available Components\n\nDsButton replaces ElevatedButton, TextButton, and OutlinedButton.\nDsCard replaces Card.\nDsTextField replaces TextFormField.\nDsAvatar replaces CircleAvatar.\nDsChip replaces Chip.\nDsBottomSheet replaces showModalBottomSheet.\n\n## DsButton Usage\n<\/code><\/pre>\n<p>\u0646\u06c1 \u06a9\u0631\u06cc\u06ba: <code>ElevatedButton( onPressed: _onSubmit, child: const Text('Submit'), )<\/code>.<\/p>\n<p>\u062f\u0631\u062c \u0630\u06cc\u0644 \u06a9\u0627\u0645 \u06a9\u0631\u06cc\u06ba: <code>DsButton( label: 'Submit', onPressed: _onSubmit, variant: DsButtonVariant.primary, )<\/code>.<\/p>\n<pre><code class=\"language-plaintext\">\n`DsButton.variant` accepts `primary`, `secondary`, `destructive`, and `ghost`. When loading, pass `isLoading: true` to show the button's built-in loading state.\n<\/code><\/pre>\n<p>\u062c\u0628 \u0679\u06cc\u0645 \u06a9\u06d2 \u0688\u0648\u06cc\u0644\u067e\u0631\u0632 \u0686\u0644\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4 <code>skills get<\/code>\u06cc\u06c1 \u0679\u06cc\u06a9\u0646\u0627\u0644\u0648\u062c\u06cc \u06a9\u0633\u06cc \u0628\u06be\u06cc \u0633\u0631\u06a9\u0627\u0631\u06cc \u0641\u0644\u0679\u0631 \u06cc\u0627 \u0688\u0627\u0631\u0679 \u0679\u06cc\u06a9\u0646\u0627\u0644\u0648\u062c\u06cc \u06a9\u06d2 \u0633\u0627\u062a\u06be \u062e\u0648\u062f \u0628\u062e\u0648\u062f \u0627\u0646\u0633\u0679\u0627\u0644 \u06c1\u0648 \u062c\u0627\u062a\u06cc \u06c1\u06d2\u060c \u062c\u0633 \u0633\u06d2 \u0627\u06cc\u062c\u0646\u0679\u0648\u06ba \u06a9\u0648 \u0627\u0646\u062f\u0631\u0648\u0646\u06cc \u0627\u062c\u0632\u0627\u0621 \u06a9\u06cc \u0644\u0627\u0626\u0628\u0631\u06cc\u0631\u06cc\u0648\u06ba \u06a9\u0627 \u0645\u06a9\u0645\u0644 \u0639\u0644\u0645 \u062d\u0627\u0635\u0644 \u06c1\u0648\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<h2 id=\"heading-skills-vs-rules-vs-mcp-knowing-the-difference\">\u0679\u06cc\u06a9\u0646\u0627\u0644\u0648\u062c\u06cc \u0628\u0645\u0642\u0627\u0628\u0644\u06c1 \u0642\u0648\u0627\u0639\u062f \u0628\u0645\u0642\u0627\u0628\u0644\u06c1 MCP: \u0641\u0631\u0642 \u062c\u0627\u0646\u06cc\u06ba\u06d4<\/h2>\n<p>\u0627\u06cc\u062c\u0646\u0679 \u0679\u06cc\u06a9\u0646\u0627\u0644\u0648\u062c\u06cc \u062f\u0648 \u062f\u06cc\u06af\u0631 \u0627\u06cc\u062c\u0646\u0679 \u062d\u0633\u0628 \u0636\u0631\u0648\u0631\u062a \u0645\u06cc\u06a9\u0627\u0646\u0632\u0645 \u06a9\u06d2 \u0633\u0627\u062a\u06be \u0645\u0648\u062c\u0648\u062f \u06c1\u06d2: AI \u0631\u0648\u0644 \u0641\u0627\u0626\u0644\u0632 \u0627\u0648\u0631 MCP \u0633\u0631\u0648\u0631\u0632\u06d4 \u06c1\u0631 \u0627\u06cc\u06a9 \u06a9\u06d2 \u0645\u0646\u0641\u0631\u062f \u06a9\u0631\u062f\u0627\u0631 \u06a9\u0648 \u0633\u0645\u062c\u06be\u0646\u06d2 \u0633\u06d2 \u0622\u067e \u06a9\u0648 \u0627\u067e\u0646\u06d2 \u0639\u0644\u0645 \u06a9\u0648 \u0635\u062d\u06cc\u062d \u062c\u06af\u06c1 \u067e\u0631 \u0631\u06a9\u06be\u0646\u06d2 \u0645\u06cc\u06ba \u0645\u062f\u062f \u0645\u0644\u06d2 \u06af\u06cc\u06d4<\/p>\n<h3 id=\"heading-three-customization-mechanisms\">\u062a\u06cc\u0646 \u062d\u0633\u0628 \u0636\u0631\u0648\u0631\u062a \u0645\u06cc\u06a9\u0627\u0646\u0632\u0645<\/h3>\n<h4 id=\"heading-1-ai-rules-always-in-context-project-wide-facts\">1. AI \u0642\u0648\u0627\u0639\u062f (\u06c1\u0645\u06cc\u0634\u06c1 \u0633\u06cc\u0627\u0642 \u0648 \u0633\u0628\u0627\u0642 \u0645\u06cc\u06ba\u060c \u067e\u0631\u0648\u062c\u06cc\u06a9\u0679 \u06a9\u06d2 \u0648\u0633\u06cc\u0639 \u062d\u0642\u0627\u0626\u0642)\u06d4<\/h4>\n<p><code>CLAUDE.md<\/code>, <code>AGENTS.md<\/code>\u0627\u0648\u0631 <code>.cursorrules<\/code> \u0627\u0633 \u0645\u06cc\u06ba \u06c1\u0645\u06cc\u0634\u06c1 \u0627\u0633 \u0645\u0646\u0635\u0648\u0628\u06d2 \u06a9\u06d2 \u0628\u0627\u0631\u06d2 \u0645\u06cc\u06ba \u062d\u0642\u0627\u0626\u0642 \u0634\u0627\u0645\u0644 \u06c1\u0648\u0646\u06d2 \u0686\u0627\u06c1\u0626\u06cc\u06ba \u062c\u0648 \u0633\u0686 \u06c1\u06cc\u06ba\u06d4 \u06cc\u06c1 \u0641\u0627\u0626\u0644\u06cc\u06ba \u06c1\u0631 \u06a9\u0627\u0645 \u0627\u0648\u0631 \u06c1\u0631 \u0633\u06cc\u0634\u0646 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0644\u0648\u0688 \u06c1\u0648\u062a\u06cc \u06c1\u06cc\u06ba\u06d4<\/p>\n<p>\u06cc\u06c1 \u0645\u0639\u0644\u0648\u0645\u0627\u062a \u06a9\u06d2 \u0644\u06cc\u06d2 \u0628\u06c1\u062a\u0631\u06cc\u0646 \u0645\u0648\u0632\u0648\u06ba \u06c1\u06d2 \u062c\u06cc\u0633\u06d2 \u06a9\u06c1 \u067e\u0631\u0648\u062c\u06cc\u06a9\u0679 \u06a9\u0627 \u0646\u0627\u0645 \u0627\u0648\u0631 \u067e\u06cc\u06a9\u06cc\u062c \u0634\u0646\u0627\u062e\u062a \u06a9\u0646\u0646\u062f\u06c1\u060c \u0641\u0644\u0679\u0631 \u0627\u0648\u0631 \u0688\u0627\u0631\u0679 SDK \u0648\u0631\u0698\u0646\u060c \u0627\u0648\u0631 \u0628\u0646\u06cc\u0627\u062f\u06cc \u067e\u06cc\u06a9\u062c\u0632 \u062c\u06cc\u0633\u06d2: <code>flutter_bloc<\/code> \u0627\u0648\u0631 <code>go_router<\/code>\u06a9\u0645 \u0627\u0632 \u06a9\u0645 \u067e\u0644\u06cc\u0679 \u0641\u0627\u0631\u0645 \u0648\u0631\u0698\u0646\u060c \u062c\u06cc\u0633\u06d2 Android API 24 \u0627\u0648\u0631 iOS 15\u060c \u0627\u0648\u0631 \u067e\u0631\u0648\u062c\u06cc\u06a9\u0679 \u0641\u0646 \u062a\u0639\u0645\u06cc\u0631 \u06a9\u0627 \u0627\u0646\u062f\u0627\u0632\u060c \u062c\u06cc\u0633\u06d2 \u06a9\u06c1 \u0641\u06cc\u0686\u0631 \u0641\u0631\u0633\u0679 \u06cc\u0627 \u06a9\u0644\u06cc\u0646 \u0622\u0631\u06a9\u06cc\u0679\u06cc\u06a9\u0686\u0631\u06d4 \u062a\u0641\u0635\u06cc\u0644\u06cc \u06c1\u062f\u0627\u06cc\u0627\u062a \u062a\u06a9\u0646\u06cc\u06a9\u06cc \u06c1\u06cc\u06ba \u0627\u0648\u0631 \u0627\u0646\u06c1\u06cc\u06ba \u06cc\u06c1\u0627\u06ba \u0646\u06c1\u06cc\u06ba \u0631\u06a9\u06be\u0627 \u062c\u0627\u0646\u0627 \u0686\u0627\u06c1\u06cc\u06d2\u06d4<\/p>\n<h4 id=\"heading-2-skills-agentsskillsmd-loaded-progressively\">2. \u06c1\u0646\u0631 (<code>.agents\/skills\/*.md<\/code>\u0622\u06c1\u0633\u062a\u06c1 \u0622\u06c1\u0633\u062a\u06c1 \u0644\u0648\u0688 \u06a9\u06cc\u0627 \u06af\u06cc\u0627)\u06d4<\/h4>\n<p>\u0645\u06c1\u0627\u0631\u062a\u0648\u06ba \u0645\u06cc\u06ba \u0645\u062e\u0635\u0648\u0635 \u0642\u0633\u0645 \u06a9\u06d2 \u06a9\u0627\u0645\u0648\u06ba \u06a9\u0648 \u0627\u0646\u062c\u0627\u0645 \u062f\u06cc\u0646\u06d2 \u06a9\u06d2 \u0628\u0627\u0631\u06d2 \u0645\u06cc\u06ba \u06c1\u062f\u0627\u06cc\u0627\u062a \u0634\u0627\u0645\u0644 \u06c1\u0648\u0646\u06cc \u0686\u0627\u06c1\u0626\u06cc\u06ba\u06d4 \u0627\u0633\u06d2 \u0635\u0631\u0641 \u0627\u0633 \u0635\u0648\u0631\u062a \u0645\u06cc\u06ba \u0644\u0648\u0688 \u06a9\u06cc\u0627 \u062c\u0627\u0626\u06d2 \u06af\u0627 \u062c\u0628 \u0627\u06cc\u062c\u0646\u0679 \u06a9\u0648 \u067e\u062a\u06c1 \u0686\u0644 \u062c\u0627\u0626\u06d2 \u06a9\u06c1 \u06cc\u06c1 \u0645\u0648\u062c\u0648\u062f\u06c1 \u06a9\u0627\u0645 \u0633\u06d2 \u0645\u062a\u0639\u0644\u0642 \u06c1\u06d2\u06d4<\/p>\n<p>\u06cc\u06c1 \u0631\u06c1\u0646\u0645\u0627\u0626\u06cc \u06a9\u06d2 \u0644\u06cc\u06d2 \u0628\u06c1\u062a\u0631\u06cc\u0646 \u0645\u0648\u0632\u0648\u06ba \u06c1\u06d2 \u062c\u06cc\u0633\u06d2 \u0641\u0644\u0679\u0631 \u0641\u0627\u0626\u0644\u0632 \u06a9\u0648 \u06a9\u06cc\u0633\u06d2 \u0688\u06be\u0627\u0646\u0686\u06c1 \u0628\u0646\u0627\u06cc\u0627 \u062c\u0627\u0626\u06d2\u060c BLoC \u0627\u0633\u0679\u06cc\u0679 \u0645\u06cc\u0646\u062c\u0645\u0646\u0679 \u06a9\u0648 \u06a9\u06cc\u0633\u06d2 \u0644\u0627\u06af\u0648 \u06a9\u06cc\u0627 \u062c\u0627\u0626\u06d2\u060c \u0679\u06cc\u0633\u0679 \u06a9\u06cc\u0633\u06d2 \u0644\u06a9\u06be\u06cc\u06ba\u060c \u063a\u0644\u0637\u06cc\u0648\u06ba \u06a9\u0648 \u06a9\u06cc\u0633\u06d2 \u06c1\u06cc\u0646\u0688\u0644 \u06a9\u06cc\u0627 \u062c\u0627\u0626\u06d2\u060c \u0627\u0648\u0631 \u06a9\u0627\u0645 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0645\u062e\u0635\u0648\u0635 \u067e\u06cc\u0679\u0631\u0646 \u062c\u0648 \u06c1\u0645\u06cc\u0634\u06c1 \u0645\u062a\u0639\u0644\u0642\u06c1 \u0646\u06c1\u06cc\u06ba \u06c1\u0648\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4 \u067e\u0631\u0627\u062c\u06cc\u06a9\u0679 \u06a9\u06d2 \u0648\u0633\u06cc\u0639 \u062d\u0642\u0627\u0626\u0642 \u067e\u0631\u0627\u062c\u06cc\u06a9\u0679 \u06a9\u06d2 \u0642\u0648\u0627\u0639\u062f \u0633\u06d2 \u062a\u0639\u0644\u0642 \u0631\u06a9\u06be\u062a\u06d2 \u06c1\u06cc\u06ba \u0627\u0648\u0631 \u0627\u0646\u06c1\u06cc\u06ba \u062a\u0641\u0635\u06cc\u0644 \u0645\u06cc\u06ba \u0646\u06c1\u06cc\u06ba \u0631\u06a9\u06be\u0627 \u062c\u0627\u0646\u0627 \u0686\u0627\u06c1\u06cc\u06d2\u06d4<\/p>\n<h4 id=\"heading-3-mcp-servers-extend-the-agents-capabilities-with-tools\">3. MCP \u0633\u0631\u0648\u0631 (\u0622\u0644\u0627\u062a \u06a9\u0627 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u062a\u06d2 \u06c1\u0648\u0626\u06d2 \u0627\u06cc\u062c\u0646\u0679 \u06a9\u06cc \u0641\u0639\u0627\u0644\u06cc\u062a \u06a9\u0648 \u0628\u0691\u06be\u0627\u062a\u0627 \u06c1\u06d2)\u06d4<\/h4>\n<p>MCP \u0633\u0631\u0648\u0631 \u06a9\u0648 \u0627\u06cc\u062c\u0646\u0679 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0645\u062e\u0635\u0648\u0635 MCP \u06a9\u0646\u0641\u06cc\u06af\u0631\u06cc\u0634\u0646 \u06a9\u06d2 \u0630\u0631\u06cc\u0639\u06d2 \u062a\u0631\u062a\u06cc\u0628 \u062f\u06cc\u0627 \u062c\u0627\u062a\u0627 \u06c1\u06d2 \u0627\u0648\u0631 \u0627\u0633\u06d2 \u0679\u0648\u0644\u0632 \u0627\u0648\u0631 \u0628\u06cc\u0631\u0648\u0646\u06cc \u0688\u06cc\u0679\u0627 \u062a\u06a9 \u0631\u0633\u0627\u0626\u06cc \u0641\u0631\u0627\u06c1\u0645 \u06a9\u0631 \u06a9\u06d2 \u0627\u06cc\u062c\u0646\u0679 \u06a9\u06cc \u0641\u0639\u0627\u0644\u06cc\u062a \u06a9\u0648 \u0628\u0691\u06be\u0627\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u06cc\u0627 \u062c\u0627\u062a\u0627 \u06c1\u06d2\u06d4 \u0679\u0648\u0644 \u067e\u0648\u0631\u06d2 \u0633\u06cc\u0634\u0646 \u0645\u06cc\u06ba \u062f\u0633\u062a\u06cc\u0627\u0628 \u0631\u06c1\u06d2 \u06af\u0627\u06d4<\/p>\n<p>\u06cc\u06c1 \u0688\u0627\u0631\u0679 \u0627\u06cc\u0645 \u0633\u06cc \u067e\u06cc \u0633\u0631\u0648\u0631 \u06a9\u06d2 \u0630\u0631\u06cc\u0639\u06d2 \u0641\u0644\u0679\u0631 \u062f\u0633\u062a\u0627\u0648\u06cc\u0632\u0627\u062a \u06a9\u06cc \u0628\u0627\u0632\u06cc\u0627\u0641\u062a\u060c \u0688\u0627\u0631\u0679 \u0627\u06cc\u0645 \u0633\u06cc \u067e\u06cc \u0633\u0631\u0648\u0631 \u0633\u06d2 \u067e\u06cc\u06a9\u06cc\u062c \u06a9\u06cc \u0645\u0639\u0644\u0648\u0645\u0627\u062a \u06a9\u06cc \u0628\u0627\u0632\u06cc\u0627\u0641\u062a\u060c \u0627\u0648\u0631 \u0645\u0632\u06cc\u062f \u06a9\u0627\u0645\u0648\u06ba \u06a9\u06d2 \u0644\u06cc\u06d2 \u0628\u06c1\u062a\u0631\u06cc\u0646 \u06c1\u06d2\u06d4 <code>pub.dev<\/code>\u0627\u067e\u0646\u06d2 \u067e\u0631\u0648\u062c\u06cc\u06a9\u0679 \u0645\u06cc\u06ba \u0641\u0644\u0679\u0631 \u06a9\u0645\u0627\u0646\u0688\u0632 \u0686\u0644\u0627\u0626\u06cc\u06ba\u060c \u0645\u0646\u0633\u0644\u06a9 \u0622\u0644\u0627\u062a \u0633\u06d2 \u0644\u0627\u06af\u0632 \u067e\u0691\u06be\u06cc\u06ba\u060c \u0627\u0648\u0631 \u0631\u06cc\u067e\u0648\u0632\u0679\u0631\u06cc\u0632 \u0645\u06cc\u06ba \u06a9\u0648\u0688 \u062a\u0644\u0627\u0634 \u06a9\u0631\u06cc\u06ba\u06d4 \u0631\u06c1\u0646\u0645\u0627 \u062e\u0637\u0648\u0637\u060c \u0642\u0648\u0627\u0639\u062f\u060c \u0627\u0648\u0631 \u067e\u0631\u0627\u062c\u06cc\u06a9\u0679 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0645\u062e\u0635\u0648\u0635 \u0627\u0635\u0648\u0644 \u0642\u0648\u0627\u0639\u062f \u0627\u0648\u0631 \u062a\u06a9\u0646\u06cc\u06a9 \u0633\u06d2 \u062a\u0639\u0644\u0642 \u0631\u06a9\u06be\u062a\u06d2 \u06c1\u06cc\u06ba \u0627\u0648\u0631 \u0627\u0646\u06c1\u06cc\u06ba MCP \u0633\u0631\u0648\u0631 \u067e\u0631 \u0646\u06c1\u06cc\u06ba \u0631\u06a9\u06be\u0627 \u062c\u0627\u0646\u0627 \u0686\u0627\u06c1\u06cc\u06d2\u06d4<\/p>\n<p>\u0627\u06cc\u06a9 \u0645\u0641\u06cc\u062f \u06c1\u0648\u0648\u0631\u0633\u0679\u06a9: \u0627\u06af\u0631 \u0645\u0639\u0644\u0648\u0645\u0627\u062a README \u0645\u06cc\u06ba \u06c1\u06d2\u060c \u062a\u0648 \u0634\u0627\u06cc\u062f \u0627\u0633 \u06a9\u0627 \u062a\u0639\u0644\u0642 \u0642\u0648\u0627\u0639\u062f \u06a9\u06cc \u0641\u0627\u0626\u0644 \u06cc\u0627 \u0679\u06cc\u06a9\u0646\u0627\u0644\u0648\u062c\u06cc \u0645\u06cc\u06ba \u06c1\u06d2\u06d4 \u0627\u06af\u0631 \u0645\u0639\u0644\u0648\u0645\u0627\u062a \u06a9\u06d2 \u0644\u06cc\u06d2 \u0646\u06cc\u0679 \u0648\u0631\u06a9 \u06a9\u0627\u0644 \u06cc\u0627 \u067e\u0631\u0648\u06af\u0631\u0627\u0645 \u06a9\u06d2 \u0639\u0645\u0644 \u06a9\u06cc \u0636\u0631\u0648\u0631\u062a \u06c1\u06d2\u060c \u062a\u0648 \u0648\u06c1 \u0645\u0639\u0644\u0648\u0645\u0627\u062a MCP \u0633\u0631\u0648\u0631 \u0633\u06d2 \u062a\u0639\u0644\u0642 \u0631\u06a9\u06be\u062a\u06cc \u06c1\u06d2\u06d4 \u0627\u06af\u0631 \u0645\u0639\u0644\u0648\u0645\u0627\u062a \u06a9\u0627 \u062a\u0639\u0644\u0642 \u0635\u0631\u0641 \u0627\u06cc\u06a9 \u062e\u0627\u0635 \u0642\u0633\u0645 \u06a9\u06d2 \u06a9\u0627\u0645 \u0633\u06d2 \u06c1\u06d2\u060c \u062a\u0648 \u0627\u0633 \u06a9\u0627 \u062a\u0639\u0644\u0642 \u0642\u0648\u0627\u0639\u062f \u06a9\u06cc \u0641\u0627\u0626\u0644 \u06a9\u06d2 \u0628\u062c\u0627\u0626\u06d2 \u0679\u06cc\u06a9\u0646\u0627\u0644\u0648\u062c\u06cc \u0645\u06cc\u06ba \u06c1\u06d2\u06d4<\/p>\n<p>\u0627\u06cc\u06a9 \u0627\u0648\u0631 \u06c1\u0648\u0648\u0631\u0633\u0679\u06a9: \u0633\u06cc\u0627\u0642 \u0648 \u0633\u0628\u0627\u0642 \u06a9\u0627 \u0628\u062c\u0679\u06d4 \u0642\u0648\u0627\u0639\u062f \u06a9\u06cc \u0641\u0627\u0626\u0644\u06cc\u06ba \u06c1\u0645\u06cc\u0634\u06c1 \u0633\u06cc\u0627\u0642 \u0648 \u0633\u0628\u0627\u0642 \u0645\u06cc\u06ba \u06c1\u0648\u062a\u06cc \u06c1\u06cc\u06ba\u060c \u0627\u0633 \u0644\u06cc\u06d2 \u062a\u0645\u0627\u0645 \u06a9\u0627\u0631\u0631\u0648\u0627\u0626\u06cc\u0627\u06ba\u060c \u0642\u0637\u0639 \u0646\u0638\u0631 \u0627\u0633 \u0633\u06d2 \u0642\u0637\u0639 \u0646\u0638\u0631 \u06a9\u06c1 \u0633\u06cc\u0627\u0642 \u0648 \u0633\u0628\u0627\u0642 \u06a9\u06d2 \u0628\u062c\u0679 \u06a9\u0648 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u062a\u06cc \u06c1\u06cc\u06ba\u06d4 \u0627\u067e\u0646\u06d2 \u0642\u0648\u0627\u0639\u062f \u06a9\u06cc \u0641\u0627\u0626\u0644\u0648\u06ba \u06a9\u0648 \u0645\u062e\u062a\u0635\u0631 \u0631\u06a9\u06be\u06cc\u06ba (50 \u0644\u0627\u0626\u0646\u0648\u06ba \u0633\u06d2 \u06a9\u0645) \u0627\u0648\u0631 \u062d\u0642\u06cc\u0642\u062a \u067e\u0631 \u0645\u0628\u0646\u06cc\u06d4 \u06c1\u0646\u0631 \u0635\u0631\u0641 \u0645\u062a\u0639\u0644\u0642\u06c1 \u06c1\u0648\u0646\u06d2 \u067e\u0631 \u0644\u0648\u0688 \u06a9\u06cc\u06d2 \u062c\u0627\u062a\u06d2 \u06c1\u06cc\u06ba\u060c \u0627\u0633 \u0637\u0631\u062d \u0633\u06cc\u0627\u0642 \u0648 \u0633\u0628\u0627\u0642 \u06a9\u06cc \u0644\u0627\u06af\u062a \u06a9\u0648 \u06a9\u0645 \u06a9\u06cc\u0627 \u062c\u0627\u062a\u0627 \u06c1\u06d2\u06d4 \u0679\u0648\u0644 \u06a9\u0627\u0644\u0632 \u067e\u0631 \u0645\u0628\u0646\u06cc MCP \u0633\u0631\u0648\u0631\u0632 \u06a9\u0627 \u0627\u067e\u0646\u0627 \u0644\u0627\u06af\u062a \u06a9\u0627 \u0645\u0627\u0688\u0644 \u06c1\u06d2\u06d4<\/p>\n<h2 id=\"heading-organizing-skills-in-a-team\">\u0679\u06cc\u0645\u0648\u06ba \u06a9\u06d2 \u0627\u0646\u062f\u0631 \u0645\u06c1\u0627\u0631\u062a\u0648\u06ba \u06a9\u06cc \u062a\u0646\u0638\u06cc\u0645<\/h2>\n<h3 id=\"heading-skills-as-shared-team-knowledge\">\u0645\u0634\u062a\u0631\u06a9\u06c1 \u0679\u06cc\u0645 \u06a9\u06d2 \u0639\u0644\u0645 \u06a9\u06d2 \u0637\u0648\u0631 \u067e\u0631 \u06c1\u0646\u0631<\/h3>\n<p>\u06a9\u06c1 <code>.agents\/skills\/<\/code> \u0688\u0627\u0626\u0631\u06a9\u0679\u0631\u06cc \u06a9\u0648 \u06af\u0679 \u0631\u06cc\u067e\u0648\u0632\u0679\u0631\u06cc \u0633\u06d2 \u0648\u0627\u0628\u0633\u062a\u06c1 \u06c1\u0648\u0646\u0627 \u0636\u0631\u0648\u0631\u06cc \u06c1\u06d2\u06d4 \u062c\u0628 \u0622\u067e \u06a9\u0633\u06cc \u0645\u06c1\u0627\u0631\u062a \u06a9\u0627 \u0627\u0631\u062a\u06a9\u0627\u0628 \u06a9\u0631\u062a\u06d2 \u06c1\u06cc\u06ba\u060c \u062a\u0648 \u0622\u067e \u06a9\u06cc \u0679\u06cc\u0645 \u06a9\u06d2 \u06c1\u0631 \u0688\u0648\u06cc\u0644\u067e\u0631 \u06a9\u0648 \u0627\u06af\u0644\u06cc \u0628\u0627\u0631 \u0648\u06c1 \u0645\u06c1\u0627\u0631\u062a \u062d\u0627\u0635\u0644 \u06c1\u0648\u062a\u06cc \u06c1\u06d2\u06d4 <code>git pull<\/code>. \u062c\u0628 \u06a9\u0648\u0626\u06cc \u0646\u06cc\u0627 \u0688\u0648\u06cc\u0644\u067e\u0631 \u0634\u0627\u0645\u0644 \u06c1\u0648\u062a\u0627 \u06c1\u06d2\u060c \u062a\u0648 \u0648\u06c1 \u0630\u062e\u06cc\u0631\u06c1 \u06a9\u0648 \u06a9\u0644\u0648\u0646 \u06a9\u0631\u062a\u06d2 \u06c1\u06cc\u06ba \u0627\u0648\u0631 \u0641\u0648\u0631\u06cc \u0637\u0648\u0631 \u067e\u0631 \u062c\u0645\u0639 \u0634\u062f\u06c1 \u062a\u06a9\u0646\u06cc\u06a9\u06cc \u0639\u0644\u0645 \u062d\u0627\u0635\u0644 \u06a9\u0631\u062a\u06d2 \u06c1\u06cc\u06ba \u062c\u0648 \u0679\u06cc\u0645 \u0646\u06d2 \u0628\u0646\u0627\u06cc\u0627 \u06c1\u06d2\u06d4 \u062c\u0628 \u06a9\u0648\u0626\u06cc \u067e\u0631\u0648\u0688\u06a9\u0634\u0646 \u06a9\u06d2 \u0648\u0627\u0642\u0639\u06d2 \u0633\u06d2 \u0645\u06c1\u0627\u0631\u062a\u06cc\u06ba \u0644\u06a9\u06be\u062a\u0627 \u06c1\u06d2\u060c \u062a\u0648 \u0648\u06c1 \u0627\u0633\u0628\u0627\u0642 \u0627\u0633 \u06a9\u0648\u0688 \u06a9\u06d2 \u0633\u0627\u062a\u06be \u0630\u062e\u06cc\u0631\u06c1 \u0645\u06cc\u06ba \u0645\u062d\u0641\u0648\u0638 \u06a9\u06cc\u06d2 \u062c\u0627\u062a\u06d2 \u06c1\u06cc\u06ba \u062c\u0633 \u06a9\u06cc \u0648\u06c1 \u062d\u0641\u0627\u0638\u062a \u06a9\u0631\u062a\u06cc \u06c1\u06d2\u06d4<\/p>\n<p>\u06cc\u06c1 \u0679\u06cc\u06a9\u0646\u0627\u0644\u0648\u062c\u06cc \u06a9\u0648 \u0627\u06cc\u06a9 \u0632\u0646\u062f\u06c1 \u0627\u062f\u0627\u0631\u06c1 \u062c\u0627\u062a\u06cc \u0639\u0644\u0645\u06cc \u0646\u0638\u0627\u0645 \u0628\u0646\u0627\u062a\u0627 \u06c1\u06d2\u06d4 \u062a\u06a9\u0646\u06cc\u06a9\u06cc \u0641\u0627\u0626\u0644 \u0628\u06cc\u06a9 \u0648\u0642\u062a AI \u0627\u06cc\u062c\u0646\u0679\u0648\u06ba \u06a9\u06d2 \u0644\u06cc\u06d2 \u0627\u06cc\u06a9 \u0631\u06c1\u0646\u0645\u0627 \u0627\u0648\u0631 \u062e\u0648\u062f \u0645\u0639\u06cc\u0627\u0631\u06cc \u062f\u0633\u062a\u0627\u0648\u06cc\u0632 \u06c1\u06d2\u06d4 \u0648\u06a9\u06cc \u067e\u06cc\u062c\u0632 \u06cc\u0627 \u06a9\u0646\u0641\u0644\u0648\u0626\u0646\u0633 \u0622\u0631\u0679\u06cc\u06a9\u0644\u0632 \u06a9\u06d2 \u0628\u0631\u0639\u06a9\u0633\u060c \u0679\u06cc\u06a9\u0646\u0627\u0644\u0648\u062c\u06cc\u0632 \u06a9\u0648 \u0627\u06cc\u0633\u06d2 \u0679\u0648\u0644\u0632 \u06a9\u06d2 \u0630\u0631\u06cc\u0639\u06d2 \u067e\u0691\u06be\u0627 \u062c\u0627\u062a\u0627 \u06c1\u06d2 \u062c\u0648 \u0627\u0635\u0644 \u0645\u06cc\u06ba \u06a9\u0648\u0688 \u062a\u06cc\u0627\u0631 \u06a9\u0631\u062a\u06d2 \u06c1\u06cc\u06ba\u060c \u0646\u06c1 \u0635\u0631\u0641 \u0627\u0646 \u0688\u0648\u06cc\u0644\u067e\u0631\u0632 \u06a9\u06d2 \u0630\u0631\u06cc\u0639\u06d2 \u062c\u0648 \u0627\u0646 \u06a9\u0648 \u0644\u0627\u06af\u0648 \u06a9\u0631\u0646\u0627 \u06cc\u0627\u062f \u0631\u06a9\u06be \u0633\u06a9\u062a\u06d2 \u06c1\u06cc\u06ba \u06cc\u0627 \u0646\u06c1\u06cc\u06ba \u06a9\u0631\u0633\u06a9\u062a\u06d2\u06d4<\/p>\n<h3 id=\"heading-skill-review-process\">\u062a\u06a9\u0646\u06cc\u06a9\u06cc \u062c\u0627\u0626\u0632\u06c1 \u0644\u06cc\u0646\u06d2 \u06a9\u0627 \u0639\u0645\u0644<\/h3>\n<p>\u062a\u06a9\u0646\u06cc\u06a9\u06cc \u0641\u0627\u0626\u0644 \u06a9\u06cc \u062a\u0628\u062f\u06cc\u0644\u06cc\u0648\u06ba \u06a9\u0648 \u06a9\u0648\u0688 \u06a9\u06cc \u062a\u0628\u062f\u06cc\u0644\u06cc\u0648\u06ba \u06a9\u06d2 \u0637\u0648\u0631 \u067e\u0631 \u0627\u0633\u06cc \u067e\u0644 \u06a9\u06cc \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u067e\u0631 \u0646\u0638\u0631\u062b\u0627\u0646\u06cc \u06a9\u06d2 \u0639\u0645\u0644 \u0633\u06d2 \u06af\u0632\u0631\u0646\u0627 \u0686\u0627\u06c1\u06cc\u06d2\u06d4 \u0648\u06c1 \u0645\u06c1\u0627\u0631\u062a\u06cc\u06ba \u062c\u0648 \u0642\u0648\u0627\u0639\u062f \u06a9\u0648 \u063a\u0644\u0637 \u0637\u0631\u06cc\u0642\u06d2 \u0633\u06d2 \u0627\u0646\u06a9\u0648\u0688 \u06a9\u0631\u062a\u06cc \u06c1\u06cc\u06ba \u06cc\u0627 \u0628\u06c1\u062a \u0645\u0628\u06c1\u0645 \u0637\u0648\u0631 \u067e\u0631 \u0642\u0648\u0627\u0639\u062f \u06a9\u0627 \u0627\u0638\u06c1\u0627\u0631 \u06a9\u0631\u062a\u06cc \u06c1\u06cc\u06ba \u0648\u06c1 \u067e\u0648\u0631\u06cc \u0679\u06cc\u0645 \u06a9\u06d2 \u0627\u06cc\u062c\u0646\u0679 \u06a9\u06d2 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u0645\u06cc\u06ba \u0627\u0633 \u0648\u0642\u062a \u062a\u06a9 \u063a\u0644\u0637 \u0622\u0624\u0679 \u067e\u0679 \u067e\u06cc\u062f\u0627 \u06a9\u0631 \u0633\u06a9\u062a\u06cc \u06c1\u06cc\u06ba \u062c\u0628 \u062a\u06a9 \u06a9\u06c1 \u0627\u0646 \u06a9\u0648 \u062f\u0631\u0633\u062a \u0646\u06c1\u06cc\u06ba \u06a9\u06cc\u0627 \u062c\u0627\u062a\u0627\u06d4<\/p>\n<p>\u062a\u06a9\u0646\u06cc\u06a9\u06cc \u062a\u0628\u062f\u06cc\u0644\u06cc\u0648\u06ba \u06a9\u0648 \u0636\u0645 \u06a9\u0631\u0646\u06d2 \u0633\u06d2 \u067e\u06c1\u0644\u06d2 \u0686\u06cc\u06a9 \u06a9\u0631\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u06cc\u06c1\u0627\u06ba \u0627\u06cc\u06a9 \u062a\u06a9\u0646\u06cc\u06a9\u06cc \u062c\u0627\u0626\u0632\u06c1 \u0686\u06cc\u06a9 \u0644\u0633\u0679 \u06c1\u06d2:<\/p>\n<ul>\n<li>\n<p>\u062a\u0641\u0635\u06cc\u0644 \u0627\u0646 \u0635\u0648\u0631\u062a\u0648\u06ba \u06a9\u0648 \u062f\u0631\u0633\u062a \u0627\u0648\u0631 \u0645\u06a9\u0645\u0644 \u0637\u0648\u0631 \u067e\u0631 \u0628\u06cc\u0627\u0646 \u06a9\u0631\u062a\u06cc \u06c1\u06d2 \u062c\u0646 \u0645\u06cc\u06ba \u0627\u0633 \u062a\u06a9\u0646\u06cc\u06a9 \u06a9\u0627 \u0627\u0637\u0644\u0627\u0642 \u06c1\u0648\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<\/li>\n<li>\n<p>\u062a\u0645\u0627\u0645 \u0627\u0635\u0648\u0644 \u0645\u062e\u0635\u0648\u0635 \u06c1\u06cc\u06ba \u0627\u0648\u0631 \u0645\u0628\u06c1\u0645 \u0631\u06c1\u0646\u0645\u0627 \u062e\u0637\u0648\u0637 \u0646\u06c1\u06cc\u06ba \u062c\u0648 \u0627\u06cc\u06a9 \u0645\u0634\u06cc\u0631 \u06a9\u06d2 \u0631\u0648\u06cc\u06d2 \u06a9\u0648 \u062a\u0628\u062f\u06cc\u0644 \u06a9\u0631 \u0633\u06a9\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4<\/p>\n<\/li>\n<li>\n<p>\u062a\u0631\u0628\u06cc\u062a\u06cc \u0688\u06cc\u0679\u0627 \u0645\u06cc\u06ba \u0645\u0634\u062a\u0631\u06a9\u06c1 \u0646\u0645\u0648\u0646\u0648\u06ba \u06a9\u06d2 \u0644\u06cc\u06d2 \u062c\u0648\u0627\u0628\u06cc \u0645\u062b\u0627\u0644\u06cc\u06ba \u0641\u0631\u0627\u06c1\u0645 \u06a9\u06cc \u062c\u0627\u062a\u06cc \u06c1\u06cc\u06ba\u06d4<\/p>\n<\/li>\n<li>\n<p>\u06a9\u0648\u0688 \u06a9\u06cc \u0645\u062b\u0627\u0644\u06cc\u06ba \u0622\u0632\u0627\u062f\u0627\u0646\u06c1 \u0627\u0648\u0631 \u0635\u062d\u06cc\u062d \u0637\u0631\u06cc\u0642\u06d2 \u0633\u06d2 \u0645\u0631\u062a\u0628 \u06a9\u0631\u062a\u06cc \u06c1\u06cc\u06ba\u06d4<\/p>\n<\/li>\n<li>\n<p>\u06cc\u06c1 \u0645\u06c1\u0627\u0631\u062a \u062f\u06cc\u06af\u0631 \u0645\u06c1\u0627\u0631\u062a\u0648\u06ba \u0633\u06d2 \u0645\u0648\u0627\u062f \u06a9\u06cc \u0646\u0642\u0644 \u0646\u06c1\u06cc\u06ba \u06a9\u0631\u062a\u06cc \u06c1\u06d2\u06d4<\/p>\n<\/li>\n<li>\n<p>\u0627\u06cc\u062c\u0646\u0679 \u06a9\u0648 \u0645\u062a\u0639\u0644\u0642\u06c1 \u06a9\u0627\u0645 \u0627\u0646\u062c\u0627\u0645 \u062f\u06cc\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u06a9\u06c1\u06c1 \u06a9\u0631 \u0627\u0648\u0631 \u0627\u0633 \u0628\u0627\u062a \u06a9\u06cc \u062a\u0635\u062f\u06cc\u0642 \u06a9\u0631 \u06a9\u06d2 \u0645\u06c1\u0627\u0631\u062a \u06a9\u06cc \u062c\u0627\u0646\u0686 \u06a9\u06cc \u06af\u0626\u06cc \u06a9\u06c1 \u0622\u0624\u0679 \u067e\u0679 \u0646\u06d2 \u0645\u06c1\u0627\u0631\u062a \u06a9\u06d2 \u0627\u0635\u0648\u0644\u0648\u06ba \u067e\u0631 \u0639\u0645\u0644 \u06a9\u06cc\u0627\u06d4<\/p>\n<\/li>\n<li>\n<p>\u0679\u06cc\u06a9\u0646\u0627\u0644\u0648\u062c\u06cc \u06a9\u0627 \u062c\u0627\u0626\u0632\u06c1 \u0679\u06cc\u0645 \u06a9\u06d2 \u06a9\u0645 \u0627\u0632 \u06a9\u0645 \u0627\u06cc\u06a9 \u062f\u0648\u0633\u0631\u06d2 \u0631\u06a9\u0646 \u0646\u06d2 \u0644\u06cc\u0627 \u06c1\u06d2 \u062c\u0648 \u0627\u0633\u06d2 \u0627\u067e\u0646\u06d2 \u0631\u0648\u0632\u0645\u0631\u06c1 \u06a9\u06d2 \u06a9\u0627\u0645 \u0645\u06cc\u06ba \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u06cc\u06ba \u06af\u06d2\u06d4<\/p>\n<\/li>\n<\/ul>\n<h3 id=\"heading-keeping-skills-current\">\u0627\u067e\u0646\u06cc \u0679\u06cc\u06a9\u0646\u0627\u0644\u0648\u062c\u06cc \u06a9\u0648 \u0627\u067e \u0679\u0648 \u0688\u06cc\u0679 \u0631\u06a9\u06be\u06cc\u06ba<\/h3>\n<p>\u062c\u0628 \u06a9\u0633\u06cc \u0679\u06cc\u0645 \u06a9\u06d2 \u0627\u0635\u0648\u0644 \u0628\u062f\u0644\u062a\u06d2 \u06c1\u06cc\u06ba \u062a\u0648 \u0679\u06cc\u06a9\u0646\u0627\u0644\u0648\u062c\u06cc \u067e\u0631\u0627\u0646\u06cc \u06c1\u0648 \u062c\u0627\u062a\u06cc \u06c1\u06d2\u06d4 \u0686\u0627\u06c1\u06d2 \u0622\u067e \u0627\u06cc\u06a9 \u0646\u06cc\u0648\u06cc\u06af\u06cc\u0634\u0646 \u0644\u0627\u0626\u0628\u0631\u06cc\u0631\u06cc \u0633\u06d2 \u062f\u0648\u0633\u0631\u06cc \u0645\u06cc\u06ba \u0645\u0646\u062a\u0642\u0644 \u06c1\u0648 \u0631\u06c1\u06d2 \u06c1\u0648\u06ba\u060c \u0627\u06cc\u06a9 \u0646\u06cc\u0627 \u0679\u06cc\u0633\u0679\u0646\u06af \u0641\u0631\u06cc\u0645 \u0648\u0631\u06a9 \u0627\u067e\u0646\u0627 \u0631\u06c1\u06d2 \u06c1\u0648\u06ba\u060c \u0627\u067e\u0646\u06d2 \u0688\u06cc\u0632\u0627\u0626\u0646 \u06a9\u06d2 \u0646\u0638\u0627\u0645 \u06a9\u0648 \u0627\u067e \u0688\u06cc\u0679 \u06a9\u0631 \u0631\u06c1\u06d2 \u06c1\u0648\u06ba\u060c \u06cc\u0627 \u0627\u067e\u0646\u06cc \u063a\u0644\u0637\u06cc \u0633\u06d2 \u0646\u0645\u0679\u0646\u06d2 \u06a9\u06d2 \u0637\u0631\u06cc\u0642\u06c1 \u06a9\u0627\u0631 \u06a9\u0648 \u0631\u06cc \u0641\u06cc\u06a9\u0679\u0631 \u06a9\u0631 \u0631\u06c1\u06d2 \u06c1\u0648\u06ba\u06d4 \u067e\u0631\u0627\u0646\u06cc \u0679\u06cc\u06a9\u0646\u0627\u0644\u0648\u062c\u06cc \u06a9\u0633\u06cc \u0679\u06cc\u06a9\u0646\u0627\u0644\u0648\u062c\u06cc \u0633\u06d2 \u0628\u062f\u062a\u0631 \u06c1\u06d2 \u06a9\u06cc\u0648\u0646\u06a9\u06c1 \u06cc\u06c1 \u0627\u06cc\u062c\u0646\u0679\u0648\u06ba \u06a9\u0648 \u0641\u0639\u0627\u0644 \u0637\u0648\u0631 \u067e\u0631 \u0641\u0631\u0633\u0648\u062f\u06c1 \u0646\u0645\u0648\u0646\u0648\u06ba \u0645\u06cc\u06ba \u0644\u06d2 \u062c\u0627\u062a\u06cc \u06c1\u06d2\u06d4<\/p>\n<p>\u0627\u0646\u062d\u0635\u0627\u0631 \u0627\u067e \u06af\u0631\u06cc\u0688 \u06a9\u0648 \u062a\u06a9\u0646\u06cc\u06a9\u06cc \u062c\u0627\u0626\u0632\u06d2 \u06a9\u06d2 \u0645\u062d\u0631\u06a9\u0627\u062a \u06a9\u06d2 \u0637\u0648\u0631 \u067e\u0631 \u0633\u0645\u062c\u06be\u06cc\u06ba\u06d4 \u0627\u067e \u06af\u0631\u06cc\u0688 \u06a9\u0631\u062a\u06d2 \u0648\u0642\u062a <code>go_router<\/code> \u0627\u06af\u0631 \u0622\u067e \u0646\u0626\u06d2 \u0628\u0691\u06d2 \u0648\u0631\u0698\u0646 \u067e\u0631 \u062c\u0627 \u0631\u06c1\u06d2 \u06c1\u06cc\u06ba\u060c \u062a\u0648 \u0627\u067e\u0646\u06cc \u0646\u06cc\u0648\u06cc\u06af\u06cc\u0634\u0646 \u062a\u06a9\u0646\u06cc\u06a9 \u06a9\u0627 \u062c\u0627\u0626\u0632\u06c1 \u0644\u06cc\u06ba \u062a\u0627\u06a9\u06c1 \u06cc\u06c1 \u06cc\u0642\u06cc\u0646\u06cc \u0628\u0646\u0627\u06cc\u0627 \u062c\u0627 \u0633\u06a9\u06d2 \u06a9\u06c1 \u0648\u06c1 \u0645\u0648\u062c\u0648\u062f\u06c1 API \u06a9\u06cc \u0639\u06a9\u0627\u0633\u06cc \u06a9\u0631\u062a\u06cc \u06c1\u06cc\u06ba\u06d4 \u0627\u06af\u0631 \u0622\u067e \u0627\u067e\u0646\u06cc \u0679\u06cc\u0645 \u06a9\u06d2 \u0633\u0627\u0628\u0642\u06c1 \u200b\u200b\u0627\u0646\u062f\u0627\u0632 \u0645\u06cc\u06ba \u0627\u06cc\u06a9 \u0646\u06cc\u0627 \u0646\u0645\u0648\u0646\u06c1 \u0627\u067e\u0646\u0627\u062a\u06d2 \u06c1\u06cc\u06ba\u060c \u062a\u0648 \u0627\u0633\u06cc PR \u0645\u06cc\u06ba \u0645\u062a\u0639\u0644\u0642\u06c1 \u062a\u06a9\u0646\u06cc\u06a9\u0648\u06ba \u06a9\u0648 \u0627\u067e \u0688\u06cc\u0679 \u06a9\u0631\u06cc\u06ba\u06d4<\/p>\n<h3 id=\"heading-skill-discoverability-within-your-team\">\u0679\u06cc\u0645 \u06a9\u06d2 \u0627\u0646\u062f\u0631 \u0645\u06c1\u0627\u0631\u062a \u06a9\u06cc \u062f\u0631\u06cc\u0627\u0641\u062a \u06a9\u0627 \u0627\u0645\u06a9\u0627\u0646<\/h3>\n<p>\u062c\u06cc\u0633\u06d2 \u062c\u06cc\u0633\u06d2 \u0679\u06cc\u06a9\u0646\u0627\u0644\u0648\u062c\u06cc \u0644\u0627\u0626\u0628\u0631\u06cc\u0631\u06cc \u0628\u0691\u06be\u062a\u06cc \u06c1\u06d2\u060c \u0688\u0648\u06cc\u0644\u067e\u0631\u0632 \u06a9\u0648 \u0627\u067e\u0646\u06d2 \u06a9\u0627\u0645 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0635\u062d\u06cc\u062d \u0679\u06cc\u06a9\u0646\u0627\u0644\u0648\u062c\u06cc \u062a\u0644\u0627\u0634 \u06a9\u0631\u0646\u06d2 \u06a9\u06d2 \u0642\u0627\u0628\u0644 \u06c1\u0648\u0646\u06d2 \u06a9\u06cc \u0636\u0631\u0648\u0631\u062a \u06c1\u0648\u062a\u06cc \u06c1\u06d2\u06d4 \u0645\u0633\u0644\u0633\u0644 \u0646\u0627\u0645 \u062f\u06cc\u0646\u06d2 \u06a9\u06d2 \u06a9\u0646\u0648\u0646\u0634\u0646\u0632 \u06a9\u0648 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u0646\u06d2 \u0627\u0648\u0631 \u0627\u06cc\u06a9 \u0633\u0627\u062f\u06c1 \u062a\u06a9\u0646\u06cc\u06a9\u06cc \u0627\u0634\u0627\u0631\u06cc\u06c1 \u06a9\u0648 \u0628\u0631\u0642\u0631\u0627\u0631 \u0631\u06a9\u06be\u0646\u06d2 \u067e\u0631 \u063a\u0648\u0631 \u06a9\u0631\u06cc\u06ba\u06d4<\/p>\n<pre><code class=\"language-markdown\"># .agents\/skills\/README.md (not a skill, just an index)\n\n## Flutter Skills\nflutter-feature-architecture      -- Feature folder structure and layer rules\nflutter-bloc-state-management     -- Bloc events, states, and widget integration\nflutter-file-organization         -- File splitting, extraction, and naming\nflutter-error-handling            -- Typed failures and Either return types\nflutter-navigation                -- GoRouter routes, navigation methods, deep links\nflutter-theming                   -- Design tokens, color extensions, spacing constants\nflutter-testing                   -- Widget tests, Bloc tests, and test naming\nflutter-accessibility             -- Semantic labels, focus, and touch targets\nflutter-performance               -- Const widgets, selective rebuilds, list optimization\n\n## Dart Skills\ndart-models-freezed               -- Freezed models, json_serializable, DTOs\ndart-testing-conventions          -- package:test conventions, mocktail, async testing\ndart-pattern-matching-idiomatic   -- Switch expressions, sealed classes, destructuring\ndart-run-static-analysis          -- analysis_options.yaml, dart analyze, dart fix\n<\/code><\/pre>\n<p>\u06cc\u06c1 \u0627\u0646\u0688\u06cc\u06a9\u0633 \u0627\u06cc\u062c\u0646\u0679 \u06a9\u06d2 \u0630\u0631\u06cc\u0639\u06c1 \u067e\u0691\u06be\u0646\u06d2 \u06a9\u06d2 \u0642\u0627\u0628\u0644 \u0646\u06c1\u06cc\u06ba \u06c1\u06d2\u06d4 <code>README.md<\/code>(\u0645\u06c1\u0627\u0631\u062a \u06a9\u06cc \u0641\u0627\u0626\u0644\u06cc\u06ba \u0646\u06c1\u06cc\u06ba)\u06d4 \u0688\u0648\u06cc\u0644\u067e\u0631\u0632 \u06a9\u06d2 \u0644\u06cc\u06d2 \u062c\u0648 \u06a9\u0633\u06cc \u067e\u0631\u0648\u062c\u06cc\u06a9\u0679 \u0645\u06cc\u06ba \u0646\u0626\u06d2 \u06c1\u06cc\u06ba \u0627\u0648\u0631 \u06cc\u06c1 \u062c\u0627\u0646\u0646\u0627 \u0686\u0627\u06c1\u062a\u06d2 \u06c1\u06cc\u06ba \u06a9\u06c1 \u0627\u06cc\u062c\u0646\u0679 \u0633\u06d2 \u06a9\u0627\u0645 \u06a9\u0631\u0646\u06d2 \u06a9\u0648 \u06a9\u06c1\u0646\u06d2 \u0633\u06d2 \u067e\u06c1\u0644\u06d2 \u06a9\u0648\u0646 \u0633\u06cc \u0645\u06c1\u0627\u0631\u062a\u06cc\u06ba \u062f\u0633\u062a\u06cc\u0627\u0628 \u06c1\u06cc\u06ba\u06d4<\/p>\n<h2 id=\"heading-best-practices-for-writing-skills\">\u0644\u06a9\u06be\u0646\u06d2 \u06a9\u06cc \u0645\u06c1\u0627\u0631\u062a \u06a9\u06d2 \u0644\u06cc\u06d2 \u0628\u06c1\u062a\u0631\u06cc\u0646 \u0637\u0631\u06cc\u0642\u06d2<\/h2>\n<h3 id=\"heading-start-from-real-mistakes-not-ideal-patterns\">\u062d\u0642\u06cc\u0642\u06cc \u063a\u0644\u0637\u06cc\u0648\u06ba \u0633\u06d2 \u0634\u0631\u0648\u0639 \u06a9\u0631\u06cc\u06ba\u060c \u0645\u062b\u0627\u0644\u06cc \u0646\u0645\u0648\u0646\u0648\u06ba \u0633\u06d2 \u0646\u06c1\u06cc\u06ba\u06d4<\/h3>\n<p>\u0633\u0628 \u0633\u06d2 \u0645\u0624\u062b\u0631 \u062a\u06a9\u0646\u06cc\u06a9 \u0627\u06cc\u06a9 \u0645\u062e\u0635\u0648\u0635 \u0627\u0648\u0631 \u062f\u0648\u0628\u0627\u0631\u06c1 \u067e\u06cc\u062f\u0627 \u06a9\u0631\u0646\u06d2 \u06a9\u06d2 \u0642\u0627\u0628\u0644 \u0637\u0631\u06cc\u0642\u06d2 \u0633\u06d2 \u0646\u0627\u0642\u0635 AI \u0633\u06d2 \u062a\u06cc\u0627\u0631 \u06a9\u0631\u062f\u06c1 \u06a9\u0648\u0688 \u06a9\u0627 \u0645\u0634\u0627\u06c1\u062f\u06c1 \u06a9\u0631\u0646\u06d2 \u0633\u06d2 \u0622\u062a\u06cc \u06c1\u06d2\u06d4 \u063a\u0644\u0637\u06cc\u0627\u06ba \u0627\u0633 \u0628\u0627\u062a \u06a9\u0627 \u062b\u0628\u0648\u062a \u06c1\u06cc\u06ba \u06a9\u06c1 \u0627\u06cc\u062c\u0646\u0679 \u06a9\u06d2 \u067e\u06c1\u0644\u06d2 \u0633\u06d2 \u0637\u06d2 \u0634\u062f\u06c1 \u0631\u0648\u06cc\u06d2 \u06a9\u0648 \u067e\u0631\u0648\u062c\u06cc\u06a9\u0679 \u0645\u06cc\u06ba \u062a\u0631\u0645\u06cc\u0645 \u06a9\u06cc \u0636\u0631\u0648\u0631\u062a \u06c1\u06d2\u06d4 \u062c\u0628 \u0628\u06be\u06cc \u0622\u067e AI \u0622\u0624\u0679 \u067e\u0679 \u06a9\u0648 \u062f\u0633\u062a\u06cc \u0637\u0648\u0631 \u067e\u0631 \u062a\u0631\u0645\u06cc\u0645 \u06a9\u0631\u062a\u06d2 \u06c1\u06cc\u06ba\u060c \u0648\u06c1 \u062a\u0631\u0645\u06cc\u0645 \u0627\u06cc\u06a9 \u0645\u06c1\u0627\u0631\u062a \u06a9\u0627 \u0627\u0635\u0648\u0644 \u06c1\u06d2\u06d4<\/p>\n<p>\u0645\u062b\u0627\u0644\u06cc \u067e\u06cc\u0679\u0631\u0646 \u06a9\u06cc \u062a\u06a9\u0646\u06cc\u06a9 (\"\u0646\u0638\u0631\u06cc\u06c1 \u0645\u06cc\u06ba\u060c \u0628\u0644\u0627\u06a9 \u0627\u0633 \u0637\u0631\u062d \u06a9\u0627\u0645 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\") \u063a\u0644\u0637\u06cc \u06a9\u06cc \u0627\u0635\u0644\u0627\u062d \u06a9\u06cc \u062a\u06a9\u0646\u06cc\u06a9\u0648\u06ba \u0633\u06d2 \u06a9\u0645 \u0645\u0648\u062b\u0631 \u06c1\u06cc\u06ba (\"\u0627\u06cc\u062c\u0646\u0679 \u06c1\u0645\u06cc\u0634\u06c1 X \u067e\u06cc\u062f\u0627 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u060c \u0644\u06cc\u06a9\u0646 \u06c1\u0645\u06cc\u06ba Y \u06a9\u06cc \u0636\u0631\u0648\u0631\u062a \u06c1\u06d2\u060c \u0644\u06c1\u0630\u0627 \u0627\u0635\u0648\u0644 Z \u06c1\u06d2\")\u06d4 \u063a\u0644\u0637\u06cc\u0627\u06ba \u0622\u067e \u06a9\u0648 \u0628\u062a\u0627\u062a\u06cc \u06c1\u06cc\u06ba \u06a9\u06c1 \u0622\u067e \u06a9\u0627 \u062a\u0631\u0628\u06cc\u062a\u06cc \u0688\u06cc\u0679\u0627 \u0627\u0635\u0648\u0644\u0648\u06ba \u0633\u06d2 \u06a9\u06c1\u0627\u06ba \u0627\u0646\u062d\u0631\u0627\u0641 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4 \u0642\u0648\u0627\u0639\u062f \u0627\u0633 \u06a9\u0648 \u0679\u06be\u06cc\u06a9 \u06a9\u0631\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4<\/p>\n<h3 id=\"heading-test-skills-before-committing\">\u0627\u0631\u062a\u06a9\u0627\u0628 \u06a9\u0631\u0646\u06d2 \u0633\u06d2 \u067e\u06c1\u0644\u06d2 \u0627\u067e\u0646\u06cc \u0635\u0644\u0627\u062d\u06cc\u062a\u0648\u06ba \u06a9\u06cc \u062c\u0627\u0646\u0686 \u06a9\u0631\u06cc\u06ba\u06d4<\/h3>\n<p>\u0627\u06cc\u06a9 \u0645\u06c1\u0627\u0631\u062a \u067e\u06cc\u062f\u0627 \u06a9\u0631\u0646\u06d2 \u06a9\u06d2 \u0628\u0639\u062f\u060c \u0627\u06cc\u062c\u0646\u0679\u0648\u06ba \u06a9\u0648 \u06c1\u0646\u0631 \u06a9\u06d2 \u062a\u062d\u062a \u06a9\u0627\u0645 \u06a9\u0631\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u06a9\u06c1\u06c1 \u06a9\u0631 \u0627\u0633 \u06a9\u06cc \u062c\u0627\u0646\u0686 \u06a9\u0631\u06cc\u06ba\u06d4 \u0627\u067e\u0646\u06d2 \u0627\u06cc\u062c\u0646\u0679\u0648\u06ba \u0633\u06d2 \u0628\u0644\u0627\u06a9 \u0627\u0633\u0679\u06cc\u0679 \u0645\u06cc\u0646\u062c\u0645\u0646\u0679 \u06a9\u06d2 \u0633\u0627\u062a\u06be \u0646\u0626\u06cc \u0627\u0633\u06a9\u0631\u06cc\u0646\u06cc\u06ba \u0628\u0646\u0627\u0646\u06d2\u060c \u0628\u0691\u06cc \u0641\u0627\u0626\u0644\u0648\u06ba \u06a9\u0648 \u062a\u0642\u0633\u06cc\u0645 \u06a9\u0631\u0646\u06d2\u060c \u06cc\u0627 \u0627\u067e\u0646\u06d2 \u0631\u06cc\u067e\u0648\u0632\u0679\u0631\u06cc \u06a9\u06d2 \u0644\u06cc\u06d2 \u06cc\u0648\u0646\u0679 \u0679\u06cc\u0633\u0679 \u0644\u06a9\u06be\u0646\u06d2 \u06a9\u0648 \u06a9\u06c1\u06cc\u06ba\u06d4 \u067e\u06be\u0631 \u06cc\u0642\u06cc\u0646\u06cc \u0628\u0646\u0627\u0626\u06cc\u06ba \u06a9\u06c1 \u0622\u0624\u0679 \u067e\u0679 \u062a\u06a9\u0646\u06cc\u06a9 \u06a9\u06d2 \u062a\u0645\u0627\u0645 \u0627\u0635\u0648\u0644\u0648\u06ba \u06a9\u06cc \u067e\u06cc\u0631\u0648\u06cc \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<p>\u062c\u0646 \u0642\u0648\u0627\u0646\u06cc\u0646 \u06a9\u06cc \u067e\u06cc\u0631\u0648\u06cc \u0646\u06c1\u06cc\u06ba \u06a9\u06cc \u062c\u0627\u062a\u06cc \u06c1\u06d2 \u0627\u0646 \u06a9\u0648 \u062c\u0648\u0627\u0628\u06cc \u0645\u062b\u0627\u0644\u06cc\u06ba \u0641\u0631\u0627\u06c1\u0645 \u06a9\u0631 \u06a9\u06d2 \u0645\u0632\u06cc\u062f \u0648\u0627\u0636\u062d \u06a9\u06cc\u0627 \u062c\u0627\u0646\u0627 \u0686\u0627\u06c1\u06cc\u06d2\u060c \u06cc\u0627 \u0645\u0632\u06cc\u062f \u0645\u062e\u0635\u0648\u0635 \u0648\u0636\u0627\u062d\u062a \u06a9\u06d2 \u0633\u0627\u062a\u06be \u062c\u0648\u0691\u0627 \u062c\u0627\u0646\u0627 \u0686\u0627\u06c1\u06cc\u06d2 \u062c\u0633 \u0633\u06d2 \u0627\u06cc\u062c\u0646\u0679 \u06a9\u0648 \u06cc\u06c1 \u067e\u06c1\u0686\u0627\u0646\u0646\u06d2 \u0645\u06cc\u06ba \u0645\u062f\u062f \u0645\u0644\u06d2 \u06a9\u06c1 \u06a9\u0628 \u06a9\u0648\u0626\u06cc \u0645\u06c1\u0627\u0631\u062a \u0644\u0648\u0688 \u06a9\u0631\u0646\u06cc \u06c1\u06d2\u06d4<\/p>\n<h3 id=\"heading-one-skill-per-domain-of-expertise\">\u0627\u06cc\u06a9 \u0645\u06c1\u0627\u0631\u062a \u0641\u06cc \u062e\u0627\u0635\u06cc\u062a<\/h3>\n<p>\u06c1\u0631 \u0686\u06cc\u0632 \u06a9\u0627 \u0627\u062d\u0627\u0637\u06c1 \u06a9\u0631\u0646\u06d2 \u0648\u0627\u0644\u06cc \u0627\u06cc\u06a9 \u0628\u0691\u06cc \u062a\u0641\u0635\u06cc\u0644 \u0644\u06a9\u06be\u0646\u06d2 \u06a9\u06d2 \u0644\u0627\u0644\u0686 \u0633\u06d2 \u0628\u0686\u06cc\u06ba\u06d4 \u0688\u0648\u0645\u06cc\u0646 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0645\u062e\u0635\u0648\u0635 \u0645\u06c1\u0627\u0631\u062a\u06cc\u06ba (\u0641\u0627\u0626\u0644 \u0622\u0631\u06af\u0646\u0627\u0626\u0632\u06cc\u0634\u0646\u060c \u0627\u0633\u0679\u06cc\u0679 \u0645\u06cc\u0646\u062c\u0645\u0646\u0679\u060c \u0679\u06cc\u0633\u0679\u0646\u06af\u060c \u062a\u06be\u06cc\u0645\u0646\u06af\u060c \u0646\u06cc\u0648\u06cc\u06af\u06cc\u0634\u0646\u060c \u0627\u06cc\u0631\u0631 \u06c1\u06cc\u0646\u0688\u0644\u0646\u06af) \u06a9\u0648 \u0628\u0631\u0642\u0631\u0627\u0631 \u0631\u06a9\u06be\u0646\u0627 \u0622\u0633\u0627\u0646 \u06c1\u06d2\u060c \u0622\u06c1\u0633\u062a\u06c1 \u0622\u06c1\u0633\u062a\u06c1 \u0644\u0648\u0688 \u06a9\u06cc\u0627 \u062c\u0627\u062a\u0627 \u06c1\u06d2 (\u0644\u06c1\u0630\u0627 \u06c1\u0631 \u0645\u06c1\u0627\u0631\u062a \u0635\u0631\u0641 \u0645\u062a\u0639\u0644\u0642\u06c1 \u06c1\u0648\u0646\u06d2 \u067e\u0631 \u0633\u06cc\u0627\u0642 \u0648 \u0633\u0628\u0627\u0642 \u0645\u06cc\u06ba \u06c1\u0648\u062a\u06cc \u06c1\u06d2) \u0627\u0648\u0631 \u062f\u0648\u0633\u0631\u06cc \u0679\u06cc\u0645\u0648\u06ba \u06a9\u06d2 \u0633\u0627\u062a\u06be \u0627\u0634\u062a\u0631\u0627\u06a9 \u06a9\u0631\u0646\u0627 \u06cc\u0627 \u06a9\u0645\u06cc\u0648\u0646\u0679\u06cc \u0648\u0633\u0627\u0626\u0644 \u06a9\u06d2 \u0637\u0648\u0631 \u067e\u0631 \u0634\u0627\u0626\u0639 \u06a9\u0631\u0646\u0627 \u0622\u0633\u0627\u0646 \u06c1\u0648\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<h3 id=\"heading-write-the-description-with-trigger-word-richness\">\u0645\u062d\u0631\u06a9 \u0627\u0644\u0641\u0627\u0638 \u06a9\u06cc \u06a9\u062b\u0631\u062a \u06a9\u06d2 \u0633\u0627\u062a\u06be \u0648\u0636\u0627\u062d\u062a\u06cc\u06ba \u0644\u06a9\u06be\u06cc\u06ba\u06d4<\/h3>\n<p>\u0648\u0636\u0627\u062d\u062a\u06cc\u06ba \u0645\u06c1\u0627\u0631\u062a \u06a9\u0627 \u0648\u0627\u062d\u062f \u062d\u0635\u06c1 \u06c1\u06cc\u06ba \u062c\u0648 \u06c1\u0645\u06cc\u0634\u06c1 \u067e\u0691\u06be\u062a\u06cc \u06c1\u06cc\u06ba\u06d4 \u0627\u067e\u0646\u06cc \u0645\u06c1\u0627\u0631\u062a \u06a9\u0648 \u0645\u062e\u0635\u0648\u0635 \u0645\u062d\u0631\u06a9 \u0627\u0644\u0641\u0627\u0638 \u0627\u0648\u0631 \u0641\u0642\u0631\u0648\u06ba \u06a9\u06d2 \u0633\u0627\u062a\u06be \u062a\u0631\u062a\u06cc\u0628 \u062f\u06cc\u06ba \u062c\u0648 \u0627\u0646 \u06a9\u06cc \u0645\u0637\u0627\u0628\u0642\u062a \u06a9\u06cc \u0646\u0634\u0627\u0646\u062f\u06c1\u06cc \u06a9\u0631\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4<\/p>\n<pre><code class=\"language-yaml\"># Trigger-poor description\ndescription: How to set up navigation in Flutter.\n\n# Trigger-rich description\ndescription: Implement navigation using GoRouter in Flutter apps. Use when adding routes,\nnavigating between screens, setting up deep links, handling authentication redirects,\nconfiguring nested navigation, working with ShellRoutes, or any task involving\nNavigator, route, path, deep link, URL, back button, or go_router package.\n<\/code><\/pre>\n<p>\u0679\u0631\u06af\u0631 \u0633\u06d2 \u0628\u06be\u0631\u067e\u0648\u0631 \u062a\u0641\u0635\u06cc\u0644 \u062c\u0627\u0628 \u06a9\u06cc \u062a\u0641\u0635\u06cc\u0644 \u06a9\u06cc \u0628\u06c1\u062a \u0648\u0633\u06cc\u0639 \u0631\u06cc\u0646\u062c \u0633\u06d2 \u0645\u0644\u062a\u06cc \u06c1\u06d2\u060c \u0627\u0633 \u0628\u0627\u062a \u06a9\u0648 \u06cc\u0642\u06cc\u0646\u06cc \u0628\u0646\u0627\u062a\u06cc \u06c1\u06d2 \u06a9\u06c1 \u0645\u062a\u0639\u0644\u0642\u06c1 \u06c1\u0648\u0646\u06d2 \u067e\u0631 \u0645\u06c1\u0627\u0631\u062a\u06cc\u06ba \u0628\u06be\u0631\u06cc \u06c1\u0648\u0626\u06cc \u06c1\u0648\u06ba \u0627\u0648\u0631 \u0633\u0627\u062a\u06be \u06c1\u06cc \u0633\u0627\u062a\u06be \u0627\u06cc\u06a9 \u062f\u0631\u0633\u062a \u0646\u062d\u0648\u06cc \u0645\u0645\u0627\u062b\u0644\u062a \u0628\u06be\u06cc\u06d4<\/p>\n<h2 id=\"heading-common-mistakes-when-writing-skills\">\u062a\u0641\u0635\u06cc\u0644 \u0644\u06a9\u06be\u062a\u06d2 \u0648\u0642\u062a \u0639\u0627\u0645 \u063a\u0644\u0637\u06cc\u0627\u06ba<\/h2>\n<h3 id=\"heading-rules-that-are-too-vague-to-change-behavior\">\u0631\u0648\u06cc\u06d2 \u06a9\u0648 \u062a\u0628\u062f\u06cc\u0644 \u06a9\u0631\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0642\u0648\u0627\u0646\u06cc\u0646 \u0628\u06c1\u062a \u0645\u0628\u06c1\u0645 \u06c1\u06cc\u06ba\u06d4<\/h3>\n<pre><code class=\"language-markdown\"># These change nothing: the agent was already trying to do these\n- Write clean, maintainable code.\n- Follow Flutter best practices.\n- Use the appropriate state management solution.\n- Organize files logically.\n\n# These change specific behavior: the agent was doing something different\n- Place every extracted widget class in the widgets\/ subdirectory of its feature folder.\n- Name BlocEvent subclasses as past-tense verb phrases: ProfileLoadRequested, not LoadProfile.\n- Never use Navigator.push; use context.go() or context.push() from GoRouter.\n- Mark every widget constructor parameter with required unless it has a default value.\n<\/code><\/pre>\n<p>\u0645\u0628\u06c1\u0645 \u0627\u0635\u0648\u0644 \u062e\u0648\u0627\u06c1\u0634\u0627\u062a \u06a9\u0648 \u0628\u06cc\u0627\u0646 \u06a9\u0631\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4 \u0645\u062e\u0635\u0648\u0635 \u0627\u0635\u0648\u0644 \u0645\u062e\u0635\u0648\u0635\u060c \u0642\u0627\u0628\u0644 \u062a\u0635\u062f\u06cc\u0642 \u0631\u0648\u06cc\u06d2 \u06a9\u06cc \u0648\u0636\u0627\u062d\u062a \u06a9\u0631\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4 \u0645\u06c1\u0627\u0631\u062a \u06a9\u06d2 \u06c1\u0631 \u0642\u0627\u0639\u062f\u06d2 \u06a9\u0648 \u0627\u0633 \u0633\u0648\u0627\u0644 \u06a9\u0627 \u062c\u0648\u0627\u0628 \u062f\u06cc\u0646\u0627 \u0686\u0627\u06c1\u06cc\u06d2: \"\u0627\u0633 \u0627\u0635\u0648\u0644 \u06a9\u0648 \u067e\u0691\u06be\u0646\u06d2 \u06a9\u06d2 \u0628\u0639\u062f \u0627\u06cc\u062c\u0646\u0679 \u067e\u06c1\u0644\u06d2 \u0633\u06d2 \u0645\u062e\u062a\u0644\u0641 \u0637\u0631\u06cc\u0642\u06d2 \u0633\u06d2 \u06a9\u06cc\u0627 \u06a9\u0631\u06d2 \u06af\u0627\u061f\"<\/p>\n<h3 id=\"heading-missing-the-counterexample-for-high-frequency-wrong-patterns\">\u0627\u0639\u0644\u06cc \u062a\u0639\u062f\u062f \u06a9\u06d2 \u063a\u0644\u0637 \u0646\u0645\u0648\u0646\u0648\u06ba \u06a9\u06cc \u062c\u0648\u0627\u0628\u06cc \u0645\u062b\u0627\u0644\u06cc\u06ba \u063a\u0627\u0626\u0628 \u06c1\u06cc\u06ba\u06d4<\/h3>\n<p>\u062a\u0631\u0628\u06cc\u062a\u06cc \u0688\u06cc\u0679\u0627 \u0645\u06cc\u06ba \u06a9\u0686\u06be \u063a\u0644\u0637 \u0646\u0645\u0648\u0646\u06d2 \u0644\u0627\u06a9\u06be\u0648\u06ba \u0628\u0627\u0631 \u0638\u0627\u06c1\u0631 \u06c1\u0648\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4 \u0633\u06cc\u06a9\u06be\u0627 \u0627\u06cc\u062c\u0646\u0679 <code>_buildHeaderSection()<\/code> \u0627\u0633 \u06a9\u06cc \u0648\u062c\u06c1 \u06cc\u06c1 \u06c1\u06d2 \u06a9\u06c1 \u067e\u06be\u0691\u067e\u06be\u0691\u0627\u0646\u06d2 \u06a9\u06d2 \u062f\u0631\u0633\u062a \u0646\u0645\u0648\u0646\u0648\u06ba \u06a9\u06cc \u06c1\u0632\u0627\u0631\u0648\u06ba \u0645\u062b\u0627\u0644\u0648\u06ba \u06a9\u0648 \u0635\u0631\u0641 \u0679\u06cc\u06a9\u0633\u0679 \u0631\u0648\u0644\u0632 \u0633\u06d2 \u062a\u0631\u06a9 \u0646\u06c1\u06cc\u06ba \u06a9\u06cc\u0627 \u062c\u0627 \u0633\u06a9\u062a\u0627\u06d4<\/p>\n<p>\u0628\u0627\u0644\u06a9\u0644 \u0648\u06c1\u06cc \u06a9\u0648\u0688 \u062f\u06a9\u06be\u0627\u0626\u06cc\u06ba \u062c\u0648 \u0627\u06cc\u062c\u0646\u0679 \u062a\u06cc\u0627\u0631 \u06a9\u0631\u06d2 \u06af\u0627 \u0627\u0648\u0631 \u0627\u0633 \u06a9\u0627 \u0622\u067e \u06a9\u06d2 \u0645\u0637\u0644\u0648\u0628\u06c1 \u06a9\u0648\u0688 \u0633\u06d2 \u0645\u0648\u0627\u0632\u0646\u06c1 \u06a9\u0631\u06cc\u06ba\u06d4 \u06cc\u06c1 \u0645\u0624\u062b\u0631 \u06c1\u06d2 \u06a9\u06cc\u0648\u0646\u06a9\u06c1 \u0627\u06cc\u062c\u0646\u0679 \u0645\u062e\u0635\u0648\u0635 \u06a9\u0648\u0688 \u067e\u06cc\u0679\u0631\u0646 \u06a9\u0648 \u067e\u06c1\u0686\u0627\u0646\u062a\u0627 \u06c1\u06d2 \u0627\u0648\u0631 \u0645\u062a\u0646 \u06a9\u06cc \u0633\u0637\u062d \u06a9\u06d2 \u0628\u062c\u0627\u0626\u06d2 \u06a9\u0648\u0688 \u06a9\u06cc \u0633\u0637\u062d \u067e\u0631 \u0642\u0648\u0627\u0639\u062f \u06a9\u06cc \u0628\u0627\u062a \u0686\u06cc\u062a \u06a9\u06d2 \u0644\u06cc\u06d2 \u0627\u0633 \u06a9\u06d2 \u0628\u0631\u0639\u06a9\u0633 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<h3 id=\"heading-descriptions-that-dont-trigger-on-the-right-tasks\">\u062a\u0641\u0635\u06cc\u0644 \u0635\u062d\u06cc\u062d \u06a9\u0627\u0645 \u067e\u0631 \u0646\u06c1\u06cc\u06ba \u0686\u0644 \u0631\u06c1\u06cc \u06c1\u06d2\u06d4<\/h3>\n<p>\u0627\u06af\u0631 \u0622\u067e \"\u0628\u0631\u0627\u06c1 \u06a9\u0631\u0645 \u0627\u062f\u0627\u0626\u06cc\u06af\u06cc \u06a9\u06cc \u0633\u06a9\u0631\u06cc\u0646 \u067e\u0631 \u0644\u0648\u0688\u0646\u06af \u0627\u0633\u0679\u06cc\u0679 \u0634\u0627\u0645\u0644 \u06a9\u0631\u06cc\u06ba\" \u06a9\u06cc \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u06a9\u0631\u062a\u06d2 \u06c1\u06cc\u06ba \u062a\u0648 \"\u0631\u06cc\u0627\u0633\u062a \u06a9\u06d2 \u0627\u0646\u062a\u0638\u0627\u0645 \u06a9\u0648 \u0646\u0627\u0641\u0630 \u06a9\u0631\u06cc\u06ba\" \u06a9\u06cc \u0648\u0636\u0627\u062d\u062a \u06a9\u06d2 \u0633\u0627\u062a\u06be \u0628\u0644\u0627\u06a9 \u0627\u0633\u0679\u06cc\u0679 \u0645\u06cc\u0646\u062c\u0645\u0646\u0679 \u0633\u06d2 \u0645\u062a\u0639\u0644\u0642 \u0645\u06c1\u0627\u0631\u062a\u06cc\u06ba \u0644\u0648\u0688 \u0646\u06c1\u06cc\u06ba \u06c1\u0648\u06ba \u06af\u06cc\u06d4 \u062a\u0641\u0635\u06cc\u0644 \u0645\u06cc\u06ba \"\u0644\u0648\u0688 \u0627\u0633\u0679\u06cc\u0679\u0633\" \u06a9\u0648 \u0645\u062d\u0631\u06a9 \u062c\u0645\u0644\u06d2 \u06a9\u06d2 \u0637\u0648\u0631 \u067e\u0631 \u0634\u0627\u0645\u0644 \u06a9\u0631\u0646\u0627 \u0686\u0627\u06c1\u06cc\u06d2\u06d4<\/p>\n<p>\u0645\u062e\u062a\u0644\u0641 \u0637\u0631\u06cc\u0642\u0648\u06ba \u06a9\u06d2 \u0628\u0627\u0631\u06d2 \u0645\u06cc\u06ba \u0633\u0648\u0686 \u06a9\u0631 \u0627\u067e\u0646\u06cc \u062a\u0641\u0635\u06cc\u0644 \u06a9\u06cc \u062c\u0627\u0646\u0686 \u06a9\u0631\u06cc\u06ba \u06a9\u06c1 \u06a9\u0648\u0626\u06cc \u0634\u062e\u0635 \u06a9\u0633\u06cc \u0627\u06cc\u0633\u06d2 \u06a9\u0627\u0645 \u06a9\u06cc \u0648\u0636\u0627\u062d\u062a \u06a9\u0631\u06d2 \u06af\u0627 \u062c\u0633 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0627\u0633 \u0645\u06c1\u0627\u0631\u062a \u06a9\u06cc \u0636\u0631\u0648\u0631\u062a \u06c1\u06d2\u060c \u0627\u0648\u0631 \u06cc\u0642\u06cc\u0646\u06cc \u0628\u0646\u0627\u0626\u06cc\u06ba \u06a9\u06c1 \u0622\u067e \u06a9\u06cc \u062a\u0641\u0635\u06cc\u0644 \u0645\u06cc\u06ba \u0627\u0646 \u062a\u0645\u0627\u0645 \u0637\u0631\u06cc\u0642\u0648\u06ba \u06a9\u06d2 \u0644\u06cc\u06d2 \u0645\u062d\u0631\u06a9 \u062c\u0645\u0644\u06d2 \u0634\u0627\u0645\u0644 \u06c1\u06cc\u06ba\u06d4<\/p>\n<h3 id=\"heading-not-committing-skills-to-version-control\">\u0648\u0631\u0698\u0646 \u06a9\u0646\u0679\u0631\u0648\u0644 \u06a9\u06d2 \u0644\u06cc\u06d2 \u067e\u0631\u0639\u0632\u0645 \u0646\u06c1\u06cc\u06ba\u06d4<\/h3>\n<p>\u06a9\u0633\u06cc \u0627\u06cc\u06a9 \u0688\u0648\u06cc\u0644\u067e\u0631 \u06a9\u06d2 \u06a9\u0645\u067e\u06cc\u0648\u0679\u0631 \u067e\u0631 \u0686\u06be\u0648\u0691\u06cc \u06af\u0626\u06cc \u0645\u06c1\u0627\u0631\u062a\u06cc\u06ba \u0630\u0627\u062a\u06cc \u0646\u0648\u0679\u0633 \u06c1\u06cc\u06ba\u060c \u0679\u06cc\u0645 \u06a9\u0627 \u0639\u0644\u0645 \u0646\u06c1\u06cc\u06ba\u06d4 \u0633\u0631\u0634\u0627\u0631 \u0645\u06c1\u0627\u0631\u062a\u06cc\u06ba \u0627\u062f\u0627\u0631\u06c1 \u062c\u0627\u062a\u06cc \u0639\u0644\u0645 \u06c1\u06d2 \u062c\u0648 \u0646\u0626\u06d2 \u0645\u0644\u0627\u0632\u0645\u06cc\u0646 \u06a9\u0648 \u067e\u06c1\u0644\u06d2 \u062f\u0646 \u0633\u06d2 \u062d\u0627\u0635\u0644 \u06c1\u0648\u062a\u0627 \u06c1\u06d2\u060c \u062c\u0633 \u0633\u06d2 \u067e\u0648\u0631\u06cc \u0679\u06cc\u0645 \u06a9\u06d2 \u0627\u06cc\u062c\u0646\u0679 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0646\u0646\u062f\u06af\u0627\u0646 \u0628\u063a\u06cc\u0631 \u06a9\u0633\u06cc \u0633\u06cc\u0679 \u0627\u067e \u06a9\u06d2 \u0641\u0627\u0626\u062f\u06c1 \u0627\u0679\u06be\u0627\u062a\u06d2 \u06c1\u06cc\u06ba\u060c \u0627\u0648\u0631 \u0627\u0633 \u06a9\u0627 \u062c\u0627\u0626\u0632\u06c1 \u0644\u06cc\u0627 \u062c\u0627 \u0633\u06a9\u062a\u0627 \u06c1\u06d2\u060c \u0628\u06c1\u062a\u0631 \u06a9\u06cc\u0627 \u062c\u0627 \u0633\u06a9\u062a\u0627 \u06c1\u06d2 \u0627\u0648\u0631 \u06a9\u0648\u0688 \u06a9\u06cc \u0637\u0631\u062d \u0628\u0631\u0642\u0631\u0627\u0631 \u0631\u06a9\u06be\u0627 \u062c\u0627 \u0633\u06a9\u062a\u0627 \u06c1\u06d2\u06d4 \u06c1\u0645\u06cc\u0634\u06c1 \u0639\u0632\u0645 <code>.agents\/skills\/<\/code> \u062e\u0648\u0634 \u06c1\u0648 \u062c\u0627\u0624<\/p>\n<h3 id=\"heading-writing-skills-that-are-too-prescriptive\">\u0644\u06a9\u06be\u0646\u06d2 \u06a9\u06cc \u062a\u06a9\u0646\u06cc\u06a9 \u062c\u0648 \u0628\u06c1\u062a \u0632\u06cc\u0627\u062f\u06c1 \u0646\u0633\u062e\u06c1 \u062c\u0627\u062a\u06cc \u06c1\u06cc\u06ba\u06d4<\/h3>\n<p>\u0679\u06a9\u0646\u0627\u0644\u0648\u062c\u06cc \u06a9\u0648 \u0642\u0648\u0627\u0639\u062f \u06a9\u0648 \u0627\u0646\u06a9\u0648\u0688 \u06a9\u0631\u0646\u0627 \u0686\u0627\u06c1\u0626\u06d2\u060c \u06c1\u0631 \u0645\u0645\u06a9\u0646\u06c1 \u0646\u0641\u0627\u0630 \u06a9\u06d2 \u0641\u06cc\u0635\u0644\u06d2 \u06a9\u0627 \u062d\u06a9\u0645 \u0646\u06c1\u06cc\u06ba \u062f\u06cc\u0646\u0627 \u0686\u0627\u06c1\u0626\u06d2\u06d4 \u0627\u06af\u0631 \u0622\u067e \u06a9\u06cc \u062a\u06a9\u0646\u06cc\u06a9 \u06a9\u0633\u06cc \u0648\u06cc\u062c\u06cc\u0679 \u06a9\u06d2 \u0639\u06cc\u0646 \u0645\u0637\u0627\u0628\u0642 \u067e\u06a9\u0633\u0644 \u0633\u0627\u0626\u0632\u060c \u06a9\u0633\u06cc \u062e\u0627\u0635 \u0644\u0648\u0688\u0646\u06af \u0627\u0646\u0688\u06cc\u06a9\u06cc\u0679\u0631 \u06a9\u0627 \u0635\u062d\u06cc\u062d \u0631\u0646\u06af\u060c \u06cc\u0627 \u06a9\u0646\u0633\u0679\u0631\u06a9\u0679\u0631 \u0645\u06cc\u06ba \u067e\u06cc\u0631\u0627\u0645\u06cc\u0679\u0631\u0632 \u06a9\u06cc \u062f\u0631\u0633\u062a \u062a\u0631\u062a\u06cc\u0628 \u0628\u062a\u0627\u062a\u06cc \u06c1\u06d2\u060c \u062a\u0648 \u0622\u067e \u0627\u0633 \u06a9\u06cc \u0632\u06cc\u0627\u062f\u06c1 \u0648\u0636\u0627\u062d\u062a \u06a9\u0631 \u0631\u06c1\u06d2 \u06c1\u06cc\u06ba \u0627\u0648\u0631 \u0627\u06cc\u062c\u0646\u0679 \u06a9\u0648 \u0646\u0626\u06d2 \u062d\u0627\u0644\u0627\u062a \u0645\u06cc\u06ba \u0639\u0642\u0644\u06cc \u0641\u06cc\u0635\u0644\u06d2 \u06a9\u0631\u0646\u06d2 \u0633\u06d2 \u0631\u0648\u06a9 \u0631\u06c1\u06d2 \u06c1\u06cc\u06ba\u06d4<\/p>\n<p>\u0679\u06a9\u0646\u0627\u0644\u0648\u062c\u06cc \u06a9\u0648 \u0633\u0627\u062e\u062a\u06cc \u0627\u0648\u0631 \u062a\u0639\u0645\u06cc\u0631\u0627\u062a\u06cc \u0646\u0645\u0648\u0646\u0648\u06ba \u067e\u0631 \u0642\u0628\u0636\u06c1 \u06a9\u0631\u0646\u0627 \u0686\u0627\u06c1\u0626\u06d2 \u062c\u0648 \u0631\u06c1\u0646\u0645\u0627\u0626\u06cc \u06a9\u06d2 \u0628\u063a\u06cc\u0631 \u0639\u0645\u0644\u06cc \u0637\u0648\u0631 \u067e\u0631 \u0645\u062a\u0636\u0627\u062f \u06c1\u0648\u06ba \u06af\u06d2\u06d4 \u0627\u06cc\u06a9 \u0679\u06cc\u06a9\u0646\u0627\u0644\u0648\u062c\u06cc \u06a9\u0648 \u0646\u0641\u0627\u0630 \u06a9\u06cc \u062a\u0641\u0635\u06cc\u0644 \u0646\u06c1\u06cc\u06ba \u06c1\u0648\u0646\u06cc \u0686\u0627\u06c1\u06cc\u06d2 \u062c\u0633 \u0645\u06cc\u06ba \u0628\u06c1\u062a \u0633\u06d2 \u06cc\u06a9\u0633\u0627\u06ba \u0637\u0648\u0631 \u067e\u0631 \u062f\u0631\u0633\u062a \u0627\u0646\u062a\u062e\u0627\u0628 \u06c1\u0648\u06ba\u06d4<\/p>\n<h2 id=\"heading-conclusion\">\u0646\u062a\u06cc\u062c\u06c1<\/h2>\n<p>Flutter \u0645\u06cc\u06ba \u0627\u06cc\u062c\u0646\u0679 \u06a9\u06cc \u062a\u0631\u0642\u06cc \u06a9\u06cc \u0637\u0631\u0641 \u0645\u0646\u062a\u0642\u0644\u06cc \u0688\u0648\u06cc\u0644\u067e\u0631\u0632 \u06a9\u0648 \u062a\u0628\u062f\u06cc\u0644 \u06a9\u0631\u0646\u06d2 \u06a9\u06d2 \u0628\u0627\u0631\u06d2 \u0645\u06cc\u06ba \u0646\u06c1\u06cc\u06ba \u06c1\u06d2\u06d4 \u06cc\u06c1 \u0688\u0648\u06cc\u0644\u067e\u0631\u0632 \u062c\u0648 \u06a9\u0686\u06be \u06a9\u0631 \u0633\u06a9\u062a\u06d2 \u06c1\u06cc\u06ba \u0627\u0633\u06d2 \u0636\u0631\u0628 \u062f\u06cc\u0646\u06d2 \u06a9\u06d2 \u0628\u0627\u0631\u06d2 \u0645\u06cc\u06ba \u06c1\u06d2\u06d4<\/p>\n<p>\u0627\u06cc\u06a9 \u0637\u0627\u0642\u062a\u0648\u0631 \u06c1\u0646\u0631 \u0645\u0646\u062f AI \u0627\u06cc\u062c\u0646\u0679 \u0645\u0646\u0679\u0648\u06ba \u0645\u06cc\u06ba \u0627\u06cc\u06a9 \u0645\u06a9\u0645\u0644\u060c \u0641\u0646 \u062a\u0639\u0645\u06cc\u0631 \u0633\u06d2 \u0645\u062a\u0639\u0644\u0642 \u062e\u0635\u0648\u0635\u06cc\u062a \u06a9\u06d2 \u0646\u0641\u0627\u0630 \u06a9\u0627 \u0645\u0633\u0648\u062f\u06c1 \u062a\u06cc\u0627\u0631 \u06a9\u0631 \u0633\u06a9\u062a\u0627 \u06c1\u06d2 \u062c\u0648 \u0622\u067e \u06a9\u06cc \u0679\u06cc\u0645 \u06a9\u06d2 \u0642\u0637\u0639\u06cc \u0627\u0635\u0648\u0644\u0648\u06ba \u06a9\u06cc \u067e\u06cc\u0631\u0648\u06cc \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4 \u0627\u06cc\u06a9 \u0633\u06cc\u0646\u0626\u0631 \u0688\u0648\u06cc\u0644\u067e\u0631 \u0627\u0633 \u06a9\u0627 \u062c\u0627\u0626\u0632\u06c1 \u0644\u06cc\u062a\u0627 \u06c1\u06d2\u060c \u0627\u06cc\u0688\u062c\u0633\u0679\u0645\u0646\u0679 \u06a9\u0631\u062a\u0627 \u06c1\u06d2 \u0627\u0648\u0631 \u0627\u0633\u06d2 \u062c\u0627\u0631\u06cc \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4 \u06c1\u0646\u0631 \u0627\u06cc\u06a9 \u0627\u06cc\u062c\u0646\u0679 \u06a9\u06d2 \u0639\u0645\u0648\u0645\u06cc \u0639\u0644\u0645 \u0627\u0648\u0631 \u0679\u06cc\u0645 \u06a9\u06d2 \u0645\u062e\u0635\u0648\u0635 \u0645\u0639\u06cc\u0627\u0631\u0627\u062a \u06a9\u06d2 \u062f\u0631\u0645\u06cc\u0627\u0646 \u0641\u0631\u0642 \u06a9\u0648 \u062e\u062a\u0645 \u06a9\u0631\u0646\u06d2 \u06a9\u06d2 \u0628\u0627\u0631\u06d2 \u0645\u06cc\u06ba \u06c1\u06d2\u06d4<\/p>\n<p>\u062c\u0648 \u0686\u06cc\u0632 \u0679\u06cc\u06a9\u0646\u0627\u0644\u0648\u062c\u06cc \u06a9\u0648 \u062d\u0642\u06cc\u0642\u06cc \u0645\u0639\u0646\u0648\u06ba \u0645\u06cc\u06ba \u0637\u0627\u0642\u062a\u0648\u0631 \u0628\u0646\u0627\u062a\u06cc \u06c1\u06d2 \u0648\u06c1 \u06cc\u06c1 \u06c1\u06d2 \u06a9\u06c1 \u0645\u0627\u0688\u0644 AI \u0688\u0648\u06cc\u0644\u067e\u0645\u0646\u0679 \u0648\u0631\u06a9 \u0641\u0644\u0648 \u06a9\u0627 \u0648\u0627\u062d\u062f \u062d\u0635\u06c1 \u06c1\u06d2 \u062c\u0633 \u0645\u06cc\u06ba \u063a\u06cc\u0631 \u062a\u0631\u0628\u06cc\u062a \u06cc\u0627\u0641\u062a\u06c1 \u0639\u0644\u0645 \u06c1\u0648\u062a\u0627 \u06c1\u06d2\u06d4 \u0645\u0627\u0688\u0644 \u06a9\u0648 \u067e\u0628\u0644\u06a9 \u0641\u0644\u0679\u0631 \u0627\u0648\u0631 \u0688\u0627\u0631\u0679 \u06a9\u0648\u0688 \u06a9\u06cc \u0644\u0627\u06a9\u06be\u0648\u06ba \u0644\u0627\u0626\u0646\u0648\u06ba \u0633\u06d2 \u062a\u0631\u0628\u06cc\u062a \u062f\u06cc \u06af\u0626\u06cc \u062a\u06be\u06cc\u06d4 \u0644\u06cc\u06a9\u0646 \u0645\u06cc\u06ba \u0646\u06d2 \u0622\u067e \u06a9\u0627 \u06a9\u0648\u0688 \u0628\u06cc\u0633 \u06a9\u0628\u06be\u06cc \u0646\u06c1\u06cc\u06ba \u062f\u06cc\u06a9\u06be\u0627\u06d4 \u0622\u067e \u06a9\u06d2 \u067e\u0631\u0648\u062c\u06cc\u06a9\u0679 \u0645\u06cc\u06ba \u06a9\u0628\u06be\u06cc \u06a9\u0648\u0626\u06cc \u063a\u0644\u0637\u06cc \u0646\u06c1\u06cc\u06ba \u06c1\u0648\u0626\u06cc \u0627\u0648\u0631 \u0646\u06c1 \u06c1\u06cc \u0627\u0633\u06d2 \u0679\u06be\u06cc\u06a9 \u06a9\u06cc\u0627 \u06af\u06cc\u0627 \u06c1\u06d2\u06d4 \u0645\u06cc\u06ba \u0646\u06d2 \u06a9\u0628\u06be\u06cc \u0628\u06be\u06cc \u0679\u06cc\u0645 \u06a9\u06d2 \u0641\u0646 \u062a\u0639\u0645\u06cc\u0631 \u06a9\u06d2 \u0645\u0628\u0627\u062d\u062b\u0648\u06ba \u06cc\u0627 \u067e\u0633\u067e\u0627\u0626\u06cc\u0648\u06ba \u0645\u06cc\u06ba \u0634\u0631\u06a9\u062a \u0646\u06c1\u06cc\u06ba \u06a9\u06cc\u06d4 \u0622\u067e \u06a9\u0648 \u06cc\u06c1 \u0627\u062d\u0633\u0627\u0633 \u0646\u06c1\u06cc\u06ba \u06c1\u06d2 \u06a9\u06c1 \u0627\u06cc\u06a9 \u0679\u06cc\u0645 \u0646\u06d2 \u0627\u06cc\u06a9 \u067e\u06cc\u0679\u0631\u0646 \u06a9\u0648 \u0622\u0632\u0645\u0627\u06cc\u0627\u060c \u0645\u062d\u0633\u0648\u0633 \u06a9\u06cc\u0627 \u06a9\u06c1 \u06cc\u06c1 \u062a\u06a9\u0644\u06cc\u0641 \u062f\u06c1 \u062a\u06be\u0627\u060c \u0627\u0648\u0631 \u062c\u0627\u0646 \u0628\u0648\u062c\u06be \u06a9\u0631 \u0627\u06cc\u06a9 \u0645\u062e\u062a\u0644\u0641 \u067e\u06cc\u0679\u0631\u0646 \u06a9\u0627 \u0627\u0646\u062a\u062e\u0627\u0628 \u06a9\u06cc\u0627\u06d4 \u0622\u067e \u06a9\u06cc \u0645\u06c1\u0627\u0631\u062a \u0648\u06c1 \u0628\u0631\u062a\u0646 \u06c1\u06d2 \u062c\u0648 \u062a\u0645\u0627\u0645 \u0639\u0644\u0645 \u0631\u06a9\u06be\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<p>\u0622\u0641\u06cc\u0634\u0644 \u0641\u0644\u0679\u0631 \u0679\u06cc\u06a9\u0646\u0627\u0644\u0648\u062c\u06cc\u0632 <code>github.com\/flutter\/agent-plugins<\/code> \u0627\u0648\u0631 \u0633\u0631\u06a9\u0627\u0631\u06cc \u0688\u0627\u0631\u0679 \u0627\u0633\u06a9\u0644 \u06c1\u06d2\u06d4 <code>github.com\/dart-lang\/skills<\/code> \u06cc\u06c1 \u0627\u06cc\u06a9 \u067e\u06cc\u062f\u0627\u0648\u0627\u0631\u06cc \u0645\u0639\u06cc\u0627\u0631 \u06a9\u0627 \u0646\u0642\u0637\u06c1 \u0622\u063a\u0627\u0632 \u0641\u0631\u0627\u06c1\u0645 \u06a9\u0631\u062a\u0627 \u06c1\u06d2 \u062c\u0633 \u0645\u06cc\u06ba \u0633\u0628 \u0633\u06d2 \u0632\u06cc\u0627\u062f\u06c1 \u0639\u0627\u0645 \u0641\u0644\u0679\u0631 \u0627\u0648\u0631 \u0688\u0627\u0631\u0679 \u0688\u06cc\u0648\u0644\u067e\u0645\u0646\u0679 \u067e\u06cc\u0679\u0631\u0646 \u0634\u0627\u0645\u0644 \u06c1\u06cc\u06ba\u06d4 \u06a9\u06c1 <code>skills<\/code> CLI \u0679\u0648\u0644 \u0627\u0646\u0633\u0679\u0627\u0644\u06cc\u0634\u0646 \u06a9\u0648 \u0627\u062a\u0646\u0627 \u06c1\u06cc \u0622\u0633\u0627\u0646 \u0628\u0646\u0627\u062a\u0627 \u06c1\u06d2 \u062c\u062a\u0646\u0627 \u06a9\u06c1 \u0627\u06cc\u06a9 \u0627\u06cc\u0646 \u067e\u06cc \u0627\u06cc\u0645 \u06a9\u0645\u0627\u0646\u0688\u06d4 \u067e\u06cc\u06a9\u06cc\u062c \u06a9\u06cc \u0633\u0637\u062d \u06a9\u06cc \u0648\u0636\u0627\u062d\u062a \u06a9\u06d2 \u0646\u0638\u0627\u0645 \u06a9\u0627 \u0645\u0637\u0644\u0628 \u06cc\u06c1 \u06c1\u06d2 \u06a9\u06c1 \u0627\u0646\u062d\u0635\u0627\u0631 \u0627\u067e\u0646\u06d2 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u06cc \u06c1\u062f\u0627\u06cc\u0627\u062a \u0641\u0631\u0627\u06c1\u0645 \u06a9\u0631\u062a\u0627 \u06c1\u06d2 \u0627\u0648\u0631 \u067e\u06cc\u06a9\u062c \u06a9\u06d2 \u062a\u06cc\u0627\u0631 \u06c1\u0648\u0646\u06d2 \u06a9\u06d2 \u0633\u0627\u062a\u06be \u06c1\u06cc \u0627\u0633\u06d2 \u0627\u067e \u0688\u06cc\u0679 \u06a9\u06cc\u0627 \u062c\u0627 \u0633\u06a9\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<p>\u0644\u06cc\u06a9\u0646 \u0648\u06c1 \u062a\u06a9\u0646\u06cc\u06a9\u06cc\u06ba \u062c\u0648 \u0622\u067e \u062e\u0648\u062f \u0644\u06a9\u06be\u062a\u06d2 \u06c1\u06cc\u06ba\u060c \u0622\u067e \u06a9\u06d2 \u0627\u067e\u0646\u06d2 \u067e\u0631\u0648\u0688\u06a9\u0634\u0646 \u0627\u06cc\u0648\u0646\u0679\u0633\u060c \u06a9\u0648\u0688 \u0631\u06cc\u0648\u06cc\u0648 \u0641\u06cc\u0688 \u0628\u06cc\u06a9\u060c \u0627\u0648\u0631 \u062a\u0639\u0645\u06cc\u0631\u0627\u062a\u06cc \u0641\u06cc\u0635\u0644\u0648\u06ba \u06a9\u06cc \u0628\u0646\u06cc\u0627\u062f \u067e\u0631\u060c \u0633\u0628 \u0633\u06d2 \u0632\u06cc\u0627\u062f\u06c1 \u0627\u062b\u0631 \u0688\u0627\u0644\u06d2 \u06af\u06cc\u06d4 \u06cc\u06c1 \u0627\u06cc\u0633\u06d2 \u0639\u0644\u0645 \u06a9\u0648 \u062e\u0641\u06cc\u06c1 \u06a9\u0631\u062a\u0627 \u06c1\u06d2 \u062c\u0648 \u0646\u0627\u0642\u0627\u0628\u0644 \u062a\u0644\u0627\u0641\u06cc \u06c1\u06d2 \u06a9\u06cc\u0648\u0646\u06a9\u06c1 \u06cc\u06c1 \u0639\u0648\u0627\u0645\u06cc \u0630\u062e\u06cc\u0631\u0648\u06ba \u0645\u06cc\u06ba \u0646\u06c1\u06cc\u06ba \u067e\u0627\u06cc\u0627 \u062c\u0627 \u0633\u06a9\u062a\u0627\u06d4<\/p>\n<p>\"StatefulWidget \u06a9\u0648 \u06a9\u0628\u06be\u06cc \u0628\u06be\u06cc \u0631\u06cc\u0627\u0633\u062a\u06cc \u0637\u0628\u0642\u06d2 \u0633\u06d2 \u0627\u0644\u06af \u0646\u06c1 \u06a9\u0631\u06cc\u06ba\" \u062c\u06cc\u0633\u06d2 \u0627\u0635\u0648\u0644 Flutter \u06a9\u06d2 \u06a9\u0645\u067e\u0627\u0626\u0644\u06cc\u0634\u0646 \u0645\u0627\u0688\u0644 \u06a9\u0648 \u0627\u0633 \u0633\u0637\u062d \u067e\u0631 \u0633\u0645\u062c\u06be\u0646\u06d2 \u0633\u06d2 \u0622\u062a\u06d2 \u06c1\u06cc\u06ba \u062c\u0633 \u06a9\u0627 \u0632\u06cc\u0627\u062f\u06c1 \u062a\u0631 \u062a\u0631\u0628\u06cc\u062a\u06cc \u0688\u06cc\u0679\u0627 \u0628\u06cc\u0627\u0646 \u0646\u06c1\u06cc\u06ba \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4 \"\u062a\u0645\u0627\u0645 \u0628\u0644\u0627\u06a9 \u0627\u06cc\u0648\u0646\u0679\u0633 \u0627\u0648\u0631 \u0631\u06cc\u0627\u0633\u062a\u0648\u06ba \u06a9\u06d2 \u0644\u06cc\u06d2 \u062d\u062a\u0645\u06cc \u06a9\u0646\u06a9\u0631\u06cc\u0679 \u06a9\u0644\u0627\u0633 \u06a9\u06d2 \u0633\u0627\u062a\u06be \u0645\u06c1\u0631 \u0628\u0646\u062f \u06a9\u0644\u0627\u0633 \u062f\u0631\u062c\u06c1 \u0628\u0646\u062f\u06cc \u06a9\u0627 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u06cc\u06ba\" \u062c\u06cc\u0633\u06d2 \u0627\u0635\u0648\u0644 Dart 3 \u06a9\u06d2 \u0679\u0627\u0626\u067e \u0633\u0633\u0679\u0645 \u0627\u0648\u0631 \u0645\u06a9\u0645\u0644 \u062a\u0628\u062f\u06cc\u0644\u06cc \u06a9\u06d2 \u062d\u0642\u06cc\u0642\u06cc \u062f\u0646\u06cc\u0627 \u06a9\u06d2 \u0641\u0648\u0627\u0626\u062f \u062f\u0648\u0646\u0648\u06ba \u06a9\u0648 \u0633\u0645\u062c\u06be\u0646\u06d2 \u0633\u06d2 \u0622\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4 \"\u0627\u0646\u062a\u0638\u0627\u0631 \u06a9\u06d2 \u0628\u0639\u062f BuildContext \u06a9\u0648 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u0646\u06d2 \u0633\u06d2 \u067e\u06c1\u0644\u06d2 \u0645\u0627\u0624\u0646\u0679\u0688 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0686\u06cc\u06a9 \u06a9\u0631\u06cc\u06ba\" \u062c\u06cc\u0633\u06d2 \u0642\u0648\u0627\u0639\u062f \u0627\u0633 \u0627\u0635\u0648\u0644 \u06a9\u06cc \u062e\u0644\u0627\u0641 \u0648\u0631\u0632\u06cc \u06a9\u06d2 \u0648\u0642\u062a \u067e\u0631\u0648\u0688\u06a9\u0634\u0646 \u0645\u06cc\u06ba \u06c1\u0648\u0646\u06d2 \u0648\u0627\u0644\u06d2 \u06a9\u0686\u06be \u06a9\u0631\u06cc\u0634\u0648\u06ba \u06a9\u06cc \u062c\u0627\u0646\u0686 \u06a9\u0631\u0646\u06d2 \u0633\u06d2 \u0622\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4<\/p>\n<p>\u06cc\u06c1 \u0627\u0635\u0648\u0644\u060c \u0622\u067e \u06a9\u06d2 \u062a\u062c\u0631\u0628\u06d2 \u0633\u06d2 \u062a\u06cc\u0627\u0631 \u06a9\u06cc\u06d2 \u06af\u0626\u06d2\u060c \u0622\u067e \u06a9\u06cc \u0645\u06c1\u0627\u0631\u062a\u0648\u06ba \u0645\u06cc\u06ba \u062f\u0633\u062a\u0627\u0648\u06cc\u0632 \u06a9\u06cc\u06d2 \u06af\u0626\u06d2\u060c \u0627\u0648\u0631 \u0622\u067e \u06a9\u06d2 \u0630\u062e\u06cc\u0631\u06d2 \u067e\u0631 \u0644\u0627\u06af\u0648 \u06a9\u06cc\u06d2 \u06af\u0626\u06d2\u060c \u0622\u067e \u06a9\u06d2 AI \u0627\u06cc\u062c\u0646\u0679 \u06a9\u0648 \u0627\u06cc\u06a9 \u0628\u0627\u0642\u0627\u0639\u062f\u06c1 \u0641\u0644\u0679\u0631 \u0688\u0648\u06cc\u0644\u067e\u0631 \u0633\u06d2 \u0627\u06cc\u06a9 \u0627\u06cc\u0633\u06d2 \u0688\u0648\u06cc\u0644\u067e\u0631 \u0645\u06cc\u06ba \u062a\u0628\u062f\u06cc\u0644 \u06a9\u0631\u06cc\u06ba \u062c\u0648 \u0622\u067e \u06a9\u06d2 \u067e\u0631\u0648\u062c\u06cc\u06a9\u0679 \u06a9\u0648 \u062c\u0627\u0646\u062a\u0627 \u06c1\u0648\u06d4 \u06cc\u06c1 \u062a\u0628\u062f\u06cc\u0644\u06cc\u0627\u06ba \u062a\u06a9\u0646\u06cc\u06a9 \u06a9\u0648 \u0644\u06a9\u06be\u0646\u06d2 \u0645\u06cc\u06ba \u062e\u0631\u0686 \u06c1\u0648\u0646\u06d2 \u0648\u0627\u0644\u06d2 \u06c1\u0631 \u0645\u0646\u0679 \u06a9\u06d2 \u0642\u0627\u0628\u0644 \u06c1\u06cc\u06ba\u06d4<\/p>\n<h2 id=\"heading-references\">\u062d\u0648\u0627\u0644\u06c1 \u062c\u0627\u062a<\/h2>\n<p><strong>\u067e\u06be\u0691\u067e\u06be\u0691\u0627\u06c1\u0679 \u0627\u0648\u0631 \u0688\u0627\u0631\u0679 \u0645\u06cc\u06ba \u0627\u06cc\u062c\u0646\u0679 \u0679\u06cc\u06a9\u0646\u0627\u0644\u0648\u062c\u06cc (\u0641\u0644\u0679\u0631 \u062f\u0633\u062a\u0627\u0648\u06cc\u0632\u0627\u062a):<\/strong> \u0627\u06cc\u062c\u0646\u0679 \u0679\u06cc\u06a9\u0646\u0627\u0644\u0648\u062c\u06cc \u06a9\u06d2 \u0644\u06cc\u06d2 \u0627\u06cc\u06a9 \u062c\u0627\u0645\u0639 \u06af\u0627\u0626\u06cc\u0688\u060c \u0628\u0634\u0645\u0648\u0644 \u067e\u0631\u0648\u06af\u0631\u06cc\u0633\u0648 \u0631\u06cc\u0644\u06cc\u0632 \u0645\u0627\u0688\u0644\u060c \u0622\u0641\u06cc\u0634\u0644 \u0631\u06cc\u067e\u0648\u0632\u0679\u0631\u06cc\u0632\u060c \u0627\u0648\u0631 \u06cc\u0648\u0646\u06cc\u0648\u0631\u0633\u0644 \u0627\u0646\u0633\u0679\u0627\u0644\u06cc\u0634\u0646 \u06a9\u0645\u0627\u0646\u0688\u0632\u06d4 https:\/\/docs.flutter.dev\/ai\/agent-skills<\/p>\n<p><strong>Flutter \u0645\u06cc\u06ba AI \u06a9\u06d2 \u0633\u0627\u062a\u06be \u0634\u0631\u0648\u0639 \u06a9\u0631\u0646\u0627 (Flutter \u062f\u0633\u062a\u0627\u0648\u06cc\u0632\u0627\u062a):<\/strong> \u06a9\u0644\u0627\u0688 \u06a9\u0648\u0688\u060c \u0627\u06cc\u0646\u0679\u06cc \u06af\u0631\u06cc\u0648\u06cc\u0679\u06cc\u060c \u06a9\u0648\u0688\u06cc\u06a9\u0633\u060c \u06a9\u0631\u0633\u0631\u060c \u0627\u0648\u0631 \u062f\u06cc\u06af\u0631 \u0627\u06cc\u062c\u0646\u0679\u0648\u06ba \u06a9\u06d2 \u0644\u06cc\u06d2 \u0645\u0631\u062d\u0644\u06c1 \u0648\u0627\u0631 \u0633\u06cc\u0679 \u0627\u067e \u06af\u0627\u0626\u06cc\u0688\u0632\u060c \u0628\u0634\u0645\u0648\u0644 \u06c1\u0631 \u0679\u0648\u0644 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0622\u0641\u06cc\u0634\u0644 \u0641\u0644\u0679\u0631 \u067e\u0644\u06af \u0627\u0646 \u0627\u0646\u0633\u0679\u0627\u0644\u06cc\u0634\u0646 \u06c1\u062f\u0627\u06cc\u0627\u062a\u06d4 https:\/\/docs.flutter.dev\/ai\/get-started<\/p>\n<p><strong>\u0641\u0644\u0679\u0631 \u0627\u06cc\u062c\u0646\u0679 \u067e\u0644\u06af \u0627\u0646 \u0631\u06cc\u067e\u0648\u0632\u0679\u0631\u06cc (GitHub):<\/strong> Flutter \u0627\u06cc\u062c\u0646\u0679 \u0679\u06cc\u06a9\u0646\u0627\u0644\u0648\u062c\u06cc\u0632 \u06a9\u0627 \u0622\u0641\u06cc\u0634\u0644 \u0631\u06cc\u067e\u0648\u0632\u0679\u0631\u06cc \u062c\u0648 Flutter \u0679\u06cc\u0645 \u06a9\u06d2 \u0632\u06cc\u0631 \u0627\u0646\u062a\u0638\u0627\u0645 \u06c1\u06d2 \u062c\u0633 \u0645\u06cc\u06ba \u0631\u06cc\u0633\u067e\u0627\u0646\u0633\u06cc\u0648 \u0644\u06d2 \u0622\u0624\u0679\u060c GoRouter \u0646\u06cc\u0648\u06cc\u06af\u06cc\u0634\u0646\u060c JSON \u0633\u06cc\u0631\u06cc\u0644\u0627\u0626\u0632\u06cc\u0634\u0646\u060c \u0648\u06cc\u062c\u06cc\u0679 \u0679\u06cc\u0633\u0679\u0646\u06af\u060c \u0627\u0646\u0679\u06cc\u06af\u0631\u06cc\u0634\u0646 \u0679\u06cc\u0633\u0679\u0646\u06af\u060c BLoC \u067e\u06cc\u0679\u0631\u0646\u0632 \u0627\u0648\u0631 \u0628\u06c1\u062a \u06a9\u0686\u06be \u0634\u0627\u0645\u0644 \u06c1\u06d2\u06d4 https:\/\/github.com\/flutter\/agent-plugins<\/p>\n<p><strong>\u0688\u0627\u0631\u0679 \u0679\u06cc\u06a9\u0646\u0627\u0644\u0648\u062c\u06cc \u06a9\u0627 \u0630\u062e\u06cc\u0631\u06c1 (GitHub):<\/strong> \u0688\u0627\u0631\u0679 \u0627\u06cc\u062c\u0646\u0679 \u0679\u06cc\u06a9\u0646\u0627\u0644\u0648\u062c\u06cc \u06a9\u0627 \u0628\u0627\u0636\u0627\u0628\u0637\u06c1 \u0630\u062e\u06cc\u0631\u06c1 \u062c\u0648 \u0688\u0627\u0631\u0679 \u0679\u06cc\u0645 \u06a9\u06d2 \u0632\u06cc\u0631 \u0627\u0646\u062a\u0638\u0627\u0645 \u06c1\u06d2\u060c \u062c\u0633 \u0645\u06cc\u06ba \u06cc\u0648\u0646\u0679 \u0679\u06cc\u0633\u0679\u0646\u06af\u060c \u062c\u0627\u0645\u062f \u062a\u062c\u0632\u06cc\u06c1\u060c \u067e\u06cc\u06a9\u06cc\u062c\u0646\u06af \u0679\u0648\u0644\u0632\u060c \u067e\u06cc\u0679\u0631\u0646 \u0645\u06cc\u0686\u0646\u06af\u060c CLI \u0627\u06cc\u067e\u0633\u060c \u0645\u0642\u0627\u0645\u06cc \u0627\u062b\u0627\u062b\u06d2 \u0627\u0648\u0631 \u0628\u06c1\u062a \u06a9\u0686\u06be \u0634\u0627\u0645\u0644 \u06c1\u06d2\u06d4 https:\/\/github.com\/dart-lang\/skills<\/p>\n<p><strong>\u0641\u0644\u0679\u0631 \u0627\u06d2 \u0622\u0626\u06cc \u0631\u0648\u0644\u0632 \u062f\u0633\u062a\u0627\u0648\u06cc\u0632\u0627\u062a (\u0641\u0644\u0679\u0631 \u062f\u0633\u062a\u0627\u0648\u06cc\u0632\u0627\u062a):<\/strong> \u062f\u0633\u062a\u0627\u0648\u06cc\u0632\u06cc \u0627\u0648\u0631 \u062a\u06a9\u0646\u06cc\u06a9\u06cc \u0636\u0645\u06cc\u0645\u06c1 \u067e\u0631\u0627\u062c\u06cc\u06a9\u0679 \u0648\u0633\u06cc\u0639 AI \u0642\u0648\u0627\u0646\u06cc\u0646 \u06a9\u06cc \u0641\u0627\u0626\u0644\u0648\u06ba \u06a9\u06d2 \u0644\u06cc\u06d2 (CLAUDE.md\u060c AGENTS.md\u060c .cursorrules)\u06d4 https:\/\/docs.flutter.dev\/ai\/ai-rules<\/p>\n<p><strong>\u0627\u06cc\u062c\u0646\u0679 \u062a\u06a9\u0646\u06cc\u06a9\u06cc \u0648\u0636\u0627\u062d\u062a\u06cc\u06ba:<\/strong> \u0627\u06cc\u06a9 \u062a\u0635\u0631\u06cc\u062d \u0633\u0627\u0626\u0679 \u062c\u0648 \u0639\u0627\u0644\u0645\u06af\u06cc\u0631 SKILL.md \u0641\u0627\u0631\u0645\u06cc\u0679\u060c \u0688\u0627\u0626\u0631\u06a9\u0679\u0631\u06cc \u06a9\u06d2 \u0642\u0648\u0627\u0639\u062f\u060c \u0627\u0648\u0631 \u0627\u06cc\u062c\u0646\u0679 \u06a9\u06cc \u0645\u0637\u0627\u0628\u0642\u062a \u06a9\u06d2 \u062a\u0642\u0627\u0636\u0648\u06ba \u06a9\u06cc \u0648\u0636\u0627\u062d\u062a \u06a9\u0631\u062a\u06cc \u06c1\u06d2\u06d4 \u062a\u06a9\u0646\u06cc\u06a9\u06cc \u0645\u0639\u06cc\u0627\u0631\u0627\u062a \u067e\u0631 \u0645\u0639\u0644\u0648\u0645\u0627\u062a \u06a9\u0627 \u0630\u0631\u06cc\u0639\u06c1\u06d4 https:\/\/agentskills.io<\/p>\n<p><strong>\u0679\u06cc\u06a9 \u0688\u0627\u0631\u0679 \u067e\u06cc\u06a9\u06cc\u062c (pub.dev):<\/strong> \u067e\u0631\u0627\u062c\u06cc\u06a9\u0679 \u06a9\u06d2 \u0627\u0646\u062d\u0635\u0627\u0631 \u0633\u06d2 \u0627\u06cc\u062c\u0646\u0679 \u0679\u06cc\u06a9\u0646\u0627\u0644\u0648\u062c\u06cc\u0632 \u06a9\u0648 \u0627\u0646\u0633\u0679\u0627\u0644 \u06a9\u0631\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0688\u0627\u0631\u0679 CLI \u0679\u0648\u0644\u06d4 \u067e\u06cc\u06a9\u06cc\u062c \u06a9\u06d2 \u0645\u0635\u0646\u0641\u06cc\u0646 \u062e\u0648\u062f\u06a9\u0627\u0631 \u062a\u0646\u0635\u06cc\u0628 \u06a9\u0648 \u0641\u0639\u0627\u0644 \u06a9\u0631\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0627\u067e\u0646\u06d2 \u067e\u06cc\u06a9\u062c\u0632 \u0627\u0648\u0631 \u0679\u06cc\u0645\u0648\u06ba \u06a9\u06d2 \u0633\u0627\u062a\u06be \u0679\u06cc\u06a9\u0646\u0627\u0644\u0648\u062c\u06cc \u0641\u0631\u0627\u06c1\u0645 \u06a9\u0631\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4 https:\/\/pub.dev\/packages\/skills<\/p>\n<p><strong>\u062a\u06a9\u0646\u06cc\u06a9\u06cc CLI (npm):<\/strong> npm \u0627\u06cc\u06a9 GitHub \u0631\u06cc\u067e\u0648\u0632\u0679\u0631\u06cc \u0633\u06d2 \u0627\u06cc\u062c\u0646\u0679 \u0679\u06cc\u06a9\u0646\u0627\u0644\u0648\u062c\u06cc \u06a9\u0648 \u0627\u0646\u0633\u0679\u0627\u0644 \u06a9\u0631\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 CLI \u062a\u0639\u06cc\u0646\u0627\u062a \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4 \u0645\u0639\u06cc\u0627\u0631 \u0645\u06cc\u06ba \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u06cc\u0627 \u062c\u0627\u062a\u0627 \u06c1\u06d2 <code>npx skills add flutter\/agent-plugins<\/code> \u06a9\u0645\u0627\u0646\u0688 \u0627\u0646\u0633\u0679\u0627\u0644 \u06a9\u0631\u06cc\u06ba\u06d4 https:\/\/www.npmjs.com\/package\/skills<\/p>\n<p><strong>\u0679\u06cc\u06a9\u0646\u06cc\u06a9\u0644 \u0631\u062c\u0633\u0679\u0631\u06cc \u0633\u0631\u0648\u0631 \u067e\u0627\u0679:<\/strong> \u0645\u0642\u0628\u0648\u0644 \u0688\u0627\u0631\u0679 \u0627\u0648\u0631 \u0641\u0644\u0679\u0631 \u067e\u06cc\u06a9\u062c\u0632 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0627\u06cc\u062c\u0646\u0679 \u0679\u06cc\u06a9\u0646\u0627\u0644\u0648\u062c\u06cc\u0632 \u06a9\u0627 \u0645\u062c\u0645\u0648\u0639\u06c1 \u062c\u0648 \u0627\u0628\u06be\u06cc \u062a\u06a9 \u0627\u067e\u0646\u06cc \u0679\u06cc\u06a9\u0646\u0627\u0644\u0648\u062c\u06cc \u0641\u0631\u0627\u06c1\u0645 \u0646\u06c1\u06cc\u06ba \u06a9\u0631\u062a\u06d2 \u06c1\u06cc\u06ba\u060c \u0628\u0634\u0645\u0648\u0644 Riverpod\u060c flutter-shadcn-ui\u060c \u0627\u0648\u0631 \u062f\u06cc\u06af\u0631\u06d4 Serverpod \u0679\u06cc\u0645 \u06a9\u06cc \u0637\u0631\u0641 \u0633\u06d2 \u0628\u0631\u0642\u0631\u0627\u0631 \u0631\u06a9\u06be\u0627. https:\/\/github.com\/serverpod\/skills-registry<\/p>\n<p><strong>dhruvanbhalara\/Skills Premium Flutter \u062a\u06a9\u0646\u06cc\u06a9\u06cc \u062f\u0633\u062a\u0627\u0648\u06cc\u0632\u0627\u062a:<\/strong> \u06cc\u06c1 \u0627\u06cc\u06a9 \u0648\u0633\u06cc\u0639 \u062f\u0633\u062a\u0627\u0648\u06cc\u0632\u06cc \u067e\u0631\u0648\u062c\u06cc\u06a9\u0679 \u06c1\u06d2 \u062c\u0648 \u062f\u0633\u062a\u06cc\u0627\u0628 \u0641\u0644\u0679\u0631 \u0627\u06cc\u062c\u0646\u0679 \u0679\u06cc\u06a9\u0646\u0627\u0644\u0648\u062c\u06cc\u0632 \u06a9\u06cc \u0645\u06a9\u0645\u0644 \u0641\u06c1\u0631\u0633\u062a \u06a9\u0627 \u0627\u062d\u0627\u0637\u06c1 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u060c \u062c\u0633 \u0645\u06cc\u06ba \u06c1\u0631 \u0679\u06cc\u06a9\u0646\u0627\u0644\u0648\u062c\u06cc \u06a9\u0627 \u0627\u062d\u0627\u0637\u06c1 \u06a9\u06cc\u0627 \u062c\u0627\u062a\u0627 \u06c1\u06d2 \u0627\u0648\u0631 \u06a9\u06cc\u0627 \u0633\u06a9\u06be\u0627\u06cc\u0627 \u062c\u0627\u062a\u0627 \u06c1\u06d2 \u0627\u0633 \u06a9\u06cc \u062a\u0641\u0635\u06cc\u0644\u06cc \u0648\u0636\u0627\u062d\u062a \u06c1\u0648\u062a\u06cc \u06c1\u06d2\u06d4 https:\/\/github.com\/dhruvanbhalara\/skills<\/p>\n<\/p><\/div>\n","protected":false},"excerpt":{"rendered":"<p>AI \u06a9\u06cc \u0645\u062f\u062f \u0633\u06d2 \u062a\u0631\u0642\u06cc \u06a9\u06d2 \u0628\u0627\u0631\u06d2 \u0645\u06cc\u06ba \u0633\u0628 \u0633\u06d2 \u0628\u0691\u06cc \u063a\u0644\u0637 \u0641\u06c1\u0645\u06cc\u0648\u06ba \u0645\u06cc\u06ba \u0633\u06d2 \u0627\u06cc\u06a9 \u06cc\u06c1 \u06c1\u06d2 \u06a9\u06c1 AI \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u0646\u06d2 \u06a9\u0627 \u0645\u0637\u0644\u0628 \u06cc\u06c1 \u06c1\u06d2 \u06a9\u06c1 \u0627\u0646\u062c\u06cc\u0646\u0626\u0631\u0646\u06af \u06a9\u06d2 \u0633\u0627\u0644\u0648\u06ba \u06a9\u06d2 \u062a\u062c\u0631\u0628\u06d2 \u06a9\u0648 \u062a\u0631\u06a9 \u06a9\u0631 \u062f\u06cc\u0627 \u062c\u0627\u0626\u06d2\u06d4 \u06cc\u06c1 \u0633\u0686 \u0646\u06c1\u06cc\u06ba \u06c1\u06d2\u06d4 \u0622\u067e \u062c\u0648 \u0622\u0631\u06a9\u06cc\u0679\u06cc\u06a9\u0686\u0631\u0644 \u067e\u06cc\u0679\u0631\u0646 \u0622\u067e \u0646\u06d2 \u0633\u06cc\u06a9\u06be\u06d2 \u06c1\u06cc\u06ba\u060c \u0622\u067e \u0646\u06d2 \u062c\u0648 \u063a\u0644\u0637\u06cc\u0627\u06ba \u06a9\u06cc \u06c1\u06cc\u06ba\u060c [&hellip;]<\/p>\n","protected":false},"author":7,"featured_media":28869,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"categories":[1],"tags":[],"class_list":["post-28868","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-blog"],"_links":{"self":[{"href":"https:\/\/umang.pk\/en_us\/wp-json\/wp\/v2\/posts\/28868","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/umang.pk\/en_us\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/umang.pk\/en_us\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/umang.pk\/en_us\/wp-json\/wp\/v2\/users\/7"}],"replies":[{"embeddable":true,"href":"https:\/\/umang.pk\/en_us\/wp-json\/wp\/v2\/comments?post=28868"}],"version-history":[{"count":1,"href":"https:\/\/umang.pk\/en_us\/wp-json\/wp\/v2\/posts\/28868\/revisions"}],"predecessor-version":[{"id":28870,"href":"https:\/\/umang.pk\/en_us\/wp-json\/wp\/v2\/posts\/28868\/revisions\/28870"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/umang.pk\/en_us\/wp-json\/wp\/v2\/media\/28869"}],"wp:attachment":[{"href":"https:\/\/umang.pk\/en_us\/wp-json\/wp\/v2\/media?parent=28868"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/umang.pk\/en_us\/wp-json\/wp\/v2\/categories?post=28868"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/umang.pk\/en_us\/wp-json\/wp\/v2\/tags?post=28868"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}